diff --git a/java/bundles/org.eclipse.set.application.test/pom.xml b/java/bundles/org.eclipse.set.application.test/pom.xml new file mode 100644 index 0000000000..11c4fa71ec --- /dev/null +++ b/java/bundles/org.eclipse.set.application.test/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + org.eclipse.set.application.test + eclipse-test-plugin + + + ../../ + org.eclipse.set + org.eclipse.set.releng.parent + 2.6.0-SNAPSHOT + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + + properties + + + + + + org.eclipse.tycho + tycho-surefire-plugin + ${tycho-version} + + -javaagent:${org.mockito:mockito-core:jar} + + + + + \ No newline at end of file diff --git a/java/bundles/org.eclipse.set.core.test/pom.xml b/java/bundles/org.eclipse.set.core.test/pom.xml new file mode 100644 index 0000000000..5d8ac54772 --- /dev/null +++ b/java/bundles/org.eclipse.set.core.test/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + org.eclipse.set.core.test + eclipse-test-plugin + + + ../../ + org.eclipse.set + org.eclipse.set.releng.parent + 2.6.0-SNAPSHOT + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + + properties + + + + + + org.eclipse.tycho + tycho-surefire-plugin + ${tycho-version} + + -javaagent:${org.mockito:mockito-core:jar} + + + + + \ No newline at end of file diff --git a/java/bundles/org.eclipse.set.feature.plazmodel.test/pom.xml b/java/bundles/org.eclipse.set.feature.plazmodel.test/pom.xml new file mode 100644 index 0000000000..b3b265729e --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.plazmodel.test/pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + org.eclipse.set.feature.plazmodel.test + eclipse-test-plugin + + + ../../ + org.eclipse.set + org.eclipse.set.releng.parent + 2.6.0-SNAPSHOT + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + + properties + + + + + + org.eclipse.tycho + tycho-surefire-plugin + ${tycho-version} + + -javaagent:${org.mockito:mockito-core:jar} + + + + + \ No newline at end of file diff --git a/java/bundles/org.eclipse.set.feature.siteplan.test/pom.xml b/java/bundles/org.eclipse.set.feature.siteplan.test/pom.xml new file mode 100644 index 0000000000..b871abf618 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.siteplan.test/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + org.eclipse.set.feature.siteplan.test + eclipse-test-plugin + + + ../../ + org.eclipse.set + org.eclipse.set.releng.parent + 2.6.0-SNAPSHOT + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + + properties + + + + + + org.eclipse.tycho + tycho-surefire-plugin + ${tycho-version} + + -javaagent:${org.mockito:mockito-core:jar} + + + + + \ No newline at end of file diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/META-INF/MANIFEST.MF b/java/bundles/org.eclipse.set.feature.table.pt1.test/META-INF/MANIFEST.MF index 461b98c866..16e02270fb 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1.test/META-INF/MANIFEST.MF +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/META-INF/MANIFEST.MF @@ -4,8 +4,8 @@ Bundle-Name: Pt1 Table Test Bundle-SymbolicName: org.eclipse.set.feature.table.pt1.test Bundle-Vendor: Eclipse Signalling Engineering Toolbox Bundle-Version: 2.6.0.qualifier -Fragment-Host: org.eclipse.set.feature.table.pt1;bundle-version="0.1.0" Automatic-Module-Name: org.eclipse.set.feature.table.pt1.test +Bundle-Activator: org.eclipse.set.feature.table.pt1.test.Activator Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-21 Import-Package: com.google.common.util.concurrent, @@ -15,16 +15,41 @@ Import-Package: com.google.common.util.concurrent, org.apache.commons.collections4, org.apache.commons.lang3, org.apache.commons.lang3.reflect, + org.dom4j, + org.dom4j.io, + org.dom4j.util, + org.eclipse.e4.core.services.events, + org.eclipse.emf.edit.domain;version="[2.23.0,3.0.0)", org.eclipse.set.application.cacheservice, org.eclipse.set.application.geometry, org.eclipse.set.application.graph, + org.eclipse.set.core, + org.eclipse.set.core.services.cache, + org.eclipse.set.core.services.enumtranslation, + org.eclipse.set.core.services.geometry, + org.eclipse.set.model.tablemodel, + org.eclipse.set.model.temporaryintegration, + org.eclipse.set.ppmodel.extensions.container, + org.eclipse.set.ppmodel.extensions.utils, org.eclipse.set.unittest.utils, org.eclipse.set.utils, + org.eclipse.set.utils.export.xsl, + org.eclipse.set.utils.table, org.eclipse.swt.widgets, org.jgrapht.graph, org.jheaps.tree, org.junit.jupiter.api, + org.junit.jupiter.api.extension;version="[5.12.0,6.0.0)", org.junit.jupiter.api.function, org.junit.jupiter.params, - org.junit.jupiter.params.provider -Require-Bundle: org.mockito.mockito-core + org.junit.jupiter.params.provider, + org.osgi.framework, + org.osgi.service.event, + org.osgi.test.common.annotation, + org.osgi.test.junit5.service;version="[1.2.0,2.0.0)" +Require-Bundle: org.mockito.mockito-core, + org.eclipse.set.feature.table, + org.eclipse.set.feature.table.pt1, + org.eclipse.set.model.planpro, + org.eclipse.set.ppmodel.extensions, + org.eclipse.set.basis diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/pom.xml b/java/bundles/org.eclipse.set.feature.table.pt1.test/pom.xml index 34a194726b..7f4ca89d0e 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1.test/pom.xml +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/pom.xml @@ -3,10 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - org.eclipse.set org.eclipse.set.feature.table.pt1.test - 2.6.0-SNAPSHOT eclipse-test-plugin @@ -15,41 +12,27 @@ org.eclipse.set.releng.parent 2.6.0-SNAPSHOT - + - maven-resources-plugin - 3.5.0 + org.apache.maven.plugins + maven-dependency-plugin - copy-news - prepare-package - copy-resources + properties - - ${basedir}/data/export/excel - - - ${basedir}/../org.eclipse.set.feature/rootdir/data/export/excel - - - - - maven-clean-plugin - 3.5.0 + org.eclipse.tycho + tycho-surefire-plugin + ${tycho-version} - - - data - false - - + -javaagent:${org.mockito:mockito-core:jar} diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssbb-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssbb-fop.xsl new file mode 100644 index 0000000000..57773b018d --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssbb-fop.xsl @@ -0,0 +1,101 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJGrundsatzangabenWirkungBemerkungBezeichnungZugehörige Außenelement- +ansteuerungBauartBefestigungBÜ-AnlageBÜ-EinschaltungBÜ-AusschaltungArtStreckekm.Die Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssit-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssit-fop.xsl new file mode 100644 index 0000000000..9528fc5445 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssit-fop.xsl @@ -0,0 +1,103 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRGrundsatzangabenBedien- und AnzeigeelementeBemerkungBezeichnungZugehörige Außenelement- +ansteuerungBauartBefestigungMelderSchalterTasteNahstellbereichArtStreckekmAnforderung NbFertig- +meldungWeichen- +gruppeUmstellung WeicheUmstellung GleissperreUmstellung SignalFreigabe SchlüsselsperreAnschaltzeit HupesDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sska-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sska-fop.xsl new file mode 100644 index 0000000000..187aec5391 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sska-fop.xsl @@ -0,0 +1,103 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWGrundsatzangabenVerknüpfungenIP-Adressangaben (DSTW)BemerkungBezeichnungArtBauartUnterbringungInformationEnergieBedienung (ZE)GFK- +KategorieRegional- +bereichAdressblock BlauAdressblock GrauArtOrtStreckekmTüranschlagprimärsekundärprimärsekundärlokalBezirk +ZentraleNot-BPIPv4IPv6IPv4IPv6.Die Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskf-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskf-fop.xsl new file mode 100644 index 0000000000..0b220e1380 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskf-fop.xsl @@ -0,0 +1,106 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWGrundsatzangabenAuswertungFTGSNF-/TF-GSKSonstigesBemerkungBezeichnung FreimeldeabschnittTeilabschnittArtTypAEAÜbertragungLängeLängeBettungs- +widerstand Rb'minWeiche, Kreuzung, GleissperreZuordnung Oberleitungsanlagezul. Geschwindig- +keitHilfs- +frei- +meldungSchalt- +funktionBez. Einzel- +Ausw.vonnachTyplSl1l2l3elektr.beeinfl.SchaltgruppeBezeichnungmmmmmmΩ*kmkm/hDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskg-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskg-fop.xsl new file mode 100644 index 0000000000..1b0efae199 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskg-fop.xsl @@ -0,0 +1,103 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMGrundsatzangabenAchszählpunkteStandortmerkmaleFunktionBemerkungBezeichnung GleisschaltmittelArtTypAnschluss Achszähl- +rechnerAnschluss Energie- +versorgungSchienen- +profilBezugspunktStandortAEAAEASeparate AdernBezeichnungAbstandStreckekmmDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssko-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssko-fop.xsl new file mode 100644 index 0000000000..81cd3ee04c --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssko-fop.xsl @@ -0,0 +1,102 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVGrundsatzangabenSchlüsselFahrwegWeiche/Gleissperre/BÜSchlosskombination/SchlüsselsperreSonderanlageSchlüssel bei Technisch BerechtigtemBemerkungBezeichnung SchlossSchloss anIn Grundstellung +eingeschlossenBezeichnungBartformGruppeBezeichnungVerschlossenes ElementSchlossartBezeichnungHaupt- +schlossUnterbringungZugRangierBezeichnungLageAnbaulageOrtArtOrtStreckekm.Die Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskp-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskp-fop.xsl new file mode 100644 index 0000000000..8cbff00d72 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskp-fop.xsl @@ -0,0 +1,128 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWXYZBezugPZB-SchutzstreckeGleismagneteINAGeschwindigkeitsüberwachungBemerkungBezugs- +elementWirk- +frequenzPZB- +SchutzpunktGeschw.- +klassePZB- +SchutzstreckeWirk- +samkeitggf. besondere Bedingungen für WirksamkeitAbstand zu +Bezugselement/ +ZielsignalAbstand +zu GM +2000maßgeb. +GefahrstelleAbstand zu +maßgeb. +GefahrstelleAbstand +Bahnsteig +zu GM 2000Abstand +H-Tafel zu +GM 2000 +[bis zu 4]Abstand Vorsignal- +wdh. zu +GM 2000Prüfdatum +Wirkbereichs- +bogenv Prüft PrüfMess- +fehlerMess- +streckeMontage- +varianteBauformggf. Montage- +ort des +SchaltkastensEnergie- +versorgungSollIstAnfangEndeHzkm/hmmmmmmmmmkm/hs%mDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskp_dm-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskp_dm-fop.xsl new file mode 100644 index 0000000000..33fa23cb8c --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskp_dm-fop.xsl @@ -0,0 +1,128 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWXYZBezugPZB-SchutzstreckeGleismagneteINAGeschwindigkeitsüberwachungBemerkungBezugs- +elementWirk- +frequenzPZB- +SchutzpunktGeschw.- +klassePZB- +SchutzstreckeWirk- +samkeitggf. besondere Bedingungen für WirksamkeitAbstand zu +Bezugselement/ +ZielsignalAbstand +zu GM +2000maßgeb. +GefahrstelleAbstand zu +maßgeb. +GefahrstelleAbstand +Bahnsteig +zu GM 2000Abstand +H-Tafel zu +GM 2000 +[bis zu 4]Abstand Vorsignal- +wdh. zu +GM 2000Prüfdatum +Wirkbereichs- +bogenv Prüft PrüfMess- +fehlerMess- +streckeMontage- +varianteBauformggf. Montage- +ort des +SchaltkastensEnergie- +versorgungSollIstAnfangEndeHzkm/hmmmmmmmmmkm/hs%mDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssks-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssks-fop.xsl new file mode 100644 index 0000000000..88e05ee00b --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssks-fop.xsl @@ -0,0 +1,174 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWXYZAAAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXBezeichnung SignalSignal-ArtStandortmerkmaleKonstruktive MerkmaleAnschlussBezeichnung SignalSignalisierungSonstigesBemerkungReales SignalFunktion ohne SignalFiktives SignalStandortSonstige zulässige AnordnungLichtraum- +profilÜber- +höhungAbstand +Mastmitte - Gleismitte +(Gleisabstand)SichtbarkeitAusrichtungAnordnungObere Lichtpunkt- +höheStreuscheibeFundamentSchaltkastenSeparater Schaltkasten SteuerungDauerhaft Nacht- +schaltungSignalbegriffe +(Schirm)Signalbegriffe +(Zusatzanzeiger)Nach- +geordnetes SignalMastschildWeitere +(z. B. ETCS-Halttafel, +Vorsignaltafel)Automatische FahrtstellungDunkel- +schaltungDurchfahrt erlaubtBesetzte AusfahrtLöschung Zs 1/Zs 7ÜberwachungStreckekmLinksRechtsSollMindestIstEntfernungRichtpunktBefestigungRegelzeichnung +Nr. (Bild)ArtStellungArt/ +Rz. Nr. (Bild)Höhe +u. SOBezeichnungEntfernungBezeichnungHp, (Hl)Ks, (Vr)Zl, +KlRa 12/ +Sh 1ZsZs 2Zs 2vZs 3Zs 3vZsZpKombinationRegelzeichnung +Nr. (Bild)Zs 2Zs 2vmmmmmmmmmmmmmmmDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskt-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskt-fop.xsl new file mode 100644 index 0000000000..9f3ca43cd1 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskt-fop.xsl @@ -0,0 +1,101 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPGrundsatzangabenIP-AdressangabenBemerkungBezeichnung TSO/BSOArtBSOUnterbringungRegional- +bereichBlauGrauTeilsystemArtOrtStreckekmIPv4IPv6IPv4IPv6ArtBlauGrau.Die Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskw-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskw-fop.xsl new file mode 100644 index 0000000000..aa32e267fc --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskw-fop.xsl @@ -0,0 +1,111 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWXYZWeiche/Kreuzung/Gleissperre/SonderanlageFreimeldungVorzugslage/ +GrundstellungWeicheKreuzungHerzstückGleissperreSonstigesSonderanlageBemerkungBezeichnungArtFormFMAnicht grenzzeichenfreiIsolierfallLage/ +StellungAuto- +matikAuffahr- +ortungAnzahl (Lage) AntriebeWeichen- +signalPrüf- +kontakte +(Zprk)zul. Geschwindigkeitzul. GeschwindigkeitAnzahl (Lage) AntriebeAnzahl AntriebeGsp- +signalAuswurf- +richtungSchutz- +schieneRegelzeichnung +Nr. (Bild)DWSArtLinks mitRechts mitLinksRechtsLinksRechtsStStkm/hkm/hkm/hkm/hStStDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskx-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskx-fop.xsl new file mode 100644 index 0000000000..db0be33749 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskx-fop.xsl @@ -0,0 +1,107 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOBezeichnung +SignalStandortmerkmaleKonstruktive MerkmaleSignalisierungBemerkungStandortLichtraum-profilÜber-höhungAbstand +Mastmitte - Gleismitte +(Gleisabstand)AnordnungFundamentSignalbegriffStreckekmGleisLinksRechtsBefestigungRegelzeichnung +Nr. (Bild)Art/ +Rz. Nr. (Bild)Höhe +u. SOBezeichnung (Symbol)Regelzeichnung +Nr. (Bild)mmmmmmmmDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskz-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskz-fop.xsl new file mode 100644 index 0000000000..6d8f6a977d --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sskz-fop.xsl @@ -0,0 +1,105 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIBetrieblicher Bezeichner +FEAxBetrieblicher Bezeichner +FeldelementTechnischer Bezeichner +Object ControllerTüranschlagMontageÜberhöhungAbstand +Mitte FEAx - Gleismitte +(Gleisabstand)BlattnummerBemerkungmmmmDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssla-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssla-fop.xsl new file mode 100644 index 0000000000..1915864d89 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssla-fop.xsl @@ -0,0 +1,102 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGGrundsatzangabenUnterwegssignal +(bei Zugstraßen mit D-Weg)BemerkungBezeichnungFahrwegD-Weg +ZielArtStartZiel.Die Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslb-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslb-fop.xsl new file mode 100644 index 0000000000..dd24df31a3 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslb-fop.xsl @@ -0,0 +1,108 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWXYStreckeGrundsatzangabenErlaubnisBlockmeldungAkustische MeldungAwanstBemerkungNummerGleisRegel-/ +GegengleisStrecken- +zielBetriebsführungVonNachBlock- +schaltung +Schutz- +über- +tragerStändig vorhandenHolenRücklauf autom. Abgabe-speicherungAbhängigkeit Durchrutschweg/ RangierzielsperreAnrückabschnittZugschluss-meldungRäumungs-prüfungVorblock-weckerRückblock-weckerBezeichnung (Bedienung von)Betriebs-stelleBauformStrecken- +freimeldungBetriebs- +stelleBauformBezeichnungAnordnung.Die Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssld-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssld-fop.xsl new file mode 100644 index 0000000000..edfbec5bcd --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssld-fop.xsl @@ -0,0 +1,111 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTGrundsatzangabenEigenschaftenAbhängigkeitenAuflösungBemerkungvon +(Signal)bis +(markanter Punkt)GefahrpunktPZB- +SchutzpunktBezeichnungv Ziel +möglichLängeMaßgebende +NeigungWeichen, Kreuzungenrelevante +FmAv- +Aufwertung +VerzichtErlaubnis- +abhängigManuellAuflöseabschnitt (im Zielgleis)Auflöseverzögerung bzw. Kennlicht- +verzögerungszeitSollIstFrei- +gemeldetmit Verschlussohne VerschlussBezeichnungBemessungslängekm/hmmmmsDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslf-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslf-fop.xsl new file mode 100644 index 0000000000..ab9af4c917 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslf-fop.xsl @@ -0,0 +1,103 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMFlankenschutzanfordererUnmittelbarer FlankenschutzFlankenschutzweitergabeTechnischer +VerzichtFlankenschutzraumBemerkungBezeichnung Weiche/NbW-Lage/ +Nb-GrenzeWeiche/GleissperreSignalWeiche/Kreuzungfreigemeldetnicht freigemeldetBezeichnungLageZwieschutzBezeichnungRangierziel- +sperreBezeichnungwie Fahrt über.Die Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssli-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssli-fop.xsl new file mode 100644 index 0000000000..e853813003 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssli-fop.xsl @@ -0,0 +1,100 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHGrundsatzangabenAusschluss gleichzeitiger FahrtenBemerkungBezeichnung InselgleisLängeBegrenzende SignaleZugausfahrtRangierfahrtP/Y-RichtungN/X-RichtungEinfahrtAusfahrtmDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssln-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssln-fop.xsl new file mode 100644 index 0000000000..3193298a52 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssln-fop.xsl @@ -0,0 +1,102 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNGrundsatzangabenUnterstellungsverhältnisGrenzeElementNahstellbereich RBemerkungBereich/ZoneArtunterge- +ordnet zuRang der ZuschaltungAuflösung Grenze zu übergeordneter ZoneBezeichnung +(Element innen, außen)Weiche/GleissperreSignalSchlüsselsperreBedieneinrichtungBedienungshandlungfrei stellbar (Rückgabevoraussetzung)verschlossenfrei stellbar (Rückgabevoraussetzung)Kennlicht.Die Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslr-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslr-fop.xsl new file mode 100644 index 0000000000..3968b86a54 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslr-fop.xsl @@ -0,0 +1,111 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQGrundsatzangabenEinstellungAbhängigkeitenBemerkungBezeichnungFahrwegArtAutom. +EinstellungF- +BedienungInselgleisGleisfrei- +meldungFahrwegweichen +mit FlankenschutzÜberwachte Ssp (Auflösung Zielgleis)Abhängiger +BÜZiel +erlaubnis- +abhängigAuflösung +nicht angefahrener +FahrstraßenStartZielNr.Entscheidungsweiche +mit StellungBezeichnungGegenfahrt- +ausschluss.Die Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssls-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssls-fop.xsl new file mode 100644 index 0000000000..31aad65f03 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssls-fop.xsl @@ -0,0 +1,102 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHSignalisierungs- +abschnitt(e)Signal / +SignalisierungKs / Hp / Hl / Ra / ShKenn- / ZusatzlichtGeschwindigkeitsanzeigerGeschwindigkeitsvoranzeigerRichtungsanzeigerRichtungsvoranzeigerZs _Die Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslw-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslw-fop.xsl new file mode 100644 index 0000000000..4387f60ef9 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslw-fop.xsl @@ -0,0 +1,105 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPWeiche/Kreuzung +in angeforderter StellungArtVerschlussErsatzschutz unmittelbarErsatzschutz WeitergabeTechnischer +VerzichtFlankenschutzraumNachlauf- +verhinderungBemerkungEigenEchtWeiche/GleissperreSignalWeiche/Kreuzungfreigemeldetnicht freigemeldetBezeichnungLageZwieschutzBezeichnungRangier- +zielsperreBezeichnungwie Fahrt +über.Die Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslz-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslz-fop.xsl new file mode 100644 index 0000000000..7b8f696444 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sslz-fop.xsl @@ -0,0 +1,116 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFGrundsatzangabenEinstellungAbhängigkeitenSignalisierungBemerkungBezeichnungFahrwegD-WegArtAutom. Einstel- +lungF- +Bedie- +nungInselgleisÜberwachte SspAbhän- +giger +BÜNichthaltfall- +abschnitt2. Haltfall- +kriteriumAnnäherungs- +verschlussGeschwindigkeit am StartsignalSonstiges am StartsignalIm FahrwegStartZielNr.Entscheidungs- +weiche +mit StellungBezeich- +nung (*Vorzug)HgFahr- +wegD-WegBeson- +dersZs 3 +(Zs 3 Ziel)Aufwertung +bei MwtfstrZlZs 3vZs 2Zs 2vZs 6Zs 13Zs 3Zs 6Kennlicht anVorsigna- +lisierung Zielkm/hkm/hkm/hkm/hDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssvu-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssvu-fop.xsl new file mode 100644 index 0000000000..e7e7cb1895 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssvu-fop.xsl @@ -0,0 +1,100 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHGrundsatzangabenTechnikBemerkungvonnachVerwendungNetzartTechnikartSchnittstelleBandbreite.Die Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssza-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssza-fop.xsl new file mode 100644 index 0000000000..ecebc9ab14 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/ssza-fop.xsl @@ -0,0 +1,103 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNODatenpunkt (DP)Bezugspunkt (BP)DP-Standort (Balise a)Rel. Lage +b zu aBemerkungNID_CNID_BGGesteuertAnzahl BalisenTypBezeichnungStandortRel. Lage +zu BP +StellbereichETCS-GleiskanteStreckeKmStreckeKmmmDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sszs-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sszs-fop.xsl new file mode 100644 index 0000000000..37a738dcc8 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sszs-fop.xsl @@ -0,0 +1,127 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHSignalSignalisierungETCS-GefahrpunktKürzester DurchrutschwegSonstige FunktionenTunnelbegegnungs- +verbot (TBV)AnsteuerungBemerkungBezeichnungArtStandortZs 1Zs 2Zs 3Zs 6Zs 7Zs 8Löschg. Zs 1/7/8Zs 13KlNe 14BezeichnungAb- +stand +vom +Signal< 50 m50 bis + < 200 m≥ 200 mDunkel- +schalt- +anstoßAutom. +Fahrt- +stellungDEndEin- +stieg +erlaubtAus- +stieg +bei +ETCS- +SperredHaltfallHaltfall- +kriterium 2ZSSMelde- +punktLänge +Tunnel- +bereich +(Portal- +signal)Tunnel- +signalESTW- +ZEStell- +bereichkeine +Über- +trag. an +RBCStreckekmmmmmmmmDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sszw-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sszw-fop.xsl new file mode 100644 index 0000000000..2e3245ebd1 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sszw-fop.xsl @@ -0,0 +1,102 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOWeiche/KreuzungZulässige GeschwindigkeitAnsteuerungkeine +Übertrag. +an RBCBemerkungBezeichnungGrundformStandortLängeWeicheKreuzungESTW-ZentraleinheitStellbereichArtFormStreckekmLinksRechtsLinksRechtsLinksRechtsmmkm/hkm/hkm/hkm/hDie Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sxxx-fop.xsl b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sxxx-fop.xsl new file mode 100644 index 0000000000..932afb5289 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/res/xsl/sxxx-fop.xsl @@ -0,0 +1,100 @@ + + + + + + + + + + + + 20mm + 10mm + 0mm + 0mm + 297mm + 420mm + + + + center + center + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDBearbeitungsvermerkReferenziert von ObjektAusgabe in PlanKurztextInhalt.Die Tabelle ist leer diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/Activator.java b/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/Activator.java new file mode 100644 index 0000000000..bffbfd2d71 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/Activator.java @@ -0,0 +1,27 @@ +package org.eclipse.set.feature.table.pt1.test; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; + +public class Activator implements BundleActivator { + + private static BundleContext bundleContext; + + /** + * @return the bundle context + */ + public static BundleContext getContext() { + return bundleContext; + } + + @Override + public void start(final BundleContext context) throws Exception { + bundleContext = context; + } + + @Override + public void stop(final BundleContext context) throws Exception { + bundleContext = null; + } + +} diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/Pt1TableTest.java b/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/Pt1TableTest.java index bd0be70e5c..be2b4df3b2 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/Pt1TableTest.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/Pt1TableTest.java @@ -10,72 +10,35 @@ */ package org.eclipse.set.feature.table.pt1.test; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyBoolean; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.HashMap; +import static org.mockito.Mockito.when; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.Comparator; +import java.util.Dictionary; +import java.util.Hashtable; import java.util.List; -import java.util.Map; import java.util.Objects; +import java.util.stream.Stream; -import org.apache.commons.lang3.reflect.FieldUtils; -import org.eclipse.emf.common.util.Enumerator; -import org.eclipse.set.application.cacheservice.CacheServiceImpl; -import org.eclipse.set.application.geometry.GeoKanteGeometryServiceImpl; -import org.eclipse.set.application.geometry.GeoKanteGeometrySessionData; -import org.eclipse.set.application.graph.BankServiceImpl; -import org.eclipse.set.application.graph.BankingInformationSession; -import org.eclipse.set.application.graph.TopologicalGraphServiceImpl; -import org.eclipse.set.basis.Translateable; +import org.eclipse.e4.core.services.events.IEventBroker; +import org.eclipse.set.basis.IModelSession; import org.eclipse.set.basis.constants.ContainerType; +import org.eclipse.set.basis.constants.Events; +import org.eclipse.set.basis.files.ToolboxFile; import org.eclipse.set.basis.files.ToolboxFileRole; -import org.eclipse.set.core.services.Services; -import org.eclipse.set.core.services.cache.CacheService; -import org.eclipse.set.core.services.enumtranslation.EnumTranslation; -import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; -import org.eclipse.set.core.services.geometry.GeoKanteGeometryService; -import org.eclipse.set.feature.table.PlanPro2TableTransformationService; -import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableTransformationService; -import org.eclipse.set.feature.table.pt1.messages.Messages; -import org.eclipse.set.feature.table.pt1.ssbb.SsbbTransformationService; -import org.eclipse.set.feature.table.pt1.ssit.SsitTransformationService; -import org.eclipse.set.feature.table.pt1.sska.SskaTransformationService; -import org.eclipse.set.feature.table.pt1.sskf.SskfTransformationService; -import org.eclipse.set.feature.table.pt1.sskg.SskgTransformationService; -import org.eclipse.set.feature.table.pt1.ssko.SskoTransformationService; -import org.eclipse.set.feature.table.pt1.sskp.SskpTransformationService; -import org.eclipse.set.feature.table.pt1.sskp.dm.SskpDmTransformationService; -import org.eclipse.set.feature.table.pt1.ssks.SsksTransformationService; -import org.eclipse.set.feature.table.pt1.sskt.SsktTransformationService; -import org.eclipse.set.feature.table.pt1.sskw.SskwTransformationService; -import org.eclipse.set.feature.table.pt1.sskx.SskxTransformationService; -import org.eclipse.set.feature.table.pt1.sskz.SskzTransformationService; -import org.eclipse.set.feature.table.pt1.ssla.SslaTransformationService; -import org.eclipse.set.feature.table.pt1.sslb.SslbTransformationService; -import org.eclipse.set.feature.table.pt1.ssld.SsldTransformationService; -import org.eclipse.set.feature.table.pt1.sslf.SslfTransformationService; -import org.eclipse.set.feature.table.pt1.ssli.SsliTransformationService; -import org.eclipse.set.feature.table.pt1.ssln.SslnTransformationService; -import org.eclipse.set.feature.table.pt1.sslr.SslrTransformationService; -import org.eclipse.set.feature.table.pt1.ssls.SslsTransformationService; -import org.eclipse.set.feature.table.pt1.sslw.SslwTransformationService; -import org.eclipse.set.feature.table.pt1.sslz.SslzTransformationService; -import org.eclipse.set.feature.table.pt1.ssvu.SsvuTransformationService; -import org.eclipse.set.feature.table.pt1.ssza.SszaTransformationService; -import org.eclipse.set.feature.table.pt1.sszs.SszsTransformationService; -import org.eclipse.set.feature.table.pt1.sszw.SszwTransformationService; -import org.eclipse.set.feature.table.pt1.sxxx.SxxxTransformationService; -import org.eclipse.set.model.planpro.PlanPro.PlanPro_Schnittstelle; +import org.eclipse.set.feature.table.pt1.test.utils.MockModelSession; import org.eclipse.set.ppmodel.extensions.PlanProSchnittstelleExtensions; import org.eclipse.set.ppmodel.extensions.container.MultiContainer_AttributeGroup; -import org.eclipse.set.ppmodel.extensions.utils.TableNameInfo; import org.eclipse.set.unittest.utils.AbstractToolboxTest; -import org.eclipse.set.utils.graph.AsSplitTopGraph; -import org.jgrapht.graph.WeightedPseudograph; -import org.mockito.MockedStatic; +import org.junit.jupiter.api.BeforeAll; import org.mockito.Mockito; +import org.osgi.service.event.Event; +import org.osgi.service.event.EventAdmin; +import org.osgi.service.event.EventConstants; +import org.osgi.test.common.annotation.InjectService; /** * Abstract class for test transformation of Pt1 tables @@ -83,85 +46,35 @@ * @author Truong */ public class Pt1TableTest extends AbstractToolboxTest { - private static EnumTranslation mockEnumTranlsation(final Object value) { - return new EnumTranslation() { - - @Override - public String getAlternative() { - return value.toString(); - } - - @Override - public String getKeyBasis() { - return value.toString(); - } - - @Override - public String getPresentation() { - return value.toString(); - } + protected String TEMPLATE_DIR = "../org.eclipse.set.feature/rootdir/data/export"; + protected String TEMPLATE_LOCAL_DIR = "./data/export"; - @Override - public String getSorting() { - return ""; - } - }; + @BeforeAll + void beforeAll() throws Exception { + copyResource(); } - protected static Field getSuperClassField(final Class clazz, - final String fieldName) { - Field result = null; - Class superClazz = clazz; - while (result == null && superClazz != null) { - try { - final Field declaredField = superClazz - .getDeclaredField(fieldName); - result = declaredField; - } catch (final Exception e) { - superClazz = superClazz.getSuperclass(); - continue; - } - } - return result; - } + protected IModelSession modelSession; - protected static void mockServiceFieldVariable( - final PlanPro2TableTransformationService service, - final Object fieldVariable) throws Exception { - for (final Field field : service.getClass().getDeclaredFields()) { - if (field.getType().isInstance(fieldVariable)) { - FieldUtils.writeField(field, service, fieldVariable, true); - } - } - } - - protected static void mockTableNameInfo( - final PlanPro2TableTransformationService service) { - final String packageName = service.getClass().getPackageName(); - String tableName = packageName - .substring(packageName.lastIndexOf(".") + 1); - if (tableName.equals("dm")) { - tableName = "sskp_dm"; + /** + * @param eventAdmin + * injection throw {@link InjectService} + */ + private void givenModelSession(final EventAdmin eventAdmin) { + if (planProSchnittstelle == null) { + modelSession = null; } - final TableNameInfo mockTableNameInfo = Mockito - .mock(TableNameInfo.class); - Mockito.doReturn(mockTableNameInfo).when(service).getTableNameInfo(); - Mockito.when(mockTableNameInfo.getShortName()).thenReturn(tableName); + final ToolboxFile mockToolboxFile = Mockito.mock(ToolboxFile.class); + when(mockToolboxFile.getRole()).thenReturn(ToolboxFileRole.SESSION); + modelSession = new MockModelSession(planProSchnittstelle, + mockToolboxFile); + final Dictionary d = new Hashtable<>(2); + d.put(EventConstants.EVENT_TOPIC, Events.MODEL_CHANGED); + d.put(IEventBroker.DATA, modelSession); + eventAdmin.sendEvent(new Event(Events.MODEL_CHANGED, d)); } - private BankServiceImpl bankService; - private CacheService cacheService; - - private GeoKanteGeometryService geometryService; - - private Messages messages; - - private EnumTranslationService mockEnumTranslation; - private TopologicalGraphServiceImpl topologicalGraphService; - - List transformationServices; - protected List getLSTContainer() { return List .of(ContainerType.FINAL, ContainerType.INITIAL, @@ -173,172 +86,45 @@ protected List getLSTContainer() { .toList(); } - /** - * IMPROVE: use OSGi service unit test to inject these service - */ - protected void givenTransformationService() { - transformationServices = List - .of(new SsbbTransformationService(), - new SsitTransformationService(), - new SskaTransformationService(), - new SskfTransformationService(), - new SskgTransformationService(), - new SskoTransformationService(), - new SskpTransformationService(), - new SskpDmTransformationService(), - new SsksTransformationService(), - new SsktTransformationService(), - new SskwTransformationService(), - new SskxTransformationService(), - new SskzTransformationService(), - new SslaTransformationService(), - new SslbTransformationService(), - new SsldTransformationService(), - new SslfTransformationService(), - new SsliTransformationService(), - new SslnTransformationService(), - new SslrTransformationService(), - new SslsTransformationService(), - new SslwTransformationService(), - new SslzTransformationService(), - new SsvuTransformationService(), - new SszaTransformationService(), - new SszsTransformationService(), - new SszwTransformationService(), - new SxxxTransformationService()) - .stream() - .map(Mockito::spy) - .toList(); + protected void setupTransformationService(final EventAdmin eventAdmin) + throws Exception { + givenModelSession(eventAdmin); } - protected void setupBankingService() throws Exception { - if (topologicalGraphService == null) { - setupTopGraphService(); - } - bankService = new BankServiceImpl(); - final Method declaredMethod = bankService.getClass() - .getDeclaredMethod("addBankingForContainer", - BankingInformationSession.class, - MultiContainer_AttributeGroup.class); - declaredMethod.setAccessible(true); - final BankingInformationSession bankingInformationSession = new BankingInformationSession(); - for (final MultiContainer_AttributeGroup container : getLSTContainer()) { - declaredMethod.invoke(bankService, bankingInformationSession, - container); - } - } - - protected void setupEnumTranslationService() { - mockEnumTranslation = Mockito.mock(EnumTranslationService.class); - Mockito.when(mockEnumTranslation.translate(any(), any())) - .thenAnswer(invocation -> { - return mockEnumTranlsation(invocation.getArguments()[1]); - }); - Mockito.when(mockEnumTranslation.translate(anyBoolean())) - .thenAnswer(invocation -> mockEnumTranlsation( - invocation.getArgument(0))); - Mockito.when(mockEnumTranslation.translate(any(Enumerator.class))) - .thenAnswer(invocation -> mockEnumTranlsation( - invocation.getArgument(0))); - Mockito.when(mockEnumTranslation.translate(any(Translateable.class))) - .thenAnswer(invocation -> mockEnumTranlsation( - invocation.getArgument(0))); - } - - protected void setupGeometryService() throws Exception { - geometryService = new GeoKanteGeometryServiceImpl(); - final Map sessionesData = new HashMap<>(); - - final GeoKanteGeometrySessionData geometrySessionData = new GeoKanteGeometrySessionData(); - sessionesData.put(planProSchnittstelle, geometrySessionData); - - FieldUtils.writeField(geometryService, "sessionesData", sessionesData, - true); - - final Method declaredMethod = geometryService.getClass() - .getDeclaredMethod("findGeoKanteGeometry", - GeoKanteGeometrySessionData.class, - MultiContainer_AttributeGroup.class); - declaredMethod.setAccessible(true); - - declaredMethod.invoke(geometryService, geometrySessionData, - PlanProSchnittstelleExtensions.getContainer( - planProSchnittstelle, ContainerType.INITIAL)); - declaredMethod.invoke(geometryService, geometrySessionData, - PlanProSchnittstelleExtensions.getContainer( - planProSchnittstelle, ContainerType.FINAL)); - FieldUtils.writeField(geometryService, "isProcessComplete", - Boolean.TRUE, true); - - } - - protected void setupMessages() throws Exception { - messages = new Messages(); - for (final Field field : messages.getClass().getDeclaredFields()) { - FieldUtils.writeField(field, messages, field.getName()); - } - - } - - protected void setupMockServices( - final MockedStatic mockServices) { - mockServices.when(Services::getCacheService).thenReturn(cacheService); - mockServices.when(Services::getTopGraphService) - .thenReturn(topologicalGraphService); - mockServices.when(Services::getEnumTranslationService) - .thenReturn(mockEnumTranslation); - mockServices.when(Services::getGeometryService) - .thenReturn(geometryService); - } - - protected void setupTopGraphService() throws Exception { - if (topologicalGraphService != null) { - return; + protected void copyResource() throws Exception { + Path source = Path.of(TEMPLATE_DIR); + Path target = Path.of(TEMPLATE_LOCAL_DIR); + if (!Files.exists(Path.of(TEMPLATE_LOCAL_DIR))) { + Files.createDirectories(Path.of(TEMPLATE_LOCAL_DIR)); + } else { + try (Stream stream = Files.walk(target)) { + stream.filter(path -> !path.equals(target)) + .sorted(Comparator.reverseOrder()) + .forEach(path -> { + try { + Files.delete(path); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } } - topologicalGraphService = new TopologicalGraphServiceImpl(); - final Method declaredMethod = topologicalGraphService.getClass() - .getDeclaredMethod("addContainerToGraph", - WeightedPseudograph.class, - MultiContainer_AttributeGroup.class); - declaredMethod.setAccessible(true); - final WeightedPseudograph weightedPseudograph = new WeightedPseudograph<>( - AsSplitTopGraph.Edge.class); - final List containers = getLSTContainer(); - for (final MultiContainer_AttributeGroup contanier : containers) { - declaredMethod.invoke(topologicalGraphService, weightedPseudograph, - contanier); + try (Stream stream = Files.walk(source)) { + stream.forEach(path -> { + try { + Path relative = source.relativize(path); + Path targetPath = target.resolve(relative); + if (Files.isDirectory(path)) { + Files.createDirectories(targetPath); + } else { + Files.copy(path, targetPath, + StandardCopyOption.REPLACE_EXISTING, + StandardCopyOption.COPY_ATTRIBUTES); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + }); } - final Map> topGraphBaseMap = new HashMap<>(); - topGraphBaseMap.put(planProSchnittstelle, weightedPseudograph); - FieldUtils.writeField(topologicalGraphService, "topGraphBaseMap", - topGraphBaseMap, true); } - - protected void setupTransformationService() throws Exception { - setupTopGraphService(); - setupBankingService(); - setupEnumTranslationService(); - setupMessages(); - setupGeometryService(); - givenCacheService(); - givenTransformationService(); - for (final AbstractPlanPro2TableTransformationService impl : transformationServices) { - mockServiceFieldVariable(impl, topologicalGraphService); - mockServiceFieldVariable(impl, messages); - mockServiceFieldVariable(impl, bankService); - mockServiceFieldVariable(impl, mockEnumTranslation); - mockTableNameInfo(impl); - } - } - - void givenCacheService() { - cacheService = new CacheServiceImpl() { - @Override - protected ToolboxFileRole getSessionRole( - final PlanPro_Schnittstelle schnittStelle) { - return ToolboxFileRole.SESSION; - } - }; - } - -} \ No newline at end of file +} diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/Pt1TableTransformationTest.java b/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/Pt1TableTransformationTest.java index e057c9298b..4dd8e2aa25 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/Pt1TableTransformationTest.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/Pt1TableTransformationTest.java @@ -10,33 +10,73 @@ */ package org.eclipse.set.feature.table.pt1.test; -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.*; +import java.io.File; +import java.nio.file.Path; import java.util.Comparator; +import java.util.List; import java.util.stream.Stream; +import org.dom4j.Document; +import org.dom4j.io.SAXReader; import org.eclipse.emf.common.util.ECollections; import org.eclipse.set.basis.ToolboxProperties; +import org.eclipse.set.basis.constants.ExportType; import org.eclipse.set.basis.constants.TableType; -import org.eclipse.set.core.services.Services; -import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableTransformationService; +import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; +import org.eclipse.set.feature.table.PlanPro2TableTransformationService; +import org.eclipse.set.feature.table.pt1.test.utils.CustomDOMReader; +import org.eclipse.set.feature.table.pt1.test.utils.CustomNodeComparator; import org.eclipse.set.model.tablemodel.RowGroup; import org.eclipse.set.model.tablemodel.Table; import org.eclipse.set.ppmodel.extensions.MultiContainer_AttributeGroupExtensions; import org.eclipse.set.ppmodel.extensions.container.MultiContainer_AttributeGroup; +import org.eclipse.set.utils.export.xsl.TransformTable; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; +import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import org.mockito.MockedStatic; -import org.mockito.Mockito; +import org.osgi.service.event.EventAdmin; +import org.osgi.test.common.annotation.InjectService; +import org.osgi.test.junit5.service.ServiceExtension; /** * Test Pt1 Table transformation * * @author Truong */ +@TestInstance(Lifecycle.PER_CLASS) +@ExtendWith(ServiceExtension.class) class Pt1TableTransformationTest extends Pt1TableTest { + private static List Ssks_Pagebreak_Column_Index = List.of("49", + "76"); + private static String XSL_DIR = "res/xsl"; + + private static boolean compareXSLDoc(final Document actual, + final Document expect) { + final CustomNodeComparator nodeComparator = new CustomNodeComparator(); + return nodeComparator.compare(actual, expect) == 0; + } + + private static Document loadReferenceXSLDoc(final String shortcut) + throws Exception { + final String xslName = shortcut.toLowerCase() + "-fop.xsl"; + final File file = Path.of(XSL_DIR, xslName).toFile(); + if (!file.exists() || !file.isFile()) { + throw new IllegalArgumentException( + "File Not found: " + file.toString()); + } + + final SAXReader saxReader = new SAXReader(); + saxReader.setMergeAdjacentText(true); + return saxReader.read(file); + } + /** * @return the reference files */ @@ -45,37 +85,72 @@ protected static Stream getReferenceFiles() { Arguments.of(SINGLE_STATE_PLAN, "zustandpphn")); } + @InjectService + EventAdmin eventAdmin; + + @InjectService + List transformationServices; + + @InjectService + EnumTranslationService translationService; + + @Test + void testPDFExportStyle() throws Exception { + givenPlanProFile(PPHN_1_10_0_3_20220517_PLANPRO); + setupTransformationService(eventAdmin); + for (final PlanPro2TableTransformationService service : transformationServices) { + final TransformTable transformTable = new TransformTable( + ExportType.INVENTORY_RECORDS, + service.getTableNameInfo().getShortName().toLowerCase(), + TableType.DIFF, translationService); + final Document xslDoc = assertDoesNotThrow(() -> { + final org.w3c.dom.Document doc = service.getTableNameInfo() + .getShortName() + .equalsIgnoreCase("ssks") + ? transformTable + .transform(Ssks_Pagebreak_Column_Index) + : transformTable.transform(); + final CustomDOMReader reader = new CustomDOMReader(); + return reader.read(doc); + }, "Error by create XSL Doc: " + + service.getClass().getPackageName()); + assertNotNull(xslDoc, "Error by create XSL Doc: " + + service.getClass().getPackageName()); + final Document expect = loadReferenceXSLDoc( + service.getTableNameInfo().getShortName()); + assertTrue(compareXSLDoc(xslDoc, expect), + "The XSL isn't equal expected: " + + service.getTableNameInfo().getShortName()); + } + } + @ParameterizedTest @MethodSource("getReferenceFiles") void testTransformator(final String file) throws Exception { givenPlanProFile(file); - setupTransformationService(); + setupTransformationService(eventAdmin); System.setProperty(ToolboxProperties.DEVELOPMENT_MODE, Boolean.FALSE.toString()); - try (final MockedStatic mockServices = Mockito - .mockStatic(Services.class);) { - setupMockServices(mockServices); - for (final AbstractPlanPro2TableTransformationService transformationService : transformationServices) { - for (final MultiContainer_AttributeGroup container : getLSTContainer()) { - // Test transformation table - final Table transformedTable = assertDoesNotThrow( - () -> transformationService.transform(container), - () -> "Error by transformation Table: " - + transformationService.getClass() - .getPackageName()); - final TableType defaultTableType = MultiContainer_AttributeGroupExtensions - .getContainerType(container) - .getDefaultTableType(); - // Test sorting table - assertDoesNotThrow(() -> { - final Comparator comparator = transformationService - .getRowGroupComparator(defaultTableType); - ECollections.sort(transformedTable.getTablecontent() - .getRowgroups(), comparator); - }, () -> "Error by sort table: " - + transformationService.getClass() - .getPackageName()); - } + for (final PlanPro2TableTransformationService transformationService : transformationServices) { + for (final MultiContainer_AttributeGroup container : getLSTContainer()) { + // Test transformation table + final Table transformedTable = assertDoesNotThrow( + () -> transformationService.transform(container), + () -> "Error by transformation Table: " + + transformationService.getClass() + .getPackageName()); + final TableType defaultTableType = MultiContainer_AttributeGroupExtensions + .getContainerType(container) + .getDefaultTableType(); + // Test sorting table + assertDoesNotThrow(() -> { + final Comparator comparator = transformationService + .getRowGroupComparator(defaultTableType); + ECollections.sort( + transformedTable.getTablecontent().getRowgroups(), + comparator); + }, () -> "Error by sort table: " + + transformationService.getClass().getPackageName()); } } } diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/utils/CustomDOMReader.java b/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/utils/CustomDOMReader.java new file mode 100644 index 0000000000..0b7ca3dcbd --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/utils/CustomDOMReader.java @@ -0,0 +1,92 @@ +/** + * Copyright (c) 2026 DB InfraGO AG and others + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.eclipse.set.feature.table.pt1.test.utils; + +import org.dom4j.Branch; +import org.dom4j.io.DOMReader; +import org.w3c.dom.Document; +import org.w3c.dom.Node; + +/** + * Individual {@link DOMReader} with tag namespace identification + */ +public class CustomDOMReader extends DOMReader { + private static record TagNameWithNS(String prefix, String uri, + String tagName) { + } + + /** + * XSL namespace uri + */ + public static final String XSL_NS_URI = "http://www.w3.org/1999/XSL/Transform"; + + /** + * FO namepsace uri + */ + public static final String FO_NS_URI = "http://www.w3.org/1999/XSL/Format"; + + /** + * FOX namespace uri + */ + public static final String FOX_NS_URI = "http://xmlgraphics.apache.org/fop/extensions"; + + public CustomDOMReader() { + super(); + } + + @Override + protected void readElement(org.w3c.dom.Node node, Branch current) { + String nodeName = node.getNodeName(); + TagNameWithNS nodeNSAndName = extractNS(nodeName); + if (nodeNSAndName.prefix() == null) { + super.readElement(node, current); + return; + } + Document ownerDocument = node.getOwnerDocument(); + Node renameNode = ownerDocument.renameNode(node, nodeNSAndName.uri(), + nodeNSAndName.tagName()); + renameNode.setPrefix(nodeNSAndName.prefix); + setAttributesNS(renameNode); + super.readElement(renameNode, current); + + } + + private void setAttributesNS(org.w3c.dom.Node node) { + org.w3c.dom.NamedNodeMap attributeList = node.getAttributes(); + if (attributeList == null) { + return; + } + Document ownerDocument = node.getOwnerDocument(); + for (int i = 0; i < attributeList.getLength(); i++) { + org.w3c.dom.Node attribute = attributeList.item(i); + TagNameWithNS ns = extractNS(attribute.getNodeName()); + if (ns.prefix() == null) { + continue; + } + Node attrWithNS = ownerDocument.renameNode(attribute, ns.uri, + ns.tagName); + attrWithNS.setPrefix(ns.prefix()); + } + } + + private TagNameWithNS extractNS(String nodeName) { + String[] split = nodeName.split(":"); + if (split.length == 2) { + return switch (split[0].toLowerCase()) { + case "fo" -> new TagNameWithNS("fo", FO_NS_URI, split[1]); + case "xsl" -> new TagNameWithNS("xsl", XSL_NS_URI, split[1]); + case "fox" -> new TagNameWithNS("fox", FOX_NS_URI, split[1]); + default -> new TagNameWithNS(null, null, nodeName); + }; + } + return new TagNameWithNS(null, null, nodeName); + } +} diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/utils/CustomNodeComparator.java b/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/utils/CustomNodeComparator.java new file mode 100644 index 0000000000..51331c1e00 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/utils/CustomNodeComparator.java @@ -0,0 +1,116 @@ +/** + * Copyright (c) 2026 DB InfraGO AG and others + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.eclipse.set.feature.table.pt1.test.utils; + +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; + +import org.dom4j.Attribute; +import org.dom4j.Branch; +import org.dom4j.Element; +import org.dom4j.Node; +import org.dom4j.QName; +import org.dom4j.util.NodeComparator; + +/** + * Custom {@link NodeComparator} with ignore the order of the node + * + * @author truong + */ +public class CustomNodeComparator extends NodeComparator { + /** + * Constructor + */ + public CustomNodeComparator() { + super(); + } + + @Override + public int compare(final Element n1, final Element n2) { + int answer = compare(n1.getQName(), n2.getQName()); + + if (answer == 0) { + // lets compare attributes + final int c1 = n1.attributeCount(); + final int c2 = n2.attributeCount(); + answer = c1 - c2; + + if (answer == 0) { + for (int i = 0; i < c1; i++) { + final Attribute a1 = n1.attribute(i); + final Attribute a2 = findRelevantAttribute(n2, + a1.getQName()); + if (a2 == null) { + return -1; + } + answer = compare(a1, a2); + + if (answer != 0) { + return answer; + } + } + + answer = compareContent(n1, n2); + } + } + + return answer; + } + + @Override + public int compareContent(final Branch b1, final Branch b2) { + final int c1 = b1.nodeCount(); + final int c2 = b2.nodeCount(); + int answer = c1 - c2; + final Set alreadyCompare = new HashSet<>(); + if (answer == 0) { + for (int i = 0; i < c1; i++) { + final Node n1 = b1.node(i); + final Node n2 = b2.node(i); + answer = compare(n1, n2); + if (answer != 0) { + final boolean isSame = b2.content() + .stream() + .filter(n -> n != n2 && !alreadyCompare.contains(n)) + .anyMatch(node -> { + if (compare(n1, node) == 0) { + alreadyCompare.add(node); + return true; + } + return false; + }); + if (isSame) { + answer = 0; + } + } + + if (answer != 0) { + break; + } + } + } + + return answer; + } + + protected Attribute findRelevantAttribute(final Element e, + final QName qName) { + final Iterator attributeIterator = e.attributeIterator(); + while (attributeIterator.hasNext()) { + final Attribute next = attributeIterator.next(); + if (compare(next.getQName(), qName) == 0) { + return next; + } + } + return null; + } +} diff --git a/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/utils/MockModelSession.java b/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/utils/MockModelSession.java new file mode 100644 index 0000000000..407e9ef1f0 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.pt1.test/src/org/eclipse/set/feature/table/pt1/test/utils/MockModelSession.java @@ -0,0 +1,258 @@ +/** + * Copyright (c) 2026 DB InfraGO AG and others + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + * + */ +package org.eclipse.set.feature.table.pt1.test.utils; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.function.Function; +import java.util.function.Predicate; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.set.basis.IModelSession; +import org.eclipse.set.basis.Pair; +import org.eclipse.set.basis.ToolboxPaths; +import org.eclipse.set.basis.constants.ContainerType; +import org.eclipse.set.basis.constants.PlanProFileNature; +import org.eclipse.set.basis.constants.TableType; +import org.eclipse.set.basis.constants.ValidationResult; +import org.eclipse.set.basis.constants.ValidationResult.FileValidateState; +import org.eclipse.set.basis.constants.ValidationResult.Outcome; +import org.eclipse.set.basis.exceptions.UserAbortion; +import org.eclipse.set.basis.files.ToolboxFile; +import org.eclipse.set.model.planpro.Layoutinformationen.PlanPro_Layoutinfo; +import org.eclipse.set.model.planpro.PlanPro.PlanPro_Schnittstelle; +import org.eclipse.set.model.temporaryintegration.TemporaryIntegration; +import org.eclipse.set.ppmodel.extensions.container.MultiContainer_AttributeGroup; +import org.eclipse.swt.widgets.Shell; + +/** + * + */ +public class MockModelSession implements IModelSession { + PlanPro_Schnittstelle schnittstelle; + ToolboxFile toolboxfile; + + public MockModelSession(PlanPro_Schnittstelle schnittstelle, + ToolboxFile toolboxfile) { + this.schnittstelle = schnittstelle; + this.toolboxfile = toolboxfile; + } + + @Override + public void addSymbolRotation(double rotation) { + throw new UnsupportedOperationException(); + } + + @Override + public void cancelMergeMode(Predicate confirmDeletion) + throws IOException, UserAbortion { + throw new UnsupportedOperationException(); + } + + @Override + public void cleanUp() { + throw new UnsupportedOperationException(); + } + + @Override + public void close() { + throw new UnsupportedOperationException(); + } + + @Override + public void discardChanges() { + throw new UnsupportedOperationException(); + } + + @Override + public void exitMergeMode(Shell shell) throws IOException, UserAbortion { + throw new UnsupportedOperationException(); + } + + @Override + public MultiContainer_AttributeGroup getContainer(ContainerType container) { + throw new UnsupportedOperationException(); + } + + @Override + public String getGuid() { + throw new UnsupportedOperationException(); + } + + @Override + public Shell getMainWindow() { + throw new UnsupportedOperationException(); + } + + @Override + public Set getModels() { + throw new UnsupportedOperationException(); + } + + @Override + public PlanProFileNature getNature() { + throw new UnsupportedOperationException(); + } + + @Override + public PlanPro_Schnittstelle getPlanProSchnittstelle() { + return schnittstelle; + } + + @Override + public PlanPro_Layoutinfo getLayoutInformation() { + throw new UnsupportedOperationException(); + } + + @Override + public double getSymbolRotation() { + throw new UnsupportedOperationException(); + } + + @Override + public TableType getTableType() { + throw new UnsupportedOperationException(); + } + + @Override + public List> getSelectedControlAreas() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isPlanningAreaIgnored() { + throw new UnsupportedOperationException(); + } + + @Override + public Path getTempDir() { + throw new UnsupportedOperationException(); + } + + @Override + public ToolboxFile getToolboxFile() { + return toolboxfile; + } + + @Override + public ToolboxPaths getToolboxPaths() { + throw new UnsupportedOperationException(); + } + + @Override + public ValidationResult getValidationResult( + Class sourceClass) { + throw new UnsupportedOperationException(); + } + + @Override + public Outcome getValidationsOutcome( + Function outcome) { + throw new UnsupportedOperationException(); + } + + @Override + public FileValidateState getFileValidateState() { + throw new UnsupportedOperationException(); + } + + @Override + public void init() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isDirty() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isLoaded() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isMergeMode() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isNewProject() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isReportSavedDialogSuppressed(int kind) { + throw new UnsupportedOperationException(); + } + + @Override + public void refreshValidation() { + throw new UnsupportedOperationException(); + } + + @Override + public void revert() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean save(Shell shell) throws UserAbortion { + throw new UnsupportedOperationException(); + } + + @Override + public boolean save(Shell shell, boolean askUser) throws UserAbortion { + throw new UnsupportedOperationException(); + } + + @Override + public boolean saveNew(Shell shell) throws UserAbortion { + throw new UnsupportedOperationException(); + } + + @Override + public void setReportSavedDialogSuppressed(int kind, boolean value) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isSingleState() { + throw new UnsupportedOperationException(); + } + + @Override + public SaveFixResult getSaveFixResult() { + throw new UnsupportedOperationException(); + } + + @Override + public EditingDomain getEditingDomain() { + throw new UnsupportedOperationException(); + } + + @Override + public Optional getTemporaryIntegration() { + throw new UnsupportedOperationException(); + } + + @Override + public void switchToMergeMode(TemporaryIntegration newTemporaryIntegration, + String mergeDir, Shell shell, ToolboxFile temporaryToolboxFile) + throws IOException, UserAbortion { + throw new UnsupportedOperationException(); + } + +} diff --git a/java/bundles/org.eclipse.set.feature.table.test/pom.xml b/java/bundles/org.eclipse.set.feature.table.test/pom.xml new file mode 100644 index 0000000000..7058833ee3 --- /dev/null +++ b/java/bundles/org.eclipse.set.feature.table.test/pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + org.eclipse.set.feature.table.test + eclipse-test-plugin + + + ../../ + org.eclipse.set + org.eclipse.set.releng.parent + 2.6.0-SNAPSHOT + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + + properties + + + + + + org.eclipse.tycho + tycho-surefire-plugin + ${tycho-version} + + -javaagent:${org.mockito:mockito-core:jar} + + + + + \ No newline at end of file diff --git a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/internal/TableServiceContextFunction.java b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/internal/TableServiceContextFunction.java index f434a5d2c7..19a91cc2a9 100644 --- a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/internal/TableServiceContextFunction.java +++ b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/internal/TableServiceContextFunction.java @@ -208,7 +208,8 @@ public void handleEvent(final Event event) { } } - if (event.getTopic().equals(Events.CLOSE_SESSION)) { + if (event.getTopic().equals(Events.CLOSE_SESSION) + && tableService != null) { final ToolboxFileRole closeSession = (ToolboxFileRole) event .getProperty(IEventBroker.DATA); final IModelSession loadedSession = sessionService @@ -218,7 +219,8 @@ public void handleEvent(final Event event) { tableService.clearInstance(); } - if (event.getTopic().equals(TableDataChangeEvent.TOPIC)) { + if (event.getTopic().equals(TableDataChangeEvent.TOPIC) + && tableService != null) { final Object data = event.getProperty(IEventBroker.DATA); if (data instanceof final TableDataChangeEvent changedEvent) { if (!changedEvent.getProperties().isEmpty() && changedEvent diff --git a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/multipage_layout.xsl b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/multipage_layout.xsl index 57842c8452..fd8bb5c340 100644 --- a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/multipage_layout.xsl +++ b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/multipage_layout.xsl @@ -1,7 +1,6 @@ - + diff --git a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/table_template.xsl b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/table_template.xsl index 06ca200c36..637e711bfe 100644 --- a/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/table_template.xsl +++ b/java/bundles/org.eclipse.set.feature/rootdir/data/export/pdf/table_template.xsl @@ -52,8 +52,7 @@ http://www.eclipse.org/legal/epl-v20.html - + diff --git a/java/bundles/org.eclipse.set.rcp.compatibility/META-INF/MANIFEST.MF b/java/bundles/org.eclipse.set.rcp.compatibility/META-INF/MANIFEST.MF index 2499852081..fe4bd522ee 100644 --- a/java/bundles/org.eclipse.set.rcp.compatibility/META-INF/MANIFEST.MF +++ b/java/bundles/org.eclipse.set.rcp.compatibility/META-INF/MANIFEST.MF @@ -5,8 +5,8 @@ Bundle-SymbolicName: org.eclipse.set.rcp.compatibility;singleton:=true Bundle-Version: 2.6.0.qualifier Automatic-Module-Name: org.eclipse.set.rcp.compatibility Bundle-RequiredExecutionEnvironment: JavaSE-21 -Require-Bundle: org.eclipse.swt;bundle-version="3.107.0";visibility:=reexport, - org.eclipse.jface;bundle-version="3.14.0";visibility:=reexport, - org.eclipse.jface.databinding;bundle-version="1.8.200";visibility:=reexport +Require-Bundle: org.eclipse.swt;visibility:=reexport, + org.eclipse.jface;visibility:=reexport, + org.eclipse.jface.databinding;visibility:=reexport Bundle-Vendor: Eclipse Signalling Engineering Toolbox Bundle-ActivationPolicy: lazy diff --git a/java/bundles/org.eclipse.set.releng.target/.polyglot.org.eclipse.set.releng.target.target b/java/bundles/org.eclipse.set.releng.target/.polyglot.org.eclipse.set.releng.target.target deleted file mode 100644 index 520c79099a..0000000000 --- a/java/bundles/org.eclipse.set.releng.target/.polyglot.org.eclipse.set.releng.target.target +++ /dev/null @@ -1,15 +0,0 @@ - - - 4.0.0 - - org.eclipse.set - org.eclipse.set.releng.parent - 2.6.0-SNAPSHOT - ..\..\pom.xml - - org.eclipse.set.releng.target - 2.6.0-SNAPSHOT - eclipse-target-definition - [target] org.eclipse.set.releng.target - diff --git a/java/bundles/org.eclipse.set.releng.target/org.eclipse.set.releng.target.target b/java/bundles/org.eclipse.set.releng.target/org.eclipse.set.releng.target.target index d0679c04c0..18d957ef13 100644 --- a/java/bundles/org.eclipse.set.releng.target/org.eclipse.set.releng.target.target +++ b/java/bundles/org.eclipse.set.releng.target/org.eclipse.set.releng.target.target @@ -486,5 +486,15 @@ DynamicImport-Package: * + + + + org.osgi + org.osgi.test.junit5 + 1.3.0 + jar + + + - \ No newline at end of file + diff --git a/java/bundles/org.eclipse.set.swtbot/SWTBot.launch b/java/bundles/org.eclipse.set.swtbot/SWTBot.launch index f10724a511..1f0c53f93e 100644 --- a/java/bundles/org.eclipse.set.swtbot/SWTBot.launch +++ b/java/bundles/org.eclipse.set.swtbot/SWTBot.launch @@ -438,9 +438,6 @@ - - - @@ -524,6 +521,9 @@ + + + @@ -537,6 +537,7 @@ + diff --git a/java/bundles/org.eclipse.set.utils/src/org/eclipse/set/utils/export/xsl/TransformTableBody.java b/java/bundles/org.eclipse.set.utils/src/org/eclipse/set/utils/export/xsl/TransformTableBody.java index 5711990e41..7aef24f20a 100644 --- a/java/bundles/org.eclipse.set.utils/src/org/eclipse/set/utils/export/xsl/TransformTableBody.java +++ b/java/bundles/org.eclipse.set.utils/src/org/eclipse/set/utils/export/xsl/TransformTableBody.java @@ -10,7 +10,8 @@ */ package org.eclipse.set.utils.export.xsl; -import static org.eclipse.set.utils.excel.ExcelWorkbookExtension.*; +import static org.eclipse.set.utils.excel.ExcelWorkbookExtension.getHeaderLastColumnIndex; +import static org.eclipse.set.utils.excel.ExcelWorkbookExtension.getHeaderLastRowIndex; import static org.eclipse.set.utils.export.xsl.TransformStyle.setExcelCellBorderStyle; import static org.eclipse.set.utils.export.xsl.TransformStyle.transformBorderStyle; import static org.eclipse.set.utils.export.xsl.XMLDocumentExtensions.createXMLElementWithAttr; @@ -28,6 +29,7 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; +import java.util.function.BiFunction; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -101,8 +103,26 @@ private Set> groupCellByStyle(final Set pageBreakAts) { throw new RuntimeException( "Missing first data row. Is the printing area configured correctly?"); //$NON-NLS-1$ } - getFirstDataRow(sheet).forEach(cell -> { - final int index = cell.getColumnIndex(); + final BiFunction getDataCell = (dataRow, + colIndex) -> { + final Cell cell = dataRow.getCell(colIndex); + if (cell != null) { + return cell; + } + if (parentGroupLastIndex.contains(colIndex.intValue()) + || pageBreakAts.contains(colIndex.intValue()) + || pageBreakAts.contains(colIndex.intValue())) { + return dataRow.createCell(colIndex.intValue()); + } + return null; + }; + for (int index = 0; index <= getHeaderLastColumnIndex(sheet); index++) { + final Cell cell = getDataCell.apply(firstDataRow, + Integer.valueOf(index)); + if (cell == null) { + continue; + } + if (parentGroupLastIndex.contains(index) || pageBreakAts.contains(index)) { setExcelCellBorderStyle(cell, BorderDirection.RIGHT, @@ -112,7 +132,6 @@ private Set> groupCellByStyle(final Set pageBreakAts) { setExcelCellBorderStyle(cell, BorderDirection.LEFT, BorderStyle.MEDIUM); } - if (!isDefaultStyle(cell.getCellStyle())) { Set sameStyleGroup = result.stream() .filter(cells -> cells.stream() @@ -128,14 +147,14 @@ private Set> groupCellByStyle(final Set pageBreakAts) { } sameStyleGroup.add(cell); } - }); + } return result; } @SuppressWarnings("boxing") private Set getColumnWithWideBorderRight() { - final Row headerRow = sheet.getRow(1); + final Row headerRow = sheet.getRow(getHeaderLastRowIndex(sheet)); final Set result = new HashSet<>(); // Start at 1 to skip empty column 0 for (var i = 1; i <= getHeaderLastColumnIndex(sheet); i++) { diff --git a/java/pom.xml b/java/pom.xml index 3181c2f77c..1c006f16b0 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -334,170 +334,6 @@ plugin-source - - feature-source - package - - feature-source - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -