diff --git a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/ToolboxTableView.java b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/ToolboxTableView.java index 1e87cf5d7d..59ed345954 100644 --- a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/ToolboxTableView.java +++ b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/ToolboxTableView.java @@ -111,6 +111,7 @@ import org.eclipse.set.utils.exception.ExceptionHandler; import org.eclipse.set.utils.table.BodyLayerStack; import org.eclipse.set.utils.table.Pt1TableChangeProperties; +import org.eclipse.set.utils.table.TableInfo; import org.eclipse.set.utils.table.TableInfo.Pt1TableCategory; import org.eclipse.set.utils.table.TableModelInstanceBodyDataProvider; import org.eclipse.set.utils.table.menu.TableMenuService; @@ -201,6 +202,8 @@ public final class ToolboxTableView extends BasePart { private EventHandler secondaryPlanningLoadedHanlder; + private TableInfo tableInfo; + /** * constructor */ @@ -228,11 +231,11 @@ private Path getAttachmentPath(final String guid) { } } - private Titlebox getTitlebox(final String shortcut) { + private Titlebox getTitlebox() { final PlanProToTitleboxTransformation planProToTitlebox = new PlanProToTitleboxTransformation( getSessionService()); return planProToTitlebox.transform( - tableService.getTableNameInfo(shortcut), + tableService.getTableNameInfo(tableInfo), this::getAttachmentPath); } @@ -280,7 +283,7 @@ public void accept(final TableDataChangeEvent t) { }; ToolboxEvents.subscribe(getBroker(), TableDataChangeEvent.class, tableDataChangeHandler, - TableDataChangeEvent.getTopic(getTableShortcut()) + TableDataChangeEvent.getTopic(tableInfo.shortcut()) .toLowerCase()); selectionControlAreaHandler = new DefaultToolboxEventHandler<>() { @@ -326,11 +329,7 @@ private void preDestroy() { ToolboxEvents.unsubscribe(getBroker(), tableDataChangeHandler); ToolboxEvents.unsubscribe(getBroker(), selectionControlAreaHandler); getBroker().unsubscribe(secondaryPlanningLoadedHanlder); - getBroker().send(Events.CLOSE_PART, getTableShortcut().toLowerCase()); - } - - private String getTableShortcut() { - return tableService.extractShortcut(getToolboxPart().getElementId()); + getBroker().send(Events.CLOSE_PART, tableInfo.shortcut()); } private void tableSelectRowHandler(final JumpToTableEvent event) { @@ -357,8 +356,8 @@ private void tableSelectRowHandler(final JumpToTableEvent event) { * * @return the table view model */ - private Table transformToTableModel(final String elementId) { - return tableService.createDiffTable(elementId, tableType, + private Table transformToTableModel() { + return tableService.createDiffTable(tableInfo, tableType, controlAreaIds); } @@ -407,7 +406,7 @@ private void updateFootnotes() { @Override protected void createView(final Composite parent) { - + tableInfo = tableService.getTableInfo(this); // initialize table type tableType = getModelSession().getTableType(); controlAreaIds = getModelSession().getSelectedControlAreas() @@ -455,8 +454,7 @@ protected void createView(final Composite parent) { bodyLayerStack = new BodyLayerStack(bodyDataLayer); - bodyLayerStack.freezeColumns( - tableService.getFixedColumns(getToolboxPart().getElementId())); + bodyLayerStack.freezeColumns(tableService.getFixedColumns(tableInfo)); final SelectionLayer selectionLayer = bodyLayerStack .getSelectionLayer(); @@ -756,18 +754,17 @@ protected void updateViewContainerDataChanged( } void export() { - final String shortcut = getTableShortcut(); final List transformatorThreads = ThreadUtils.getAllThreads() .stream() .filter(t -> t != null - && t.getName().startsWith(shortcut.toLowerCase()) + && t.getName().startsWith(tableInfo.shortcut()) && t.isAlive()) .toList(); if (!transformatorThreads.isEmpty() && !getDialogService() .confirmExportNotCompleteTable(getToolboxShell())) { return; } - final Map tables = compileService.compile(shortcut, + final Map tables = compileService.compile(tableInfo, getModelSession(), controlAreaIds); final Optional optionalOutputDir = getDialogService() .selectDirectory(getToolboxShell(), @@ -778,10 +775,9 @@ void export() { monitor.beginTask(messages.ToolboxTableView_ExportTable, IProgressMonitor.UNKNOWN); exportService.exportPdf(tables, - ExportType.PLANNING_RECORDS, - getTitlebox(shortcut), getFreeFieldInfo(), - shortcut, outputDir, - getModelSession().getToolboxPaths(), + ExportType.PLANNING_RECORDS, getTitlebox(), + getFreeFieldInfo(), tableInfo.shortcut(), + outputDir, getModelSession().getToolboxPaths(), getModelSession().getTableType(), OverwriteHandling .forUserConfirmation(path -> Boolean @@ -811,7 +807,7 @@ void updateModel(final MPart part) { // update banderole getBanderole().setTableType(tableType); - table = transformToTableModel(part.getElementId()); + table = transformToTableModel(); // flag creation MApplicationElementExtensions.setViewState(part, ToolboxViewState.CREATED); @@ -892,7 +888,7 @@ private String getRowReferenceObjectGuid(final int rowPosition) { */ private void subcribeTriggerResortEvent() { final Comparator comparator = tableService - .getRowGroupComparator(getTableShortcut()); + .getRowGroupComparator(tableInfo); if (comparator instanceof final TableRowGroupComparator rowGroupComparator) { // This is new instance of Comparator, therefore need call sort here // to determine the waiting on another service criterion @@ -919,8 +915,7 @@ private void subcribeTriggerResortEvent() { .size() && triggeredEvents .containsAll(triggerComparisonEvent)) { - tableService.sortTable(table, tableType, - getTableShortcut()); + tableService.sortTable(table, tableType, tableInfo); tableInstances.clear(); tableInstances.addAll( TableExtensions.getTableRows(table)); diff --git a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/compile/TableCompileServiceImpl.java b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/compile/TableCompileServiceImpl.java index 9951832015..eac1adf5e3 100644 --- a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/compile/TableCompileServiceImpl.java +++ b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/compile/TableCompileServiceImpl.java @@ -19,6 +19,7 @@ import org.eclipse.set.ppmodel.extensions.PlanProSchnittstelleExtensions; import org.eclipse.set.services.export.TableCompileService; import org.eclipse.set.services.table.TableService; +import org.eclipse.set.utils.table.TableInfo; import jakarta.inject.Inject; @@ -33,7 +34,7 @@ public class TableCompileServiceImpl implements TableCompileService { TableService tableService; @Override - public Map compile(final String shortcut, + public Map compile(final TableInfo tableInfo, final IModelSession modelSession, final Set controlAreaIds) { final Map result = new EnumMap<>(TableType.class); @@ -43,11 +44,11 @@ public Map compile(final String shortcut, .filter(type -> type != TableType.SINGLE) .forEach(type -> { final Table table = tableService.createDiffTable( - shortcut, type, controlAreaIds); + tableInfo, type, controlAreaIds); result.put(type, table); }); } else { - final Table single = tableService.createDiffTable(shortcut, + final Table single = tableService.createDiffTable(tableInfo, TableType.SINGLE, controlAreaIds); result.put(TableType.SINGLE, single); } diff --git a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/export/PlanProExportPart.java b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/export/PlanProExportPart.java index 15d7b7d0ee..039ec655e1 100644 --- a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/export/PlanProExportPart.java +++ b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/export/PlanProExportPart.java @@ -188,7 +188,7 @@ protected CheckboxTreeModel createTreeModelData() { availableTables.forEach(tableInfo -> { final TableNameInfo nameInfo = tableService - .getTableNameInfo(tableInfo.shortcut()); + .getTableNameInfo(tableInfo); CheckBoxTreeElement parentElement = elements.stream() .filter(ele -> ele.getId() .equals(tableInfo.category().getId())) @@ -250,9 +250,16 @@ protected void export(final CheckboxModelElement element, additionalExportService.createAdditionalExport(id, modelSession, monitor, getSelectedDirectory(), getExportType(), overwriteHandling); - } else { - final Map tables = compileService.compile(id, - modelSession, + } else if (element instanceof final CheckBoxTreeElement treeElement + && getTreeDataModel() instanceof TableCheckboxTreeModel) { + final TableInfo tableInfo = ((TableCheckboxTreeModel) getTreeDataModel()) + .getTableInfo(treeElement) + .orElse(null); + if (tableInfo == null) { + return; + } + final Map tables = compileService.compile( + tableInfo, modelSession, modelSession.getSelectedControlAreas() .stream() .map(Pair::getSecond) @@ -260,7 +267,8 @@ monitor, getSelectedDirectory(), getExportType(), final PlanProToTitleboxTransformation planProToTitlebox = new PlanProToTitleboxTransformation( getSessionService()); final Titlebox titlebox = planProToTitlebox.transform( - tableService.getTableNameInfo(id), this::getAttachmentPath); + tableService.getTableNameInfo(tableInfo), + this::getAttachmentPath); updateTitlebox(titlebox); final PlanProToFreeFieldTransformation planProToFreeField = PlanProToFreeFieldTransformation .create(); diff --git a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/export/TableCheckboxTreeModel.java b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/export/TableCheckboxTreeModel.java index a720b49cb4..74210199bd 100644 --- a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/export/TableCheckboxTreeModel.java +++ b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/export/TableCheckboxTreeModel.java @@ -11,7 +11,9 @@ package org.eclipse.set.feature.table.export; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Optional; import org.eclipse.set.basis.export.CheckBoxTreeElement; @@ -29,6 +31,8 @@ public class TableCheckboxTreeModel extends CheckboxTreeModel { TableService tableService; + Map tableInfoTreeElementMap; + /** * Constructor * @@ -41,6 +45,7 @@ public TableCheckboxTreeModel(final List elements, final TableService tableService) { super(elements); this.tableService = tableService; + this.tableInfoTreeElementMap = new HashMap<>(); } /** @@ -61,11 +66,11 @@ public CheckBoxTreeElement addElement(final TableInfo info) { category.toString()); addElement(parent); } - final TableNameInfo nameInfo = tableService - .getTableNameInfo(info.shortcut()); + final TableNameInfo nameInfo = tableService.getTableNameInfo(info); final CheckBoxTreeElement newElement = new CheckBoxTreeElement( nameInfo.getShortName().toLowerCase(), nameInfo.getFullDisplayName()); + tableInfoTreeElementMap.put(info, newElement); addElement(parent, newElement); return newElement; } @@ -78,9 +83,25 @@ public CheckBoxTreeElement addElement(final TableInfo info) { * @return the optional of the table element */ public Optional getElement(final TableInfo info) { - final TableNameInfo tableNameInfo = tableService - .getTableNameInfo(info.shortcut()); - return getElement(info.category().getId(), - tableNameInfo.getShortName().toLowerCase()); + final Optional ele = getElement( + info.category().getId(), info.shortcut()); + if (ele.isPresent()) { + tableInfoTreeElementMap.putIfAbsent(info, ele.get()); + } + return ele; + } + + /** + * @param treeElement + * the tree element + * @return the {@link TableInfo} of this tree element + */ + public Optional getTableInfo( + final CheckBoxTreeElement treeElement) { + return tableInfoTreeElementMap.entrySet() + .stream() + .filter(ele -> ele.getValue().equals(treeElement)) + .map(Map.Entry::getKey) + .findFirst(); } } diff --git a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/internal/TableServiceImpl.java b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/internal/TableServiceImpl.java index f0f855213f..b0ca744381 100644 --- a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/internal/TableServiceImpl.java +++ b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/internal/TableServiceImpl.java @@ -20,7 +20,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Objects; import java.util.Queue; import java.util.Set; @@ -177,13 +176,13 @@ void removeDiffService(final TableCompareType compareType) { } } - private Table createDiffTable(final String elementId, + private Table createDiffTable(final TableInfo tableInfo, final IModelSession modelSession, final String controlAreaId) { - final Table startTable = transformToTable(elementId, TableType.INITIAL, + final Table startTable = transformToTable(tableInfo, TableType.INITIAL, modelSession, controlAreaId == null ? Collections.emptySet() : Set.of(controlAreaId)); - final Table zielTable = transformToTable(elementId, TableType.FINAL, + final Table zielTable = transformToTable(tableInfo, TableType.FINAL, modelSession, controlAreaId == null ? Collections.emptySet() : Set.of(controlAreaId)); if (zielTable == null || startTable == null) { @@ -219,26 +218,35 @@ private String getContainerCacheId(final IModelSession modelSession, .getContainer(tableType.getContainerForTable())); } - private PlanPro2TableTransformationService getModelService( - final String elementId) { - final Entry result = modelServiceMap - .entrySet() - .stream() - .filter(modelService -> modelService.getKey() - .shortcut() - .equalsIgnoreCase(extractShortcut(elementId))) + @Override + public TableInfo getTableInfo(final BasePart part) { + final String shortcut = extractShortcut( + part.getToolboxPart().getElementId()); + return getTableInfo(shortcut); + } + + @Override + public TableInfo getTableInfo(final String shortcut) { + return getAvailableTables().stream() + .filter(table -> table.shortcut().equalsIgnoreCase(shortcut)) .findFirst() .orElse(null); - if (result == null) { + } + + private PlanPro2TableTransformationService getModelService( + final TableInfo tableInfo) { + final PlanPro2TableTransformationService transformService = modelServiceMap + .get(tableInfo); + if (transformService == null) { throw new IllegalArgumentException( - "no model service for " + elementId + " found!"); //$NON-NLS-1$ //$NON-NLS-2$ + "no model service for " + tableInfo.shortcut() + " found!"); //$NON-NLS-1$ //$NON-NLS-2$ } - return result.getValue(); + return transformService; } @Override - public TableNameInfo getTableNameInfo(final String shortcut) { - return getModelService(shortcut).getTableNameInfo(); + public TableNameInfo getTableNameInfo(final TableInfo tableInfo) { + return getModelService(tableInfo).getTableNameInfo(); } @Override @@ -247,16 +255,16 @@ public Collection getAvailableTables() { } @Override - public Set getFixedColumns(final String elementID) { - return getModelService(extractShortcut(elementID)).getFixedColumnsPos(); + public Set getFixedColumns(final TableInfo tableInfo) { + return getModelService(tableInfo).getFixedColumnsPos(); } @Override @SuppressWarnings("unchecked") - public Map> getTableErrors( + public Map> getTableErrors( final IModelSession modelSession, final Set controlAreaIds, final Pt1TableCategory tableCategory) { - final HashMap> map = new HashMap<>(); + final HashMap> map = new HashMap<>(); final String tableErrorsCacheGroup = switch (modelSession .getTableType()) { case FINAL -> ToolboxConstants.CacheId.TABLE_ERRORS_FINAL; @@ -275,9 +283,9 @@ public Map> getTableErrors( .getIfPresent(cacheKey.getValue())) .filter(Objects::nonNull) .toList(); - if (!tableErrors.isEmpty() || !TableService - .isTransformComplete(tableInfo.shortcut(), null)) { - map.put(tableInfo.shortcut(), + if (!tableErrors.isEmpty() + || !TableService.isTransformComplete(tableInfo, null)) { + map.put(tableInfo, tableErrors.stream() .flatMap(List::stream) .toList()); @@ -312,10 +320,10 @@ private void combineTableErrors(final IModelSession modelSession, broker.post(Events.TABLEERROR_CHANGED, null); } - private void saveTableError(final String shortCut, + private void saveTableError(final TableInfo tableInfo, final IModelSession modelSession, final TableType tableType, final Collection errors, final String cacheKey) { - final String shortName = getTableNameInfo(shortCut).getShortName(); + final String shortName = getTableNameInfo(tableInfo).getShortName(); errors.forEach(error -> { error.setSource(shortName); error.setTableType(tableType); @@ -347,15 +355,14 @@ private void saveTableError(final String shortCut, combineTableErrors(modelSession, cacheKey); } - private Object loadTransform(final String elementId, + private Object loadTransform(final TableInfo tableInfo, final TableType tableType, final IModelSession modelSession, final String controlAreaId) { - final String shortCut = extractShortcut(elementId); final PlanPro2TableTransformationService modelService = getModelService( - shortCut); + tableInfo); Table transformedTable = null; if (tableType == TableType.DIFF) { - transformedTable = createDiffTable(elementId, modelSession, + transformedTable = createDiffTable(tableInfo, modelSession, controlAreaId); modelService.format(transformedTable); } else { @@ -380,7 +387,7 @@ private Object loadTransform(final String elementId, } // sorting - sortTable(transformedTable, tableType, shortCut); + sortTable(transformedTable, tableType, tableInfo); return transformedTable; } @@ -408,10 +415,10 @@ public void removeModelService(final Map properties) } @Override - public String transformToCsv(final String elementId, + public String transformToCsv(final TableInfo tableInfo, final TableType tableType, final IModelSession modelSession, final Set controlAreas) { - final Table table = transformToTable(elementId, tableType, modelSession, + final Table table = transformToTable(tableInfo, tableType, modelSession, controlAreas); return transformToCsv(table); } @@ -474,10 +481,9 @@ private List> getCacheKeys(final String shortCut, } @Override - public Table transformToTable(final String elementId, + public Table transformToTable(final TableInfo tableInfo, final TableType tableType, final IModelSession modelSession, final Set controlAreaIds) { - final String shortCut = extractShortcut(elementId); final String containerId = getContainerCacheId(modelSession, tableType); final Cache cache = getCacheService().getCache( modelSession.getPlanProSchnittstelle(), @@ -485,17 +491,17 @@ public Table transformToTable(final String elementId, Table resultTable = null; - final List> cacheKeys = getCacheKeys(shortCut, - modelSession, controlAreaIds); + final List> cacheKeys = getCacheKeys( + tableInfo.shortcut(), modelSession, controlAreaIds); for (final Pair cacheKey : cacheKeys) { final String areaId = cacheKey.getKey(); final String areaCacheKey = cacheKey.getValue(); Table table = (Table) cache.getIfPresent(areaCacheKey); if (table == null) { - table = (Table) loadTransform(shortCut, tableType, modelSession, - areaId); - saveTableToCache(table, modelSession, containerId, shortCut, + table = (Table) loadTransform(tableInfo, tableType, + modelSession, areaId); + saveTableToCache(table, modelSession, containerId, tableInfo, tableType, areaCacheKey); } if (resultTable == null) { @@ -510,7 +516,7 @@ public Table transformToTable(final String elementId, // sorting if (resultTable != null && resultTable.getTablecontent() != null) { - sortTable(resultTable, tableType, shortCut); + sortTable(resultTable, tableType, tableInfo); } return resultTable; @@ -518,12 +524,12 @@ public Table transformToTable(final String elementId, private void saveTableToCache(final Table table, final IModelSession modelSession, final String containerId, - final String shortCut, final TableType tableType, + final TableInfo tableInfo, final TableType tableType, final String areaCacheKey) { - final String threadName = String.format("%s/saveCache/%s", shortCut, //$NON-NLS-1$ - areaCacheKey); + final String threadName = String.format("%s/saveCache/%s", //$NON-NLS-1$ + tableInfo.shortcut(), areaCacheKey); final PlanPro2TableTransformationService modelService = getModelService( - shortCut); + tableInfo); // It will create a separate transformation for each table state, which // means each table state will have its own list of table errors. final Collection errors = modelService.getTableErrors(); @@ -536,16 +542,16 @@ private void saveTableToCache(final Table table, if (table != null) { cache.set(areaCacheKey, table); } - saveTableError(shortCut, modelSession, tableType, errors, + saveTableError(tableInfo, modelSession, tableType, errors, areaCacheKey); }; - if (TableService.isTransformComplete(shortCut, + if (TableService.isTransformComplete(tableInfo, s -> !s.equalsIgnoreCase(threadName))) { storageFunc.run(); return; } - while (!TableService.isTransformComplete(shortCut, + while (!TableService.isTransformComplete(tableInfo, s -> !s.equalsIgnoreCase(threadName))) { try { Thread.sleep(2000); @@ -636,10 +642,9 @@ private IRunnableWithProgress createProgressMonitor() { // Wait for table transform for (Pair transformThread; (transformThread = transformTableThreads .poll()) != null;) { - final String shortcut = extractShortcut(transformThread.getKey() - .getToolboxPart() - .getElementId()); - final TableNameInfo tableNameInfo = getTableNameInfo(shortcut); + final TableInfo tableInfo = getTableInfo( + transformThread.getKey()); + final TableNameInfo tableNameInfo = getTableNameInfo(tableInfo); monitor.subTask(tableNameInfo.getFullDisplayName()); Display.getDefault().syncExec(transformThread.getValue()); monitor.worked(1); @@ -664,13 +669,11 @@ public Map transformTables(final IProgressMonitor monitor, tablesToTransfrom.size()); for (final TableInfo tableInfo : tablesToTransfrom) { - final String shortcut = tableInfo.shortcut(); - final TableNameInfo nameInfo = getTableNameInfo(shortcut); + final TableNameInfo nameInfo = getTableNameInfo(tableInfo); monitor.subTask(nameInfo.getFullDisplayName()); - final Table table = transformToTable(shortcut, tableType, + final Table table = transformToTable(tableInfo, tableType, modelSession, controlAreaIds); - while (!TableService.isTransformComplete( - nameInfo.getShortName().toLowerCase(), null)) { + while (!TableService.isTransformComplete(tableInfo, null)) { try { Thread.sleep(2000); } catch (final InterruptedException e) { @@ -686,9 +689,9 @@ public Map transformTables(final IProgressMonitor monitor, } @Override - public Table createDiffTable(final String elementId, + public Table createDiffTable(final TableInfo tableInfo, final TableType tableType, final Set controlAreaIds) { - final Table mainSessionTable = transformToTable(elementId, tableType, + final Table mainSessionTable = transformToTable(tableInfo, tableType, sessionService.getLoadedSession(ToolboxFileRole.SESSION), controlAreaIds); final IModelSession compareSession = sessionService @@ -697,13 +700,12 @@ public Table createDiffTable(final String elementId, return mainSessionTable; } - final Table compareSessionTable = transformToTable(elementId, tableType, + final Table compareSessionTable = transformToTable(tableInfo, tableType, compareSession, controlAreaIds); // Waiting table compare transform, then create compare table between to // plan - while (!TableService.isTransformComplete(extractShortcut(elementId), - null)) { + while (!TableService.isTransformComplete(tableInfo, null)) { try { Thread.sleep(2000); } catch (final InterruptedException e) { @@ -712,22 +714,22 @@ public Table createDiffTable(final String elementId, } final Table compareTable = diffServiceMap.get(TableCompareType.PROJECT) .createDiffTable(mainSessionTable, compareSessionTable); - sortTable(compareTable, TableType.DIFF, elementId); + sortTable(compareTable, TableType.DIFF, tableInfo); return compareTable; } @Override public void sortTable(final Table table, final TableType tableType, - final String shortcut) { - final Comparator comparator = getModelService(shortcut) + final TableInfo tableInfo) { + final Comparator comparator = getModelService(tableInfo) .getRowGroupComparator(); ECollections.sort(table.getTablecontent().getRowgroups(), comparator); } @Override public TableRowGroupComparator getRowGroupComparator( - final String shortcut) { - final Comparator comparator = getModelService(shortcut) + final TableInfo tableInfo) { + final Comparator comparator = getModelService(tableInfo) .getRowGroupComparator(); if (comparator instanceof final TableRowGroupComparator rowGroupComparator) { return rowGroupComparator; diff --git a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/overview/TableOverviewPart.java b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/overview/TableOverviewPart.java index a77584bec7..0ab2e3ea9a 100644 --- a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/overview/TableOverviewPart.java +++ b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/overview/TableOverviewPart.java @@ -8,9 +8,7 @@ */ package org.eclipse.set.feature.table.overview; -import static org.eclipse.set.basis.constants.ToolboxConstants.ESTW_SUPPLEMENT_PART_ID_PREFIX; -import static org.eclipse.set.basis.constants.ToolboxConstants.ESTW_TABLE_PART_ID_PREFIX; -import static org.eclipse.set.basis.constants.ToolboxConstants.ETCS_TABLE_PART_ID_PREFIX; +import static org.eclipse.set.basis.constants.ToolboxConstants.*; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; @@ -234,8 +232,8 @@ private void calculateAllMissingTables(final IProgressMonitor monitor) { } private void openAllTablesWithErrors() { - final Collection tablesWithErrors = getTablesContainingErrors(); - for (final String shortCut : tablesWithErrors) { + final Collection tablesWithErrors = getTablesContainingErrors(); + for (final TableInfo tableInfo : tablesWithErrors) { final String tablePartIdPrefix = switch (getTableCategory()) { case ESTW -> ESTW_TABLE_PART_ID_PREFIX; case ETCS -> ETCS_TABLE_PART_ID_PREFIX; @@ -243,12 +241,12 @@ private void openAllTablesWithErrors() { default -> throw new IllegalArgumentException( "Unexpected value: " + getTableCategory()); //$NON-NLS-1$ }; - toolboxPartService.showPart( - String.format("%s.%s", tablePartIdPrefix, shortCut)); //$NON-NLS-1$ + toolboxPartService.showPart(String.format("%s.%s", //$NON-NLS-1$ + tablePartIdPrefix, tableInfo.shortcut())); } } - private Map> getTableErrors() { + private Map> getTableErrors() { return tableService.getTableErrors(getModelSession(), controlAreaIds, getTableCategory()); } @@ -266,9 +264,7 @@ private Pt1TableCategory getTableCategory() { } private void update() { - final Collection missingTables = getMissingTables().stream() - .map(TableInfo::shortcut) - .toList(); + final Collection missingTables = getMissingTables(); if (!ToolboxConfiguration.isDebugMode()) { missingTablesText.setText(tableList2DisplayString(missingTables)); @@ -279,7 +275,7 @@ private void update() { completenessHint.setVisible(false); } - final Collection tablesWithErrors = getTablesContainingErrors(); + final Collection tablesWithErrors = getTablesContainingErrors(); withErrorsText.setText(tableList2DisplayString(tablesWithErrors)); openAllWithErrors.setEnabled(!tablesWithErrors.isEmpty()); @@ -290,7 +286,7 @@ private void update() { } private Collection getMissingTables() { - final Map> computedErrors = getTableErrors(); + final Map> computedErrors = getTableErrors(); final Collection allTableInfos = tableService .getAvailableTables() .stream() @@ -302,17 +298,17 @@ private Collection getMissingTables() { if (!ToolboxConfiguration.isDebugMode()) { // in debug mode we want to be able to recompute the errors // that's why we mark all as missing - missingTables.removeIf( - info -> computedErrors.keySet().contains(info.shortcut())); + missingTables + .removeIf(info -> computedErrors.keySet().contains(info)); } return missingTables; } - private Collection getTablesContainingErrors() { - final Map> computedErrors = getTableErrors(); + private Collection getTablesContainingErrors() { + final Map> computedErrors = getTableErrors(); - final ArrayList tablesWithErrors = new ArrayList<>(); - for (final Entry> entry : computedErrors + final ArrayList tablesWithErrors = new ArrayList<>(); + for (final Entry> entry : computedErrors .entrySet()) { if (!entry.getValue().isEmpty()) { tablesWithErrors.add(entry.getKey()); @@ -321,12 +317,12 @@ private Collection getTablesContainingErrors() { return tablesWithErrors; } - private String tableList2DisplayString(final Collection tables) { + private String tableList2DisplayString(final Collection tables) { if (tables.isEmpty()) { return messages.TableOverviewPart_EmptyListText; } final List shortNames = new ArrayList<>(tables.stream() - .map(shortCut -> tableService.getTableNameInfo(shortCut) + .map(tableInfo -> tableService.getTableNameInfo(tableInfo) .getShortName()) .toList()); Collections.sort(shortNames); diff --git a/java/bundles/org.eclipse.set.services/src/org/eclipse/set/services/export/TableCompileService.java b/java/bundles/org.eclipse.set.services/src/org/eclipse/set/services/export/TableCompileService.java index 8e7f333f03..21a0ad9c6a 100644 --- a/java/bundles/org.eclipse.set.services/src/org/eclipse/set/services/export/TableCompileService.java +++ b/java/bundles/org.eclipse.set.services/src/org/eclipse/set/services/export/TableCompileService.java @@ -14,6 +14,7 @@ import org.eclipse.set.basis.IModelSession; import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.model.tablemodel.Table; +import org.eclipse.set.utils.table.TableInfo; /** * Compile tables. @@ -23,8 +24,8 @@ public interface TableCompileService { /** - * @param shortcut - * the table shortcut + * @param tableInfo + * the {@link TableInfo} * @param modelSession * the model session * @param controlAreaIds @@ -32,6 +33,6 @@ public interface TableCompileService { * * @return a mapping of possible tables */ - Map compile(String shortcut, IModelSession modelSession, - Set controlAreaIds); + Map compile(TableInfo tableInfo, + IModelSession modelSession, Set controlAreaIds); } diff --git a/java/bundles/org.eclipse.set.services/src/org/eclipse/set/services/table/TableService.java b/java/bundles/org.eclipse.set.services/src/org/eclipse/set/services/table/TableService.java index bd660064e2..e3ea46d711 100644 --- a/java/bundles/org.eclipse.set.services/src/org/eclipse/set/services/table/TableService.java +++ b/java/bundles/org.eclipse.set.services/src/org/eclipse/set/services/table/TableService.java @@ -55,12 +55,12 @@ public interface TableService { String extractShortcut(String elementId); /** - * @param shortcut - * the shortcut + * @param tableInfo + * the {@link TableInfo} * * @return the name info */ - TableNameInfo getTableNameInfo(String shortcut); + TableNameInfo getTableNameInfo(TableInfo tableInfo); /** * Gets information about all available tables. @@ -81,15 +81,15 @@ public interface TableService { * * @return collected table errors */ - Map> getTableErrors( + Map> getTableErrors( IModelSession modelSession, Set controlAreaIds, Pt1TableCategory tableCategory); /** * Transform the selected container to a string with CSV format. * - * @param elementId - * the elementId + * @param tableInfo + * the tableInfo * @param tableType * the table type * @param modelSession @@ -99,14 +99,14 @@ Map> getTableErrors( * container type * @return the table */ - String transformToCsv(final String elementId, TableType tableType, + String transformToCsv(final TableInfo tableInfo, TableType tableType, final IModelSession modelSession, Set controlAreaIds); /** * Transform the selected container and control area to a table model. * - * @param elementId - * the elementId + * @param tableInfo + * the {@link TableInfo} * @param tableType * the table type * @param modelSession @@ -116,7 +116,7 @@ String transformToCsv(final String elementId, TableType tableType, * * @return the table */ - Table transformToTable(final String elementId, TableType tableType, + Table transformToTable(final TableInfo tableInfo, TableType tableType, final IModelSession modelSession, Set controlAreaIds); /** @@ -155,22 +155,23 @@ void updateTable(BasePart part, List tableCategories, /** * Get fixed columns * - * @param elementID + * @param tableInfo + * {@link TableInfo} * @return position of fixed columns */ - Set getFixedColumns(final String elementID); + Set getFixedColumns(final TableInfo tableInfo); /** * Check the running threads, if exists thread name start with table short * cut * - * @param shortcut - * the table shortcut + * @param tableInfo + * the {@link TableInfo} * @param supplementCondition * the additional condition for thread name * @return true if the table completely transform */ - public static boolean isTransformComplete(final String shortcut, + public static boolean isTransformComplete(final TableInfo tableInfo, final Predicate supplementCondition) { return Thread.getAllStackTraces() .keySet() @@ -178,21 +179,22 @@ public static boolean isTransformComplete(final String shortcut, .map(t -> t.getName().toLowerCase()) .filter(t -> supplementCondition == null || supplementCondition.test(t)) - .noneMatch(name -> name.startsWith(shortcut.toLowerCase())); + .noneMatch(name -> name + .startsWith(tableInfo.shortcut().toLowerCase())); } /** * Compare table between two project * - * @param elementId - * the element id + * @param tableInfo + * the {@link TableInfo} * @param tableType * the table type * @param controlAreaIds * the list of {@link Stell_Bereich} and the belonging container * @return the compare table */ - Table createDiffTable(String elementId, TableType tableType, + Table createDiffTable(TableInfo tableInfo, TableType tableType, Set controlAreaIds); /** @@ -202,15 +204,29 @@ Table createDiffTable(String elementId, TableType tableType, * the table * @param tableType * the {@link TableType} - * @param shortcut - * the table shortcut + * @param tableInfo + * the {@link TableInfo} */ - void sortTable(Table table, TableType tableType, String shortcut); + void sortTable(Table table, TableType tableType, TableInfo tableInfo); /** - * @param shortcut - * the table short cut + * @param tableInfo + * the {@link TableInfo} * @return the row group comparator */ - Comparator getRowGroupComparator(String shortcut); + Comparator getRowGroupComparator(TableInfo tableInfo); + + /** + * @param part + * the toolbox part + * @return the {@link TableInfo} belong to the part + */ + TableInfo getTableInfo(BasePart part); + + /** + * @param shortcut + * the table shortcut + * @return the {@link TableInfo} + */ + TableInfo getTableInfo(String shortcut); }