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 05406aaeb7..7ac3cfb017 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 @@ -358,7 +358,7 @@ private void tableSelectRowHandler(final JumpToTableEvent event) { */ protected Table transformToTableModel() { return tableService.createDiffTable(tableInfo, tableType, - controlAreaIds); + controlAreaIds, true); } private void updateTableView(final List tableCategories) { 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 eac1adf5e3..eae5fd2b7c 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 @@ -38,18 +38,20 @@ public Map compile(final TableInfo tableInfo, final IModelSession modelSession, final Set controlAreaIds) { final Map result = new EnumMap<>(TableType.class); + // always recreate tables here (e.g. for exports) but don't update table + // status here as this transformation is only temporary if (PlanProSchnittstelleExtensions .isPlanning(modelSession.getPlanProSchnittstelle())) { Arrays.stream(TableType.values()) .filter(type -> type != TableType.SINGLE) .forEach(type -> { final Table table = tableService.createDiffTable( - tableInfo, type, controlAreaIds); + tableInfo, type, controlAreaIds, false); result.put(type, table); }); } else { final Table single = tableService.createDiffTable(tableInfo, - TableType.SINGLE, controlAreaIds); + TableType.SINGLE, controlAreaIds, false); result.put(TableType.SINGLE, single); } 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 909a6e76f1..84c9780cfd 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 @@ -302,7 +302,8 @@ modelSession, getModelService(tableInfo), private void saveTableError(final TableInfo tableInfo, final IModelSession modelSession, - final Collection errors) { + final Collection errors, + final TableStatus tableStatus) { final String shortName = getTableNameInfo(tableInfo).getShortName(); final String shortCut = tableInfo.shortcut(); @@ -311,8 +312,6 @@ private void saveTableError(final TableInfo tableInfo, // Only considered table in main session if (modelSession.getToolboxFile() .getRole() == ToolboxFileRole.SESSION) { - final TableStatus tableStatus = tablesStatus - .computeIfAbsent(tableInfo, k -> new TableStatus()); tableStatus.setContainsErrors(!errors.isEmpty()); } @@ -324,7 +323,8 @@ private void saveTableError(final TableInfo tableInfo, } private Object loadTransform(final TableInfo tableInfo, - final IModelSession modelSession, final TableType tableType) { + final IModelSession modelSession, final TableType tableType, + final TableStatus tableStatus) { final PlanPro2TableTransformationService modelService = getModelService( tableInfo); @@ -346,7 +346,8 @@ private Object loadTransform(final TableInfo tableInfo, // sorting sortTable(transformedTable, tableInfo, tableType); - saveTableToCache(transformedTable, modelSession, tableInfo); + saveTableToCache(transformedTable, modelSession, tableInfo, + tableStatus); return transformedTable; } @@ -378,7 +379,7 @@ public String transformToCsv(final TableInfo tableInfo, final TableType tableType, final IModelSession modelSession, final Set controlAreas) { final Table table = transformToTable(tableInfo, tableType, modelSession, - controlAreas); + controlAreas, new TableStatus()); return transformToCsv(table); } @@ -423,13 +424,13 @@ private String transformToCsv(final Table table) { @Override public Table transformToTable(final TableInfo tableInfo, final TableType tableType, final IModelSession modelSession, - final Set controlAreaIds) { + final Set controlAreaIds, final TableStatus tableStatus) { final Cache cache = getCacheService().getCache( modelSession.getPlanProSchnittstelle(), ToolboxConstants.SHORTCUT_TO_TABLE_CACHE_ID); final Object table = cache.get(tableInfo.shortcut(), () -> { final Object transformed = loadTransform(tableInfo, modelSession, - tableType); + tableType, tableStatus); if (transformed != null && transformed instanceof final Table transformedTable) { return transformedTable; @@ -461,9 +462,7 @@ public Table transformToTable(final TableInfo tableInfo, getModelService(tableInfo).addAdditionRow(stateTable, resultTable); if (modelSession.getToolboxFile() .getRole() == ToolboxFileRole.SESSION) { - final TableStatus status = tablesStatus.computeIfAbsent(tableInfo, - k -> new TableStatus()); - status.setContainsStateChanged( + tableStatus.setContainsStateChanged( TableServiceUtils.isTableExistChangedCompareContent( resultTable, CompareStateCellContent.class)); } @@ -515,7 +514,8 @@ private void storageFootnotes(final ToolboxFileRole sessionRole, } private void saveTableToCache(final Table table, - final IModelSession modelSession, final TableInfo tableInfo) { + final IModelSession modelSession, final TableInfo tableInfo, + final TableStatus tableStatus) { final String threadName = String.format("%s/saveCache", //$NON-NLS-1$ tableInfo.shortcut()); final PlanPro2TableTransformationService modelService = getModelService( @@ -541,7 +541,7 @@ private void saveTableToCache(final Table table, }); cache.set(tableInfo.shortcut(), table); - saveTableError(tableInfo, modelSession, errors); + saveTableError(tableInfo, modelSession, errors, tableStatus); }; if (TableService.isTransformComplete(tableInfo, @@ -679,7 +679,7 @@ public Map transformTables(final IProgressMonitor monitor, monitor.subTask(nameInfo.getFullDisplayName()); final Table table = createDiffTable(tableInfo, tableType, - controlAreaIds); + controlAreaIds, true); while (!TableService.isTransformComplete(tableInfo, null)) { Thread.sleep(2000); } @@ -695,15 +695,17 @@ public Map transformTables(final IProgressMonitor monitor, @Override public Table createDiffTable(final TableInfo tableInfo, - final TableType tableType, final Set controlAreaIds) { + final TableType tableType, final Set controlAreaIds, + final boolean updateTableStatus) { Table mainSessionTable = null; - final TableStatus tableStatus = tablesStatus.computeIfAbsent(tableInfo, - k -> new TableStatus()); - tableStatus.reset(); + final TableStatus tableStatus = updateTableStatus + ? tablesStatus.computeIfAbsent(tableInfo, + k -> new TableStatus()) + : new TableStatus(); try { mainSessionTable = transformToTable(tableInfo, tableType, sessionService.getLoadedSession(ToolboxFileRole.SESSION), - controlAreaIds); + controlAreaIds, tableStatus); storageFootnotes(ToolboxFileRole.SESSION, tableInfo, mainSessionTable); if (sessionService.getLoadedSession( @@ -737,7 +739,7 @@ public Table createDiffTable(final TableInfo tableInfo, final IModelSession compareSession = sessionService .getLoadedSession(ToolboxFileRole.COMPARE_PLANNING); final Table compareSessionTable = transformToTable(tableInfo, - tableType, compareSession, controlAreaIds); + tableType, compareSession, controlAreaIds, tableStatus); storageFootnotes(ToolboxFileRole.COMPARE_PLANNING, tableInfo, compareSessionTable); final Table compareTable = diffServiceMap 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 cae6913aec..7fcda4665c 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 @@ -137,11 +137,14 @@ String transformToCsv(final TableInfo tableInfo, TableType tableType, * the model session * @param controlAreaIds * the list of {@link Stell_Bereich} and the belonging container + * @param tableStatus + * the table status to update when transforming the table * * @return the table */ Table transformToTable(final TableInfo tableInfo, TableType tableType, - final IModelSession modelSession, Set controlAreaIds); + final IModelSession modelSession, Set controlAreaIds, + final TableStatus tableStatus); /** * Transform the selected container and control area to tables model. @@ -220,10 +223,12 @@ public static boolean isTransformComplete(final TableInfo tableInfo, * the table type * @param controlAreaIds * the list of {@link Stell_Bereich} and the belonging container + * @param updateTableStatus + * whether to update the table status or not * @return the compare table */ Table createDiffTable(TableInfo tableInfo, TableType tableType, - Set controlAreaIds); + Set controlAreaIds, boolean updateTableStatus); /** * Sort the table after transformation.