/
nea
/
androidGroupBuilder
Обзор
Документация
Войти
/
nea
/
androidGroupBuilder
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
app/src/main/java/com/ea/groupbuilder/AdapterShowList.java
503 строки
31 KB
ea
Группа Автоморфизмов отлажено 23_04_2026
23 апр 2026, 17:08
23 апр 2026, 17:08
4513276
Код
Авторство
О чём код?
package com.ea.groupbuilder; import android.content.DialogInterface; import android.util.Log; import android.widget.ArrayAdapter; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import java.util.ArrayList; import java.util.List; public class AdapterShowList { // выдает список элементов для CanvasActivity, GrupActive и NormalSubgrActivity по меню public androidx.appcompat.app.AlertDialog.Builder builder; private final static String TAG = "GRUGRA_ADAPTER"; final static private boolean DISPLAYLOG = false; private mAplication mApp; public AppCompatActivity actyvity; private String titlos = "", sql = ""; public AdapterShowList(AppCompatActivity actyvity ) { mApp = (mAplication) actyvity.getApplication(); this.actyvity = actyvity; } public void f_selectCanvasMenu(PrimeActivity activity, DbHelper dbH, int cod) { // выбор для P подгрупп /* выбрать cod = 0 Выбрать общие силовы подгруппы по простому 1 Выбрать подгруппы уровня 2 Выбрать силовы подгруппы по простому 3 - Выбрать подгруппы содержащии кдасс 4 - выбрать норм подгр=пу */ mApp = (mAplication) actyvity.getApplication(); switch (cod) { case 0: titlos = "Выберите P для выделения общих силовских подгрупп"; sql = "select distinct pe || '' as stext from "+ activity.nTabG[activity.snFlag] + " order by stext;"; break; case 1: titlos = "Выберите уровень для выделения общих силовских подгрупп"; sql = "select distinct nomer2 || '' as stext from "+ activity.nTabG[activity.snFlag] + " order by stext;"; break; case 2: titlos = "Выберите P для выделения силовских подгрупп"; sql = "select distinct pe || '' as stext from "+ activity.nTabS[activity.snFlag] + " order by stext;"; break; case 3: titlos = "Выберите класс для выделения подгрупп с эти классом"; sql = "select distinct class_area || '' as stext \n" + " from "+ activity.nTabP[activity.snFlag] + " P\n" + " order by P.class_area\n;"; break; case 4: // выбрать норм подгр=пу titlos = "Выберите нормальную подгруппу для указания p-подгрупп в которых она лежит"; sql = "select distinct '' || num_maim as stext from sub_structure" + mApp.tableNameEnd + " order by num_maim asc;"; break; } int i = dbH.f_getMas(sql); if (i == 1) { activity.f_go(Integer.parseInt(DbHelper.selectedMas[0].trim()), cod); } else { new ArrayAdapter<>(activity, R.layout.db_item1, DbHelper.selectedMas); builder = new AlertDialog.Builder(activity); builder.setTitle(titlos) .setItems(DbHelper.selectedMas, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { int k = Integer.parseInt(DbHelper.selectedMas[which].trim()); if (cod == 3) { // Выберите класс для выделения подгрупп с эти классом // уровень си подгрупп int m, j, l = dbH.f_getMas("select DISTINCT S.num || '' as stext \n" + " from "+ activity.nTabS[activity.snFlag] + " S, "+ activity.nTabP[activity.snFlag] + " P\n" + " where P.id_subs = S.id_s and P.class_area = " + k + ";"); for (j = 0; j < l; j++) for (m = 0; m < activity.valDataRect.size(); m++) if (activity.valDataRect.get(m).numer2 == 0 && activity.valDataRect.get(m).numer1 == Integer.parseInt(DbHelper.selectedMas[j].trim())) activity.valDataRect.get(m).clickFlag = true; // classFlag = 1; // уровни общ подгрупп l = dbH.f_getMas("select DISTINCT S.nomer1 || '' as stext \n" + "\tfrom "+ activity.nTabG[activity.snFlag] + " S, "+ activity.nTabP[activity.snFlag] + " P\n" + "\twhere P.id_subs = S.id_s and P.class_area = " + k + ";"); for (j = 0; j < l; j++) for (m = 0; m < activity.valDataRect.size(); m++) if (activity.valDataRect.get(m).numer2 > 0 && activity.valDataRect.get(m).numer1 == Integer.parseInt(DbHelper.selectedMas[j].trim())) activity.valDataRect.get(m).clickFlag = true; // classFlag = 1; } activity.f_go(k, cod); } }) .setCancelable(true); builder.setNegativeButton("Отменить", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); builder.create(); builder.show(); } } public void f_selectCodForNorm(NormalSubgrActivity actTaEsche, DbHelper dbH) { // выбор класса, при выборе вызыват f_go titlos = "Для какого класс выбрать подгруппы?"; actyvity = actTaEsche; sql = "select distinct class_area || '' as stext from pairing_area" + mApp.tableNameEnd + " order by stext;"; int i = dbH.f_getMas(sql); titlos += ", всего " + i + " строк"; new ArrayAdapter<>(actTaEsche, R.layout.db_item1, DbHelper.selectedMas); builder = new AlertDialog.Builder(actTaEsche); builder.setTitle(titlos) .setItems(DbHelper.selectedMas, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { actTaEsche.f_go( Integer.parseInt(DbHelper.selectedMas[which].trim())); } }) .setCancelable(true); builder.setNegativeButton("Отменить", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); builder.create(); builder.show(); } public void f_selectCodForGrup(GrupActivity actTaEsche, DbHelper dbH, int what, boolean flagSn) { /* выбор класса,.... при выборе вызыват f_go в зависимости от what: 2 - Отобразить один класс 4 - Отобразить все классы силовских подгрупп 8 - Отобразить классы ядра 10 - выбор элемента */ int i = 0, j, mm, k; if (what == 2) { titlos = "Какой класс отобразить?"; if (actTaEsche.flagSn) sql = "select distinct class_area || '' as stext from pairing_area_n order by stext;"; else sql = "select distinct class_area || '' as stext from pairing_area" + mApp.tableNameEnd + " order by stext;"; actyvity = actTaEsche; i = dbH.f_getMas(sql); // DbHelper.selectedMas - заполнен } if (what == 10) { titlos = "Какой элемент группы указать?"; if (actTaEsche.flagSn) sql = "select distinct id_subs || '' as stext from pairing_area_n order by stext;"; else sql = "select distinct id_subs || '' as stext from pairing_area" + mApp.tableNameEnd + " order by stext;"; actyvity = actTaEsche; i = dbH.f_getMas(sql); // DbHelper.selectedMas - заполнен } if (what == 4) { titlos = "Выберите P для отображения классов силовских подгрупп?"; // substitutionS.sylovOrderPe. mm = ( flagSn ? substitutionS.sylovOrderPe_n.size() : substitutionS.sylovOrderPe.size()); if (mm == 1) { actTaEsche.f_goClass(substitutionS.sylovOrderPe.get(0), what); return; } else { j = k = 0; int tmpMas[] = new int[mm]; for (i=0; i<mm; i++) { if (j != ( flagSn ? substitutionS.sylovOrderPe_n.get(i) : substitutionS.sylovOrderPe.get(i))) { // pe повторяются tmpMas[k] = ( flagSn ? substitutionS.sylovOrderPe_n.get(i) : substitutionS.sylovOrderPe.get(i)); j = ( flagSn ? substitutionS.sylovOrderPe_n.get(i) : substitutionS.sylovOrderPe.get(i)); k++; } } DbHelper.selectedMas = new String[k]; for (i = 0; i < k; i++) DbHelper.selectedMas[i] = "" + tmpMas[i]; i = k; } } if (what == 8) { titlos = "Выберите P для отображения классов ядра действия на силовских подгруппах?"; // substitutionS.epiPe. mm = flagSn ? substitutionS.epiPe_n.size() : substitutionS.epiPe.size(); if (mm == 1) { actTaEsche.f_goClass(flagSn ? substitutionS.epiPe_n.get(0) : substitutionS.epiPe.get(0), what); return; } else { DbHelper.selectedMas = new String[mm]; for (i=0; i<mm; i++) DbHelper.selectedMas[i] = "" + (flagSn ? substitutionS.epiPe_n.get(i) : substitutionS.epiPe.get(i)); i = mm; } } titlos += ", всего " + i + " строк"; new ArrayAdapter<>(actTaEsche, R.layout.db_item1, DbHelper.selectedMas); builder = new AlertDialog.Builder(actTaEsche); builder.setTitle(titlos) .setItems(DbHelper.selectedMas, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { actTaEsche.f_goClass( Integer.parseInt(DbHelper.selectedMas[which].trim()), what); } }) .setCancelable(true); builder.setNegativeButton("Отменить", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); builder.create(); builder.show(); } public void f_setCanvas(PrimeActivity actTaEsche, DbHelper dbH, List<PrimeActivity.dataRect> dataRectList, int cod) { // настройка на canvas НЕ ЗАВИСИМО Sn или нет вывести данные самой подгруппы /* cod = 0 - вывести содержимое подгруппы 1 - Цикловые индексы подгруппы 2 - Общие цикловые индексы подгрупп 3 - Общие элементы подгрупп */ String wwNumCom = "", wwNumSyl = "", wwTab = "", wwNum = "", wwIds = "", whereNum = "", where2 = "", fromTable = "", err = ""; PrimeActivity.dataRect wRect = null; int i, kk = 0; titlos = sql = ""; if (cod == 3 || cod == 2) { if (cod == 2) titlos = "Общие цикловые типы для: "; else titlos = "Общие элемениты для: "; for (i = 0; i < dataRectList.size(); i++) { wRect = dataRectList.get(i); if (wRect.clickFlag) { switch (wRect.numer2) { case -1: err = "Элементы, не лежащие в силовских подгруппах с элементами порядка степени P не пересекаются!"; break; case 0: // выделена сил подгруппа fromTable = actTaEsche.nTabS[actTaEsche.snFlag]; whereNum = "num"; if (wwNumSyl.length() > 0) wwNumSyl += ", " + wRect.numer1; else wwNumSyl = "" + wRect.numer1; break; default: // выделена общая сил подгруппа fromTable = actTaEsche.nTabG[actTaEsche.snFlag]; whereNum = "nomer1"; where2 = "nomer2"; if (wwNumCom.length() > 0) wwNumCom += ", " + wRect.numer2 + "-" + wRect.numer1; else wwNumCom = "" + wRect.numer2 + "-" + wRect.numer1; break; } if (kk > 0) wwIds += " and E0.id_s = E" + kk + ".id_s "; wwNum += " and E" + kk + "." + whereNum + " = " + wRect.numer1; if (where2.length() > 0) wwNum += " and E" + kk + ".nomer2 = " + wRect.numer2; where2 = ""; if (wwTab.length() > 0) wwTab += ", "; wwTab += fromTable + " E" + kk; kk++; } } if (cod == 3) { sql = "select stext from (\n" + " select 'Id= ' || M." + actTaEsche.nTabId[actTaEsche.snFlag] + " || ' ' || M.substitution || ' ' || M.ciklos as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M, " + wwTab + "\n" + " where M." + actTaEsche.nTabId[actTaEsche.snFlag] + " = E0.id_s and M.nomer_soc isnull " + wwNum + "\n" + wwIds + "\n" + "\t union ALL\n" + " select 'Id= ' || M." + actTaEsche.nTabId[actTaEsche.snFlag] + " || ' ' || M.substitution || ' ' || M.ciklos || ' socol' as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M, " + wwTab + "\n" + " where M." + actTaEsche.nTabId[actTaEsche.snFlag] + " = E0.id_s and not M.nomer_soc isnull " + wwNum + "\n" + wwIds + "\n" + " ) order by stext asc;"; } else { sql = " select distinct stext from (\n" + // выбирать надо не ТАК!!!! ???? " select '0' as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M, " + wwTab + "\n" + " where M." + actTaEsche.nTabId[actTaEsche.snFlag] + " = E0.id_s " + wwNum + "\n" + wwIds + " and length(M.cykl_len) < 1\n" + " union all \n" + " select distinct M.cykl_len as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M, " + wwTab + "\n" + " where M." + actTaEsche.nTabId[actTaEsche.snFlag] + " = E0.id_s " + wwNum + "\n" + wwIds + " and length(M.cykl_len) > 0\n" + " ) order by stext asc;"; } if (wwNumSyl.length() > 0) { titlos += "силова № " + wwNumSyl; if (wwNumCom.length() > 0) titlos += " и "; } if (wwNumCom.length() > 0) titlos += "№ " + wwNumCom; if (DISPLAYLOG) Log.e(TAG, "AdapterShow title = " + titlos + " SelText = " + sql); } else { // cod == 0 || cod == 1 for (i = 0; i < dataRectList.size(); i++) { wRect = dataRectList.get(i); if (wRect.clickFlag) { switch (wRect.numer2) { case -1: titlos = "Элементы, не входящие в силовские подгруппы"; if (cod == 0) { // 0 - вывести содержимое подгруппы sql = "select stext from (" + "select 'Id= ' || M." + actTaEsche.nTabId[actTaEsche.snFlag] + " || ' ' || M.substitution || ' ' || M.ciklos as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M \n" + " where M.sylow_num isnull and M.nomer_soc isnull \n" + " union all " + "select 'Id= ' || M." + actTaEsche.nTabId[actTaEsche.snFlag] + " || ' ' || M.substitution || ' ' || M.ciklos || ' socol' as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M \n" + " where M.sylow_num isnull and not M.nomer_soc isnull \n" + ") order by stext asc;"; } else { sql = "select distinct stext from (\n" + "select distinct M.cykl_len as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M \n" + " where M.sylow_num isnull and length(M.cykl_len) < 1\n " + " union all \n" + "select distinct M.cykl_len as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M \n" + " where M.sylow_num isnull and length(M.cykl_len) > 0 \n " + ") order by stext asc;"; } break; case 0: titlos = "Силовская подгруппа № " + wRect.numer1 + " P = " + wRect.pe; if (cod == 0) { sql = "select stext from (" + "select 'Id= ' || M." + actTaEsche.nTabId[actTaEsche.snFlag] + " || ' ' || M.substitution || ' ' || M.ciklos as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M, " + actTaEsche.nTabS[actTaEsche.snFlag] +" S\n" + " where S.id_s = M." + actTaEsche.nTabId[actTaEsche.snFlag] + " and M.nomer_soc isnull and S.num = " + wRect.numer1 + "\n" + " union all " + "select 'Id= ' || M." + actTaEsche.nTabId[actTaEsche.snFlag] + " || ' ' || M.substitution || ' ' || M.ciklos || 'socol' as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M, " + actTaEsche.nTabS[actTaEsche.snFlag] +" S\n" + " where S.id_s = M." + actTaEsche.nTabId[actTaEsche.snFlag] + " and not M.nomer_soc isnull and S.num = " + wRect.numer1 + "\n" + ") order by stext asc;"; } else { sql = "select distinct stext from (\n" + "select '0' as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M, " + actTaEsche.nTabS[actTaEsche.snFlag] +" S\n" + " where S.id_s = M." + actTaEsche.nTabId[actTaEsche.snFlag] + " and S.num = " + wRect.numer1 + " and length(M.cykl_len) < 1\n" + " union all \n" + "select M.cykl_len as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M, " + actTaEsche.nTabS[actTaEsche.snFlag] +" S\n" + " where S.id_s = M." + actTaEsche.nTabId[actTaEsche.snFlag] + " and S.num = " + wRect.numer1 + " and length(M.cykl_len) > 0\n" + ") order by stext asc;"; } break; default: // ?????? link_to_elements -> id_true titlos = "Подгруппа № " + wRect.numer1 + " P = " + wRect.pe + " уровень вложенности " + wRect.numer2; if (cod == 0) { sql = "select stext from (" + "select 'Id= ' || M." + actTaEsche.nTabId[actTaEsche.snFlag] + " || ' ' || M.substitution || ' ' || M.ciklos as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M, " + actTaEsche.nTabG[actTaEsche.snFlag] +" S\n" + " where S.id_s = M." + actTaEsche.nTabId[actTaEsche.snFlag] + " and M.nomer_soc isnull and S.nomer1 = " + wRect.numer1 + " and S.nomer2 = " + wRect.numer2 + "\n" + " union all " + "select 'Id= ' || M." + actTaEsche.nTabId[actTaEsche.snFlag] + " || ' ' || M.substitution || ' ' || M.ciklos || 'socol' as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M, " + actTaEsche.nTabG[actTaEsche.snFlag] +" S\n" + " where S.id_s = M." + actTaEsche.nTabId[actTaEsche.snFlag] + " and not M.nomer_soc isnull and S.nomer1 = " + wRect.numer1 + " and S.nomer2 = " + wRect.numer2 + "\n" + ") order by stext;"; } else { sql = "select distinct stext from (\n" + "select '0' as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M, " + actTaEsche.nTabG[actTaEsche.snFlag] +" S\n" + " where S.id_s = M." + actTaEsche.nTabId[actTaEsche.snFlag] + " and S.nomer1 = " + wRect.numer1 + " and S.nomer2 = " + wRect.numer2 + " and length(M.cykl_len) < 1\n" + " union all \n" + "select distinct M.cykl_len as stext\n" + " from " + actTaEsche.nTabE[actTaEsche.snFlag] +" M, " + actTaEsche.nTabG[actTaEsche.snFlag] +" S\n" + " where S.id_s = M." + actTaEsche.nTabId[actTaEsche.snFlag] + " and S.nomer1 = " + wRect.numer1 + " and S.nomer2 = " + wRect.numer2 + " and length(M.cykl_len) > 0\n" + ") order by stext;"; } break; } } } } if (DISPLAYLOG) Log.e(TAG, "f_cod0 cod="+ cod + " "+ titlos + " sql=" + sql); if (err.length() > 0) DbHelper.selectedMas = new String[]{err}; else { i = dbH.f_getMas(sql); titlos += ", всего " + i + " элементов"; } } public void f_setNormal(NormalSubgrActivity actTaEsche, DbHelper dbH, List<NormalSubgrActivity.dataItem> faktData, int codWork) { /* codWork = 0 - f_popList() - Элементы подгруппы = 1 - Классы подгруппы = 2 - Общие классы подгрупп = 3 - Общие элементы подгрупп */ actyvity = actTaEsche; titlos = sql = ""; String sss = "", num_M = "", from = "", where = "", where2 = ""; int i, num_0 = 0, num_1 = 0; List<Integer> nLst = new ArrayList<>(); // список номеров выбранных подгрупп for(i=0; i<faktData.size(); i++) if(faktData.get(i).clickFlag) { num_1 = faktData.get(i).numKlass; nLst.add(num_1); if (sss.length() > 2) { sss += " and "; from += ", "; } else num_0 = num_1; sss += "S"+ num_1 + ".num_maim = " + num_1; where += " and S"+ num_1 + ".num_subs = P.class_area"; if (num_1 != num_0) where2 += " and S"+ num_1 + ".num_subs = S"+ num_0 + ".num_subs" ; from += "sub_structure" + mApp.tableNameEnd + " S" + num_1; num_M += " " + num_1; if (DISPLAYLOG) Log.e(TAG, "AdapterShow i = " + i + " num_0= " + num_0 + " num_1= " + num_1 + " from= " + from + " where2= "+ where2+ " where= "+ where); } switch (codWork) { case 0: // - Элементы подгруппы case 3: // - Общие элементы подгрупп /* select 'Id= ' || M._id || ' ' || M.substitution || ' ' || M.ciklos as stext from elements M, pairing_area P, sub_structure" + mApp.tableNameEnd + " S1, sub_structure" + mApp.tableNameEnd + " S2 where M._id = P.id_subs and S1.num_subs = P.class_area and S2.num_subs = P.class_area and (S1.num_maim = 4 and S2.num_maim = 9) order by stext asc; */ sql = "select stext from (\n" + " select 'Id= ' || M._id || ' ' || M.substitution || ' ' || M.ciklos as stext\n" + " from elements M, pairing_area" + mApp.tableNameEnd + " P, "+ from + "\n" + " where M._id = P.id_subs and M.nomer_soc isnull "+ where + " and \n(" + sss + ")\n" + "\t union ALL \n" + " select 'Id= ' || M._id || ' ' || M.substitution || ' ' || M.ciklos || ' socol' as stext\n" + " from elements M, pairing_area" + mApp.tableNameEnd + " P, "+ from + "\n" + " where M._id = P.id_subs and not M.nomer_soc isnull "+ where + " and \n(" + sss + ")\n" + ") order by stext asc;"; if (codWork == 0) titlos = "Элементы подгруппы № " + num_1; else titlos = "Общие элементы подгрупп №№ " + num_M; break; case 1: // - Классы подгруппы case 2: // - Общие классы подгрупп /* select ' Класс=' || S1.num_subs as stext from sub_structure" + mApp.tableNameEnd + "S1, sub_structure" + mApp.tableNameEnd + " S2 where S1.num_maim = 5 and S2.num_maim = 6 and S1.num_subs = S2.num_subs order by stext asc; */ sql = " select '' || S"+ num_0 + ".num_subs as stext\n" + " from " + from + "\n" + " where " + sss + where2 + "\n" + " order by stext asc;"; if (codWork == 1) titlos = "Классы подгруппы № " + num_1; else titlos = "Общие классы подгрупп №№ " + num_M; break; } if (DISPLAYLOG) Log.e(TAG, " = " + titlos + " sql = " + sql); i = dbH.f_getMas(sql); titlos += ", всего " + i + " строк"; } public void f_showList() { new ArrayAdapter<>(actyvity, R.layout.db_item1, DbHelper.selectedMas); builder = new androidx.appcompat.app.AlertDialog.Builder(actyvity); builder.setTitle(titlos) .setItems(DbHelper.selectedMas, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } // if (whoClass > 0) { // } }) .setCancelable(true); builder.setNegativeButton("Отменить", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); builder.create(); builder.show(); } } //===============================================