From 76052741b963f52fe8e7ab4044912f0c90baa4d5 Mon Sep 17 00:00:00 2001 From: TruongQuangSB Date: Thu, 26 Mar 2026 13:39:55 +0100 Subject: [PATCH] PdfExport: export compare plan information --- .../org/eclipse/set/basis/FreeFieldInfo.java | 31 +++++++++------ .../export/pdf/TableToTableDocument.xtend | 18 +++++++-- .../ExportSiteplanBrowserFunction.java | 4 +- .../set/feature/table/ToolboxTableView.java | 4 +- .../table/export/PlanProExportPart.java | 5 +-- .../rootdir/data/export/pdf/common.xsl | 11 +++++- .../PlanProToFreeFieldTransformation.xtend | 39 +++++++++++++++---- 7 files changed, 82 insertions(+), 30 deletions(-) diff --git a/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/FreeFieldInfo.java b/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/FreeFieldInfo.java index da88124712..b2ae9ba8f4 100644 --- a/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/FreeFieldInfo.java +++ b/java/bundles/org.eclipse.set.basis/src/org/eclipse/set/basis/FreeFieldInfo.java @@ -12,23 +12,32 @@ * Additional information for (and around) the free field of the pdf export. * * @author Schaefer + * @param significantInformation + * the {@link SignificantInformation} + * */ -public class FreeFieldInfo { - - private String significantInformation; - +public record FreeFieldInfo(SignificantInformation significantInformation) { /** - * @return the significant information + * @param mainPlan + * the main {@link LoadedPlanInformation} + * @param comparePlan + * the compare {@link LoadedPlanInformation} */ - public String getSignificantInformation() { - return significantInformation; + public record SignificantInformation(LoadedPlanInformation mainPlan, + LoadedPlanInformation comparePlan) { + } /** - * @param significantInformation - * the significant information to set + * @param name + * the plan name + * @param checksum + * the checksum + * @param timestamp + * the timestamp */ - public void setSignificantInformation(final String significantInformation) { - this.significantInformation = significantInformation; + public record LoadedPlanInformation(String name, String checksum, + String timestamp) { + } } diff --git a/java/bundles/org.eclipse.set.feature.export/src/org/eclipse/set/feature/export/pdf/TableToTableDocument.xtend b/java/bundles/org.eclipse.set.feature.export/src/org/eclipse/set/feature/export/pdf/TableToTableDocument.xtend index cebf70d045..a38aec5a33 100644 --- a/java/bundles/org.eclipse.set.feature.export/src/org/eclipse/set/feature/export/pdf/TableToTableDocument.xtend +++ b/java/bundles/org.eclipse.set.feature.export/src/org/eclipse/set/feature/export/pdf/TableToTableDocument.xtend @@ -17,6 +17,8 @@ import javax.imageio.ImageIO import javax.xml.parsers.DocumentBuilderFactory import javax.xml.parsers.ParserConfigurationException import org.eclipse.set.basis.FreeFieldInfo +import org.eclipse.set.basis.FreeFieldInfo.LoadedPlanInformation +import org.eclipse.set.basis.FreeFieldInfo.SignificantInformation import org.eclipse.set.basis.constants.ToolboxConstants import org.eclipse.set.model.tablemodel.CellContent import org.eclipse.set.model.tablemodel.CompareFootnoteContainer @@ -555,10 +557,20 @@ class TableToTableDocument { } private def Element create doc.createElement("SignificantInformation") transformToSignificantInformation( - String significantInformation) { - textContent = significantInformation - return + SignificantInformation significantInformation) { + appendChild(transformLoadedPlanInformation("MainPlan", significantInformation.mainPlan)) + if (significantInformation.comparePlan !== null) { + appendChild(transformLoadedPlanInformation("ComparePlan", significantInformation.comparePlan)) + } + } + + private def Element create doc.createElement("LoadedPlan") transformLoadedPlanInformation(String id, LoadedPlanInformation info) { + val idAttr = doc.createAttribute("id") + idAttr.value = id + attributeNode = idAttr + textContent = '''«info.name» «info.timestamp» MD5: «info.checksum»''' } + private def Element create doc.createElement("Footnotes") transformToFootnotes(Table table) { diff --git a/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/browserfunctions/ExportSiteplanBrowserFunction.java b/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/browserfunctions/ExportSiteplanBrowserFunction.java index 1671f90902..ca113a54f9 100644 --- a/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/browserfunctions/ExportSiteplanBrowserFunction.java +++ b/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/browserfunctions/ExportSiteplanBrowserFunction.java @@ -114,9 +114,9 @@ private void sheetcutImageHandle(final String url, final int sheetcutcount, exportImages.add(bufferedImage); if (exportImages.size() >= sheetcutcount) { final PlanProToFreeFieldTransformation planProToFreeField = PlanProToFreeFieldTransformation - .create(); + .create(sessionService); final FreeFieldInfo freeFieldInfo = planProToFreeField - .transform(modelSession); + .transform(); dialogService.showProgressUISync(shell, message.WebSiteplanPart_Export, () -> { exportService.exportSiteplanPdf(exportImages, 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 60f194b6d0..ef07232a71 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 @@ -218,8 +218,8 @@ public TableType getTableType() { private FreeFieldInfo getFreeFieldInfo() { final PlanProToFreeFieldTransformation planProToFreeField = PlanProToFreeFieldTransformation - .create(); - return planProToFreeField.transform(getModelSession()); + .create(getSessionService()); + return planProToFreeField.transform(); } private Path getAttachmentPath(final String guid) { 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 27ff6f859f..f5a0c56fd5 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 @@ -271,9 +271,8 @@ && getTreeDataModel() instanceof TableCheckboxTreeModel) { this::getAttachmentPath); updateTitlebox(titlebox); final PlanProToFreeFieldTransformation planProToFreeField = PlanProToFreeFieldTransformation - .create(); - final FreeFieldInfo freeFieldInfo = planProToFreeField - .transform(modelSession); + .create(getSessionService()); + final FreeFieldInfo freeFieldInfo = planProToFreeField.transform(); getExportService().exportPdf(tables, getExportType(), titlebox, freeFieldInfo, id, getSelectedDirectory().toString(), modelSession.getToolboxPaths(), getTableType(), diff --git a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/common.xsl b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/common.xsl index bab8867709..1ca516ff8b 100644 --- a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/common.xsl +++ b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/common.xsl @@ -231,8 +231,17 @@ http://www.eclipse.org/legal/epl-v20.html - + + + + + + + + + Vergleich mit: + diff --git a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/utils/PlanProToFreeFieldTransformation.xtend b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/utils/PlanProToFreeFieldTransformation.xtend index 8454b0e70f..53e090b7ef 100644 --- a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/utils/PlanProToFreeFieldTransformation.xtend +++ b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/utils/PlanProToFreeFieldTransformation.xtend @@ -11,6 +11,10 @@ package org.eclipse.set.ppmodel.extensions.utils import org.eclipse.set.model.planpro.PlanPro.PlanPro_Schnittstelle import org.eclipse.set.basis.FreeFieldInfo import org.eclipse.set.basis.IModelSession +import org.eclipse.set.core.services.session.SessionService +import org.eclipse.set.basis.files.ToolboxFileRole +import org.eclipse.set.basis.FreeFieldInfo.SignificantInformation +import org.eclipse.set.basis.FreeFieldInfo.LoadedPlanInformation /** * Transformation from {@link IModelSession} to {@link FreeFieldInfo}. @@ -18,27 +22,46 @@ import org.eclipse.set.basis.IModelSession * @author Schaefer */ class PlanProToFreeFieldTransformation { + SessionService sessionService - private new() { + private new(SessionService sessionService) { + this.sessionService = sessionService + } + + private def IModelSession mainSession() { + return sessionService.getLoadedSession(ToolboxFileRole.SESSION) + } + + private def IModelSession compareSession() { + return sessionService.getLoadedSession(ToolboxFileRole.COMPARE_PLANNING) } /** * Creates a new transformation. */ - def static PlanProToFreeFieldTransformation create() { - return new PlanProToFreeFieldTransformation + def static PlanProToFreeFieldTransformation create( + SessionService sessionService) { + return new PlanProToFreeFieldTransformation(sessionService) } /** * Transforms a PlanPro Schnittstelle to a FreeFieldInfo. */ - def FreeFieldInfo create new FreeFieldInfo transform( - IModelSession session) { - val filename = session.toolboxFile.path.fileName.toString + def FreeFieldInfo transform() { + + return new FreeFieldInfo( + new SignificantInformation(mainSession.transformLoadedPlan, + compareSession.transformLoadedPlan)) + } + + def LoadedPlanInformation transformLoadedPlan(IModelSession session) { + if (session === null) { + return null + } + val name = session?.toolboxFile?.path?.fileName?.toString val timestamp = session.planProSchnittstelle.timestamp val checksum = session.toolboxFile.checksum - significantInformation = '''«filename» «timestamp» MD5: «checksum»''' - return + return new LoadedPlanInformation(name, checksum, timestamp) } private def String getTimestamp(PlanPro_Schnittstelle schnittstelle) {