From 4af4abb660ddf8ff06c406e874a3cd1229708cc1 Mon Sep 17 00:00:00 2001 From: Quang Truong Date: Wed, 17 Sep 2025 11:15:02 +0200 Subject: [PATCH 1/2] Visualtion Siteplan Cross --- .../feature/siteplan/TrackSwitchMetadata.java | 15 +- .../siteplan/transform/TrackSwitchLeg.xtend | 45 ++- .../transform/TrackSwitchTransformator.xtend | 46 ++- .../META-INF/MANIFEST.MF | 2 +- .../model/siteplan.ecore | 9 + .../model/siteplan.genmodel | 9 + .../set/model/siteplan/SiteplanPackage.java | 65 +++- .../set/model/siteplan/SwitchType.java | 310 ++++++++++++++++++ .../set/model/siteplan/TrackSwitch.java | 31 ++ .../siteplan/impl/SiteplanFactoryImpl.java | 30 ++ .../siteplan/impl/SiteplanPackageImpl.java | 42 +++ .../model/siteplan/impl/TrackSwitchImpl.java | 61 ++++ .../src/feature/TrackSwitchFeature.ts | 39 ++- web/siteplan/src/model/TrackSwitch.ts | 13 +- .../src/util/SVG/Draw/SvgDrawTrackSwitch.ts | 30 +- 15 files changed, 701 insertions(+), 46 deletions(-) create mode 100644 java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/SwitchType.java diff --git a/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/TrackSwitchMetadata.java b/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/TrackSwitchMetadata.java index 44c2aea5c4..3fdc72369d 100644 --- a/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/TrackSwitchMetadata.java +++ b/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/TrackSwitchMetadata.java @@ -58,8 +58,7 @@ public static TrackSwitchMetadata fromCSVLine(final String line) { } switch (entry.type) { - case ENUMW_KR_ART_DKW: - case ENUMW_KR_ART_EKW: + case ENUMW_KR_ART_DKW, ENUMW_KR_ART_EKW: // Crossing lengths are required entry.rightCrossing = new CrossingSide( Double.parseDouble( @@ -101,6 +100,14 @@ public static TrackSwitchMetadata fromCSVLine(final String line) { Double.parseDouble(columns[COLUMN_LENGTH_MAIN]), Double.parseDouble(columns[COLUMN_LENGTH_SIDE])); break; + case ENUMW_KR_ART_KR: + entry.leftCrossing = new CrossingSide( + columns[COLUMN_CROSSING_LEFT_MAIN], + columns[COLUMN_CROSSING_LEFT_SIDE]); + entry.rightCrossing = new CrossingSide( + columns[COLUMN_CROSSING_RIGHT_MAIN], + columns[COLUMN_CROSSING_RIGHT_SIDE]); + break; default: // Other types are not handled return null; @@ -144,6 +151,10 @@ private CrossingSide(final double mainLeg, final double sideLeg) { crossing = new LegLength(mainLeg, sideLeg); } + private CrossingSide(final String mainLeg, final String sideLeg) { + this(Double.parseDouble(mainLeg), Double.parseDouble(sideLeg)); + } + /** * Lengths of the crossing triangle May be null if not definied */ diff --git a/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/TrackSwitchLeg.xtend b/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/TrackSwitchLeg.xtend index 6d73112386..78cc101fd4 100644 --- a/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/TrackSwitchLeg.xtend +++ b/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/TrackSwitchLeg.xtend @@ -20,6 +20,7 @@ import org.eclipse.set.model.planpro.BasisTypen.ENUMWirkrichtung import org.eclipse.set.model.planpro.Geodaten.ENUMTOPAnschluss import org.eclipse.set.model.planpro.Geodaten.TOP_Kante import org.eclipse.set.model.planpro.Geodaten.TOP_Knoten +import org.eclipse.set.model.planpro.Weichen_und_Gleissperren.ENUMWKrArt import org.eclipse.set.model.planpro.Weichen_und_Gleissperren.W_Kr_Gsp_Komponente import org.eclipse.set.model.siteplan.Coordinate import org.eclipse.set.model.siteplan.Position @@ -27,6 +28,7 @@ import org.eclipse.set.model.siteplan.Position import static org.eclipse.set.model.planpro.Geodaten.ENUMTOPAnschluss.* import static extension org.eclipse.set.ppmodel.extensions.PunktObjektExtensions.* +import static extension org.eclipse.set.ppmodel.extensions.PunktObjektTopKanteExtensions.* import static extension org.eclipse.set.ppmodel.extensions.TopKanteExtensions.* import static extension org.eclipse.set.ppmodel.extensions.TopKnotenExtensions.* import static extension org.eclipse.set.ppmodel.extensions.WKrAnlageExtensions.* @@ -152,8 +154,9 @@ class TrackSwitchLeg { if (components.length == 1) { val component = components.head leg.topKnoten = component.topKnoten - if (leg.topKnoten === null || - leg.topKnoten.getTrackSwitchLegs.length - 1 < legIndex) { + if ((leg.topKnoten === null || + leg.topKnoten.getTrackSwitchLegs.length - 1 < legIndex) && + !isCrossType(component)) { return null; } leg.determineLegLength(component, metadata, legIndex) @@ -174,8 +177,11 @@ class TrackSwitchLeg { val trackSwitch = component.WKrGspElement.WKrAnlage val switchType = trackSwitch.WKrAnlageAllg.WKrArt.wert switch (switchType) { - case ENUMW_KR_ART_DKW, - case ENUMW_KR_ART_KR: { + case ENUMW_KR_ART_KR, + case ENUMW_KR_ART_FLACHKREUZUNG: { + determineCrossSwitchLegLength(component, metadata, legIndex) + } + case ENUMW_KR_ART_DKW: { topKante = component.crossingLeg if (metadata !== null) { length = BigDecimal.valueOf( @@ -210,9 +216,7 @@ class TrackSwitchLeg { topKnoten = anotherGspComponent.topKnoten length = anotherGspComponent.getEKWLegLength(metadata) topKante = anotherGspComponent.crossingLeg - } - } default: { topKante = topKnoten.getTrackSwitchLegs.get(legIndex) @@ -234,6 +238,35 @@ class TrackSwitchLeg { } } + private static def boolean isCrossType(W_Kr_Gsp_Komponente component) { + val anlage = component?.WKrGspElement?.WKrAnlage + val type = anlage?.WKrAnlageAllg?.WKrArt?.wert + return type === ENUMWKrArt.ENUMW_KR_ART_KR || + type === ENUMWKrArt.ENUMW_KR_ART_FLACHKREUZUNG + } + + private def determineCrossSwitchLegLength(W_Kr_Gsp_Komponente component, + TrackSwitchMetadata metadata, int index) { + val singlePoint = component.singlePoints.get(index) + if (singlePoint.wirkrichtung.wert === ENUMWirkrichtung.ENUM_WIRKRICHTUNG_GEGEN) { + topKnoten = singlePoint.topKante.TOPKnotenB + start = singlePoint.topKante.laenge - singlePoint.abstand.wert + } else { + start = singlePoint?.abstand?.wert + topKnoten = singlePoint?.topKante.TOPKnotenA + } + + topKante = singlePoint?.IDTOPKante?.value + if (metadata !== null) { + val crossingSide = singlePoint.wirkrichtung.wert == + ENUMWirkrichtung.ENUM_WIRKRICHTUNG_GEGEN ? metadata. + rightCrossing : metadata.leftCrossing + if (crossingSide !== null) { + length = BigDecimal.valueOf(crossingSide.crossing.mainLeg) + } + } + } + // The leg of a EKW switch is only to cross point between to switch private def BigDecimal getEKWLegLength(W_Kr_Gsp_Komponente component, TrackSwitchMetadata metadata) { diff --git a/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/TrackSwitchTransformator.xtend b/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/TrackSwitchTransformator.xtend index 293a4e9847..4b8de00864 100644 --- a/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/TrackSwitchTransformator.xtend +++ b/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/TrackSwitchTransformator.xtend @@ -44,6 +44,8 @@ import static extension org.eclipse.set.ppmodel.extensions.WKrAnlageExtensions.* import static extension org.eclipse.set.ppmodel.extensions.WKrGspElementExtensions.* import org.eclipse.set.basis.constants.ToolboxConstants import java.math.RoundingMode +import org.eclipse.set.model.siteplan.SwitchType +import org.eclipse.set.model.planpro.BasisTypen.ENUMWirkrichtung /** * Transforms a track switch from the PlanPro model to a siteplan TrackSwitch @@ -75,13 +77,14 @@ class TrackSwitchTransformator extends BaseTransformator { val result = SiteplanFactory.eINSTANCE.createTrackSwitch result.guid = trackswitch.identitaet.wert result.design = '''«trackswitch.WKrAnlageAllg.WKrArt.wert» «trackswitch.WKrAnlageAllg.WKrGrundform.wert»''' + val switchType = trackswitch.WKrAnlageAllg.WKrArt.wert val metadata = trackSwitchMetadataProvider.getTrackSwitchMetadata( - trackswitch.WKrAnlageAllg.WKrArt.wert, + switchType, trackswitch.WKrAnlageAllg.WKrGrundform.wert ) + result.switchType = switchType.transform val elements = trackswitch.WKrGspElemente - // Find the legs of the first element val firstElement = elements.head val components = firstElement.WKrGspKomponenten @@ -104,7 +107,9 @@ class TrackSwitchTransformator extends BaseTransformator { val secondComponents = secondElement.WKrGspKomponenten var legC = getLeg(secondComponents, metadata, 0) var legD = getLeg(secondComponents, metadata, 1) - if (legC.TOPKante === legA.TOPKante) { + if (legC.TOPKante === legA.TOPKante && + switchType !== ENUMWKrArt.ENUMW_KR_ART_KR && + switchType !== ENUMWKrArt.ENUMW_KR_ART_FLACHKREUZUNG) { val temp = legC legC = legD legD = temp @@ -118,16 +123,14 @@ class TrackSwitchTransformator extends BaseTransformator { result.components.add( transformElement(trackswitch, secondElement, legC, legD)) - // Add continuous segments: - if (trackswitch.WKrAnlageAllg.WKrArt.wert == - ENUMWKrArt.ENUMW_KR_ART_DKW) { + // Add continuous segments + if (switchType == ENUMWKrArt.ENUMW_KR_ART_DKW) { // DKW: // - start of legA <-> start of legC // - start of legB <-> start of legD result.continuousSegments.add(getContinousSegment(legA, legC)) result.continuousSegments.add(getContinousSegment(legB, legD)) - } else if (trackswitch.WKrAnlageAllg.WKrArt.wert == - ENUMWKrArt.ENUMW_KR_ART_EKW) { + } else if (switchType == ENUMWKrArt.ENUMW_KR_ART_EKW) { // EKW: (legA and legB / legC and legD start at the same point) // - start of legA <-> start of legC result.continuousSegments.add(getContinousSegment(legA, legC)) @@ -139,11 +142,11 @@ class TrackSwitchTransformator extends BaseTransformator { // Position the error somewhere on the first leg. recordError(trackswitch.identitaet?.wert, String.format(ERROR_NO_TRACK_SWITCH_METADATA, - trackswitch.WKrAnlageAllg?.WKrArt?.wert?.toString() ?: - "Keine W_Kr_Art", + switchType?.toString() ?: "Keine W_Kr_Art", trackswitch.WKrAnlageAllg?.WKrGrundform?.wert ?: "Keine W_Kr_Grundform"), - legA.getCoordinate(BigDecimal.ZERO, BigDecimal.TWO, geometryService, positionService)) + legA.getCoordinate(BigDecimal.ZERO, BigDecimal.TWO, + geometryService, positionService)) } result.addSiteplanElement( @@ -178,7 +181,6 @@ class TrackSwitchTransformator extends BaseTransformator { sideLeg.length.divide(BigDecimal.TWO, ToolboxConstants.ROUNDING_TO_PLACE, RoundingMode.HALF_UP), BigDecimal.ZERO, geometryService, positionService) - val pointDetector = components.get(0)?.zungenpaar?. zungenpruefkontaktAnzahl?.wert if (pointDetector !== null) @@ -187,8 +189,9 @@ class TrackSwitchTransformator extends BaseTransformator { result.operatingMode = transform( element.WKrGspElementAllg?.WKrGspStellart?.wert) result.preferredLocation = element.weicheElement?.weicheVorzugslage?. - wert === ENUMLinksRechts.ENUM_LINKS_RECHTS_LINKS ? LeftRight. - LEFT : LeftRight.RIGHT + wert === ENUMLinksRechts.ENUM_LINKS_RECHTS_LINKS + ? LeftRight.LEFT + : LeftRight.RIGHT return result } @@ -308,4 +311,19 @@ class TrackSwitchTransformator extends BaseTransformator { return TurnoutOperatingMode.UNDEFINED } } + + private def SwitchType transform(ENUMWKrArt type) { + return switch (type) { + case ENUMW_KR_ART_ABW, + case ENUMW_KR_ART_EW, + case ENUMW_KR_ART_IBW, + case ENUMW_KR_ART_KLOTHOIDENWEICHE, + case ENUMW_KR_ART_DW: SwitchType.SIMPLE + case ENUMW_KR_ART_DKW: SwitchType.DOPPLE_CROSS_SWITCH + case ENUMW_KR_ART_EKW: SwitchType.CROSS_SWITCH + case ENUMW_KR_ART_KR: SwitchType.SIMPLE_CROSS + case ENUMW_KR_ART_FLACHKREUZUNG: SwitchType.FLAT_CROSS + default: SwitchType.OTHER + } + } } diff --git a/java/bundles/org.eclipse.set.model.siteplan/META-INF/MANIFEST.MF b/java/bundles/org.eclipse.set.model.siteplan/META-INF/MANIFEST.MF index bf5b86a4fd..f6767330db 100644 --- a/java/bundles/org.eclipse.set.model.siteplan/META-INF/MANIFEST.MF +++ b/java/bundles/org.eclipse.set.model.siteplan/META-INF/MANIFEST.MF @@ -7,7 +7,7 @@ Bundle-Version: 2.5.0.qualifier Bundle-ClassPath: . Bundle-Vendor: %providerName Bundle-Localization: plugin -Bundle-RequiredExecutionEnvironment: JavaSE-21 +Bundle-RequiredExecutionEnvironment: JavaSE-17 Export-Package: org.eclipse.set.model.siteplan, org.eclipse.set.model.siteplan.impl, org.eclipse.set.model.siteplan.util diff --git a/java/bundles/org.eclipse.set.model.siteplan/model/siteplan.ecore b/java/bundles/org.eclipse.set.model.siteplan/model/siteplan.ecore index 1fe6312251..e92e7fbbc6 100644 --- a/java/bundles/org.eclipse.set.model.siteplan/model/siteplan.ecore +++ b/java/bundles/org.eclipse.set.model.siteplan/model/siteplan.ecore @@ -147,6 +147,7 @@ eType="#//TrackSwitchComponent" containment="true"/> + @@ -422,4 +423,12 @@ + + + + + + + + diff --git a/java/bundles/org.eclipse.set.model.siteplan/model/siteplan.genmodel b/java/bundles/org.eclipse.set.model.siteplan/model/siteplan.genmodel index e6d9227807..9be70cebbb 100644 --- a/java/bundles/org.eclipse.set.model.siteplan/model/siteplan.genmodel +++ b/java/bundles/org.eclipse.set.model.siteplan/model/siteplan.genmodel @@ -152,6 +152,14 @@ + + + + + + + + @@ -226,6 +234,7 @@ + diff --git a/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/SiteplanPackage.java b/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/SiteplanPackage.java index c890ac04f1..17be232762 100644 --- a/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/SiteplanPackage.java +++ b/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/SiteplanPackage.java @@ -953,6 +953,15 @@ public interface SiteplanPackage extends EPackage { */ int TRACK_SWITCH__CONTINUOUS_SEGMENTS = SITEPLAN_OBJECT_FEATURE_COUNT + 2; + /** + * The feature id for the 'Switch Type' attribute. + * + * @generated + * @ordered + */ + int TRACK_SWITCH__SWITCH_TYPE = SITEPLAN_OBJECT_FEATURE_COUNT + 3; + /** * The number of structural features of the 'Track Switch' class. * @@ -960,7 +969,7 @@ public interface SiteplanPackage extends EPackage { * @generated * @ordered */ - int TRACK_SWITCH_FEATURE_COUNT = SITEPLAN_OBJECT_FEATURE_COUNT + 3; + int TRACK_SWITCH_FEATURE_COUNT = SITEPLAN_OBJECT_FEATURE_COUNT + 4; /** * The number of operations of the 'Track Switch' class. + * + * @see org.eclipse.set.model.siteplan.SwitchType + * @see org.eclipse.set.model.siteplan.impl.SiteplanPackageImpl#getSwitchType() + * @generated + */ + int SWITCH_TYPE = 59; + /** * Returns the meta object for class * '{@link org.eclipse.set.model.siteplan.Siteplan Siteplan}'. + * + * @return the meta object for the attribute 'Switch Type'. + * @see org.eclipse.set.model.siteplan.TrackSwitch#getSwitchType() + * @see #getTrackSwitch() + * @generated + */ + EAttribute getTrackSwitch_SwitchType(); + /** * Returns the meta object for class * '{@link org.eclipse.set.model.siteplan.TrackSwitchComponent Track @@ -5185,6 +5217,17 @@ public interface SiteplanPackage extends EPackage { */ EEnum getLockKeyType(); + /** + * Returns the meta object for enum + * '{@link org.eclipse.set.model.siteplan.SwitchType Switch Type}'. + * + * + * @return the meta object for enum 'Switch Type'. + * @see org.eclipse.set.model.siteplan.SwitchType + * @generated + */ + EEnum getSwitchType(); + /** * Returns the factory that creates the instances of the model. @@ -5803,6 +5846,15 @@ interface Literals { EReference TRACK_SWITCH__CONTINUOUS_SEGMENTS = eINSTANCE .getTrackSwitch_ContinuousSegments(); + /** + * The meta object literal for the 'Switch Type' + * attribute feature. + * + * @generated + */ + EAttribute TRACK_SWITCH__SWITCH_TYPE = eINSTANCE + .getTrackSwitch_SwitchType(); + /** * The meta object literal for the * '{@link org.eclipse.set.model.siteplan.impl.TrackSwitchComponentImpl @@ -6987,6 +7039,17 @@ interface Literals { */ EEnum LOCK_KEY_TYPE = eINSTANCE.getLockKeyType(); + /** + * The meta object literal for the + * '{@link org.eclipse.set.model.siteplan.SwitchType Switch + * Type}' enum. + * + * @see org.eclipse.set.model.siteplan.SwitchType + * @see org.eclipse.set.model.siteplan.impl.SiteplanPackageImpl#getSwitchType() + * @generated + */ + EEnum SWITCH_TYPE = eINSTANCE.getSwitchType(); + } } // SiteplanPackage diff --git a/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/SwitchType.java b/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/SwitchType.java new file mode 100644 index 0000000000..1cb8d4efd1 --- /dev/null +++ b/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/SwitchType.java @@ -0,0 +1,310 @@ +/** + * Copyright (c) 2021 DB Netz AG and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v20.html + */ +package org.eclipse.set.model.siteplan; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.eclipse.emf.common.util.Enumerator; + +/** + * A representation of the literals of the enumeration + * 'Switch Type', and utility methods for working with them. + * + * + * @see org.eclipse.set.model.siteplan.SiteplanPackage#getSwitchType() + * @model + * @generated + */ +public enum SwitchType implements Enumerator { + /** + * The 'Simple' literal object. + * + * @see #SIMPLE_VALUE + * @generated + * @ordered + */ + SIMPLE(0, "Simple", "Simple"), + + /** + * The 'Cross Switch' literal object. + * + * @see #CROSS_SWITCH_VALUE + * @generated + * @ordered + */ + CROSS_SWITCH(1, "CrossSwitch", "CrossSwitch"), + + /** + * The 'Dopple Cross Switch' literal object. + * + * @see #DOPPLE_CROSS_SWITCH_VALUE + * @generated + * @ordered + */ + DOPPLE_CROSS_SWITCH(2, "DoppleCrossSwitch", "DoppleCrossSwitch"), + + /** + * The 'Simple Cross' literal object. + * + * @see #SIMPLE_CROSS_VALUE + * @generated + * @ordered + */ + SIMPLE_CROSS(3, "SimpleCross", "SimpleCross"), + + /** + * The 'Flat Cross' literal object. + * + * + * @see #FLAT_CROSS_VALUE + * @generated + * @ordered + */ + FLAT_CROSS(4, "FlatCross", "FlatCross"), + /** + * The 'Other' literal object. + * + * @see #OTHER_VALUE + * @generated + * @ordered + */ + OTHER(5, "Other", "Other"); + + /** + * The 'Simple' literal value. + * + * @see #SIMPLE + * @model name="Simple" + * @generated + * @ordered + */ + public static final int SIMPLE_VALUE = 0; + + /** + * The 'Cross Switch' literal value. + * + * + * @see #CROSS_SWITCH + * @model name="CrossSwitch" + * @generated + * @ordered + */ + public static final int CROSS_SWITCH_VALUE = 1; + + /** + * The 'Dopple Cross Switch' literal value. + * + * @see #DOPPLE_CROSS_SWITCH + * @model name="DoppleCrossSwitch" + * @generated + * @ordered + */ + public static final int DOPPLE_CROSS_SWITCH_VALUE = 2; + + /** + * The 'Simple Cross' literal value. + * + * + * @see #SIMPLE_CROSS + * @model name="SimpleCross" + * @generated + * @ordered + */ + public static final int SIMPLE_CROSS_VALUE = 3; + + /** + * The 'Flat Cross' literal value. + * + * + * @see #FLAT_CROSS + * @model name="FlatCross" + * @generated + * @ordered + */ + public static final int FLAT_CROSS_VALUE = 4; + + /** + * The 'Other' literal value. + * + * @see #OTHER + * @model name="Other" + * @generated + * @ordered + */ + public static final int OTHER_VALUE = 5; + + /** + * An array of all the 'Switch Type' enumerators. + * + * @generated + */ + private static final SwitchType[] VALUES_ARRAY = new SwitchType[] { SIMPLE, + CROSS_SWITCH, DOPPLE_CROSS_SWITCH, SIMPLE_CROSS, FLAT_CROSS, + OTHER, }; + + /** + * A public read-only list of all the 'Switch Type' + * enumerators. + * + * @generated + */ + public static final List VALUES = Collections + .unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Switch Type' literal with the specified + * literal value. + * + * @param literal + * the literal. + * @return the matching enumerator or null. + * @generated + */ + public static SwitchType get(String literal) { + for (int i = 0; i < VALUES_ARRAY.length; ++i) { + SwitchType result = VALUES_ARRAY[i]; + if (result.toString().equals(literal)) { + return result; + } + } + return null; + } + + /** + * Returns the 'Switch Type' literal with the specified + * name. + * + * @param name + * the name. + * @return the matching enumerator or null. + * @generated + */ + public static SwitchType getByName(String name) { + for (int i = 0; i < VALUES_ARRAY.length; ++i) { + SwitchType result = VALUES_ARRAY[i]; + if (result.getName().equals(name)) { + return result; + } + } + return null; + } + + /** + * Returns the 'Switch Type' literal with the specified + * integer value. + * + * @param value + * the integer value. + * @return the matching enumerator or null. + * @generated + */ + public static SwitchType get(int value) { + switch (value) { + case SIMPLE_VALUE: + return SIMPLE; + case CROSS_SWITCH_VALUE: + return CROSS_SWITCH; + case DOPPLE_CROSS_SWITCH_VALUE: + return DOPPLE_CROSS_SWITCH; + case SIMPLE_CROSS_VALUE: + return SIMPLE_CROSS; + case FLAT_CROSS_VALUE: + return FLAT_CROSS; + case OTHER_VALUE: + return OTHER; + } + return null; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * @generated + */ + private SwitchType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + @Override + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + @Override + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + @Override + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string + * representation. + * + * @generated + */ + @Override + public String toString() { + return literal; + } + +} // SwitchType diff --git a/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/TrackSwitch.java b/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/TrackSwitch.java index 5d1cd49095..3672427a89 100644 --- a/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/TrackSwitch.java +++ b/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/TrackSwitch.java @@ -24,6 +24,8 @@ * Components} *
  • {@link org.eclipse.set.model.siteplan.TrackSwitch#getContinuousSegments * Continuous Segments}
  • + *
  • {@link org.eclipse.set.model.siteplan.TrackSwitch#getSwitchType + * Switch Type}
  • * * * @see org.eclipse.set.model.siteplan.SiteplanPackage#getTrackSwitch() @@ -84,4 +86,33 @@ public interface TrackSwitch extends SiteplanObject { */ EList getContinuousSegments(); + /** + * Returns the value of the 'Switch Type' attribute. The + * literals are from the enumeration + * {@link org.eclipse.set.model.siteplan.SwitchType}. + * + * @return the value of the 'Switch Type' attribute. + * @see org.eclipse.set.model.siteplan.SwitchType + * @see #setSwitchType(SwitchType) + * @see org.eclipse.set.model.siteplan.SiteplanPackage#getTrackSwitch_SwitchType() + * @model + * @generated + */ + SwitchType getSwitchType(); + + /** + * Sets the value of the + * '{@link org.eclipse.set.model.siteplan.TrackSwitch#getSwitchType + * Switch Type}' attribute. + * + * @param value + * the new value of the 'Switch Type' attribute. + * @see org.eclipse.set.model.siteplan.SwitchType + * @see #getSwitchType() + * @generated + */ + void setSwitchType(SwitchType value); + } // TrackSwitch diff --git a/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/impl/SiteplanFactoryImpl.java b/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/impl/SiteplanFactoryImpl.java index 32bece323a..85eb83cee4 100644 --- a/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/impl/SiteplanFactoryImpl.java +++ b/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/impl/SiteplanFactoryImpl.java @@ -60,6 +60,7 @@ import org.eclipse.set.model.siteplan.SiteplanPackage; import org.eclipse.set.model.siteplan.SiteplanState; import org.eclipse.set.model.siteplan.Station; +import org.eclipse.set.model.siteplan.SwitchType; import org.eclipse.set.model.siteplan.Track; import org.eclipse.set.model.siteplan.TrackClose; import org.eclipse.set.model.siteplan.TrackCloseType; @@ -260,6 +261,8 @@ public Object createFromString(EDataType eDataType, String initialValue) { initialValue); case SiteplanPackage.LOCK_KEY_TYPE: return createLockKeyTypeFromString(eDataType, initialValue); + case SiteplanPackage.SWITCH_TYPE: + return createSwitchTypeFromString(eDataType, initialValue); default: throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); @@ -315,6 +318,8 @@ public String convertToString(EDataType eDataType, Object instanceValue) { instanceValue); case SiteplanPackage.LOCK_KEY_TYPE: return convertLockKeyTypeToString(eDataType, instanceValue); + case SiteplanPackage.SWITCH_TYPE: + return convertSwitchTypeToString(eDataType, instanceValue); default: throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); @@ -1223,6 +1228,31 @@ public String convertLockKeyTypeToString(EDataType eDataType, return instanceValue == null ? null : instanceValue.toString(); } + /** + * + * + * @generated + */ + public SwitchType createSwitchTypeFromString(EDataType eDataType, + String initialValue) { + SwitchType result = SwitchType.get(initialValue); + if (result == null) + throw new IllegalArgumentException("The value '" + initialValue + + "' is not a valid enumerator of '" + eDataType.getName() + + "'"); + return result; + } + + /** + * + * + * @generated + */ + public String convertSwitchTypeToString(EDataType eDataType, + Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + /** * * diff --git a/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/impl/SiteplanPackageImpl.java b/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/impl/SiteplanPackageImpl.java index 285d5ccd38..50ae14bba4 100644 --- a/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/impl/SiteplanPackageImpl.java +++ b/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/impl/SiteplanPackageImpl.java @@ -57,6 +57,7 @@ import org.eclipse.set.model.siteplan.SiteplanPackage; import org.eclipse.set.model.siteplan.SiteplanState; import org.eclipse.set.model.siteplan.Station; +import org.eclipse.set.model.siteplan.SwitchType; import org.eclipse.set.model.siteplan.Track; import org.eclipse.set.model.siteplan.TrackClose; import org.eclipse.set.model.siteplan.TrackCloseType; @@ -496,6 +497,13 @@ public class SiteplanPackageImpl extends EPackageImpl */ private EEnum lockKeyTypeEEnum = null; + /** + * + * + * @generated + */ + private EEnum switchTypeEEnum = null; + /** * Creates an instance of the model Package, registered with * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the @@ -1194,6 +1202,16 @@ public EReference getTrackSwitch_ContinuousSegments() { return (EReference) trackSwitchEClass.getEStructuralFeatures().get(2); } + /** + * + * + * @generated + */ + @Override + public EAttribute getTrackSwitch_SwitchType() { + return (EAttribute) trackSwitchEClass.getEStructuralFeatures().get(3); + } + /** * * @@ -2436,6 +2454,16 @@ public EEnum getLockKeyType() { return lockKeyTypeEEnum; } + /** + * + * + * @generated + */ + @Override + public EEnum getSwitchType() { + return switchTypeEEnum; + } + /** * * @@ -2542,6 +2570,7 @@ public void createPackageContents() { createEAttribute(trackSwitchEClass, TRACK_SWITCH__DESIGN); createEReference(trackSwitchEClass, TRACK_SWITCH__COMPONENTS); createEReference(trackSwitchEClass, TRACK_SWITCH__CONTINUOUS_SEGMENTS); + createEAttribute(trackSwitchEClass, TRACK_SWITCH__SWITCH_TYPE); trackSwitchComponentEClass = createEClass(TRACK_SWITCH_COMPONENT); createEAttribute(trackSwitchComponentEClass, @@ -2715,6 +2744,7 @@ public void createPackageContents() { EXTERNAL_ELEMENT_CONTROL_ART); controlStationTypeEEnum = createEEnum(CONTROL_STATION_TYPE); lockKeyTypeEEnum = createEEnum(LOCK_KEY_TYPE); + switchTypeEEnum = createEEnum(SWITCH_TYPE); } /** @@ -3029,6 +3059,10 @@ public void initializePackageContents() { null, 0, 2, TrackSwitch.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getTrackSwitch_SwitchType(), this.getSwitchType(), + "switchType", null, 0, 1, TrackSwitch.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, + !IS_DERIVED, IS_ORDERED); initEClass(trackSwitchComponentEClass, TrackSwitchComponent.class, "TrackSwitchComponent", !IS_ABSTRACT, !IS_INTERFACE, @@ -3626,6 +3660,14 @@ public void initializePackageContents() { addEEnumLiteral(lockKeyTypeEEnum, LockKeyType.INSIDE); addEEnumLiteral(lockKeyTypeEEnum, LockKeyType.OUTSIDE); + initEEnum(switchTypeEEnum, SwitchType.class, "SwitchType"); + addEEnumLiteral(switchTypeEEnum, SwitchType.SIMPLE); + addEEnumLiteral(switchTypeEEnum, SwitchType.CROSS_SWITCH); + addEEnumLiteral(switchTypeEEnum, SwitchType.DOPPLE_CROSS_SWITCH); + addEEnumLiteral(switchTypeEEnum, SwitchType.SIMPLE_CROSS); + addEEnumLiteral(switchTypeEEnum, SwitchType.FLAT_CROSS); + addEEnumLiteral(switchTypeEEnum, SwitchType.OTHER); + // Create resource createResource(eNS_URI); } diff --git a/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/impl/TrackSwitchImpl.java b/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/impl/TrackSwitchImpl.java index b73991354c..aa1d935cc9 100644 --- a/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/impl/TrackSwitchImpl.java +++ b/java/bundles/org.eclipse.set.model.siteplan/src/org/eclipse/set/model/siteplan/impl/TrackSwitchImpl.java @@ -25,6 +25,7 @@ import org.eclipse.set.model.siteplan.ContinuousTrackSegment; import org.eclipse.set.model.siteplan.SiteplanPackage; +import org.eclipse.set.model.siteplan.SwitchType; import org.eclipse.set.model.siteplan.TrackSwitch; import org.eclipse.set.model.siteplan.TrackSwitchComponent; @@ -41,6 +42,8 @@ * Components} *
  • {@link org.eclipse.set.model.siteplan.impl.TrackSwitchImpl#getContinuousSegments * Continuous Segments}
  • + *
  • {@link org.eclipse.set.model.siteplan.impl.TrackSwitchImpl#getSwitchType + * Switch Type}
  • * * * @generated @@ -87,6 +90,26 @@ public class TrackSwitchImpl extends SiteplanObjectImpl implements TrackSwitch { */ protected EList continuousSegments; + /** + * The default value of the '{@link #getSwitchType() Switch Type}' + * attribute. + * + * @see #getSwitchType() + * @generated + * @ordered + */ + protected static final SwitchType SWITCH_TYPE_EDEFAULT = SwitchType.SIMPLE; + + /** + * The cached value of the '{@link #getSwitchType() Switch Type}' + * attribute. + * + * @see #getSwitchType() + * @generated + * @ordered + */ + protected SwitchType switchType = SWITCH_TYPE_EDEFAULT; + /** * * @@ -160,6 +183,32 @@ public EList getContinuousSegments() { return continuousSegments; } + /** + * + * + * @generated + */ + @Override + public SwitchType getSwitchType() { + return switchType; + } + + /** + * + * + * @generated + */ + @Override + public void setSwitchType(SwitchType newSwitchType) { + SwitchType oldSwitchType = switchType; + switchType = newSwitchType == null ? SWITCH_TYPE_EDEFAULT + : newSwitchType; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SiteplanPackage.TRACK_SWITCH__SWITCH_TYPE, oldSwitchType, + switchType)); + } + /** * * @@ -193,6 +242,8 @@ public Object eGet(int featureID, boolean resolve, boolean coreType) { return getComponents(); case SiteplanPackage.TRACK_SWITCH__CONTINUOUS_SEGMENTS: return getContinuousSegments(); + case SiteplanPackage.TRACK_SWITCH__SWITCH_TYPE: + return getSwitchType(); } return super.eGet(featureID, resolve, coreType); } @@ -219,6 +270,9 @@ public void eSet(int featureID, Object newValue) { getContinuousSegments().addAll( (Collection) newValue); return; + case SiteplanPackage.TRACK_SWITCH__SWITCH_TYPE: + setSwitchType((SwitchType) newValue); + return; } super.eSet(featureID, newValue); } @@ -240,6 +294,9 @@ public void eUnset(int featureID) { case SiteplanPackage.TRACK_SWITCH__CONTINUOUS_SEGMENTS: getContinuousSegments().clear(); return; + case SiteplanPackage.TRACK_SWITCH__SWITCH_TYPE: + setSwitchType(SWITCH_TYPE_EDEFAULT); + return; } super.eUnset(featureID); } @@ -260,6 +317,8 @@ public boolean eIsSet(int featureID) { case SiteplanPackage.TRACK_SWITCH__CONTINUOUS_SEGMENTS: return continuousSegments != null && !continuousSegments.isEmpty(); + case SiteplanPackage.TRACK_SWITCH__SWITCH_TYPE: + return switchType != SWITCH_TYPE_EDEFAULT; } return super.eIsSet(featureID); } @@ -277,6 +336,8 @@ public String toString() { StringBuilder result = new StringBuilder(super.toString()); result.append(" (design: "); result.append(design); + result.append(", switchType: "); + result.append(switchType); result.append(')'); return result.toString(); } diff --git a/web/siteplan/src/feature/TrackSwitchFeature.ts b/web/siteplan/src/feature/TrackSwitchFeature.ts index 985259015d..abe34ae074 100644 --- a/web/siteplan/src/feature/TrackSwitchFeature.ts +++ b/web/siteplan/src/feature/TrackSwitchFeature.ts @@ -12,7 +12,7 @@ import ContinuousTrackSegment from '@/model/ContinuousTrackSegment' import { Coordinate, Position } from '@/model/Position' import { SiteplanColorValue, SiteplanState } from '@/model/SiteplanModel' import { getColor, getLabelColor } from '@/model/SiteplanObject' -import TrackSwitch, { TrackSwitchPart } from '@/model/TrackSwitch' +import TrackSwitch, { SwitchType, TrackSwitchPart } from '@/model/TrackSwitch' import TrackSwitchComponent, { TurnoutOperatingMode } from '@/model/TrackSwitchComponent' import { angle, clampAngle, distance, pointInDistance, toDeg } from '@/util/Math' import { updateLabelColor, updateLabelOrientation } from '@/util/ModelExtensions' @@ -140,20 +140,23 @@ export default class TrackSwitchFeature extends LageplanFeature { result.push(...switchStyle) updateLabelOrientation(component.label, component.labelPosition.rotation, this.map) updateLabelColor(component.label, getLabelColor(tswitch)) - const startStyle = this.svgService.getFeatureStyle( - { - featureData: data, - drawPart: TrackSwitchPart.StartMarker - }, - FeatureType.TrackSwitch - ) - // Rescale the feature according to the current zoom level - // to keep a constant size - startStyle.getImage()?.setScale(scale) - startStyle.setGeometry(startGeometry) - // Rotate the feature - startStyle.getImage()?.setRotation((component.start.rotation * Math.PI) / 180) - result.push(startStyle) + if (tswitch.switchType !== SwitchType.SimpleCross && + tswitch.switchType !== SwitchType.FlatCross) { + const startStyle = this.svgService.getFeatureStyle( + { + featureData: data, + drawPart: TrackSwitchPart.StartMarker + }, + FeatureType.TrackSwitch + ) + // Rescale the feature according to the current zoom level + // to keep a constant size + startStyle.getImage()?.setScale(scale) + startStyle.setGeometry(startGeometry) + // Rotate the feature + startStyle.getImage()?.setRotation((component.start.rotation * Math.PI) / 180) + result.push(startStyle) + } // Add the label if (component.label) { @@ -273,6 +276,12 @@ export default class TrackSwitchFeature extends LageplanFeature { TrackSwitchFeature.LABEL_DISTANCE ) + if (outlineGeometry.containsXY(positivePoint[0], positivePoint[1])) { + return negativePoint + } else if (outlineGeometry.containsXY(negativePoint[0], negativePoint[1])) { + return positivePoint + } + const positiveDistance = distance(outlineGeometry.getClosestPoint(positivePoint), positivePoint) const negativeDistance = distance(outlineGeometry.getClosestPoint(negativePoint), negativePoint) diff --git a/web/siteplan/src/model/TrackSwitch.ts b/web/siteplan/src/model/TrackSwitch.ts index 2c12a7d23f..350a318ec2 100644 --- a/web/siteplan/src/model/TrackSwitch.ts +++ b/web/siteplan/src/model/TrackSwitch.ts @@ -12,11 +12,21 @@ import { defaultCoordinateObj } from './Position' import SiteplanObject, { defaultObjectColorObj } from './SiteplanObject' import TrackSwitchComponent, { defaultTrackSwitchComponentObj } from './TrackSwitchComponent' +export enum SwitchType { + Simple = 'Simple', + CrossSwitch = 'CrossSwitch', + DoppleCrossSwitch = 'DoppleCrossSwitch', + SimpleCross = 'SimpleCross', + FlatCross = 'FlatCross', + Other = 'Other' +} + export default interface TrackSwitch extends SiteplanObject { components: TrackSwitchComponent[] design: string continuousSegments: ContinuousTrackSegment[] + switchType: SwitchType } export function defaultTrackSwitchObj (): TrackSwitch { @@ -30,7 +40,8 @@ export function defaultTrackSwitchObj (): TrackSwitch { } ], guid: 'abc', - objectColors: [defaultObjectColorObj()] + objectColors: [defaultObjectColorObj()], + switchType: SwitchType.Simple } } diff --git a/web/siteplan/src/util/SVG/Draw/SvgDrawTrackSwitch.ts b/web/siteplan/src/util/SVG/Draw/SvgDrawTrackSwitch.ts index 068f55c641..e369bb7827 100644 --- a/web/siteplan/src/util/SVG/Draw/SvgDrawTrackSwitch.ts +++ b/web/siteplan/src/util/SVG/Draw/SvgDrawTrackSwitch.ts @@ -13,7 +13,7 @@ import { Label } from '@/model/Label' import { Coordinate } from '@/model/Position' import { LeftRight } from '@/model/SiteplanModel' import { ISvgElement, SvgElement } from '@/model/SvgElement' -import { TrackSwitchPart } from '@/model/TrackSwitch' +import TrackSwitch, { SwitchType, TrackSwitchPart } from '@/model/TrackSwitch' import TrackSwitchComponent, { TurnoutOperatingMode } from '@/model/TrackSwitchComponent' import '@/util/ElementExtensions' import AbstractDrawSVG from '@/util/SVG/Draw/AbstractDrawSVG' @@ -49,7 +49,11 @@ export default class SvgDrawTrackSwitch extends AbstractDrawSVG { const drawData = data as {featureData: TrackSwitchFeatureData, drawPart: TrackSwitchPart,} switch (drawData.drawPart) { case TrackSwitchPart.Main: - return this.drawTrackSwitch(drawData.featureData.component, drawData.featureData.outlineCoor) + return this.drawTrackSwitch( + drawData.featureData.trackSwitch, + drawData.featureData.component, + drawData.featureData.outlineCoor + ) case TrackSwitchPart.StartMarker: return this.drawStart(drawData.featureData.component ?? undefined) default: @@ -63,7 +67,11 @@ export default class SvgDrawTrackSwitch extends AbstractDrawSVG { * @param outlineCoors outline coordinates of the track switch * @returns a {@link ISvgElement} containing the final SVG for rendering */ - drawTrackSwitch (switchComponent: TrackSwitchComponent | null, outlineCoors: number[][]): ISvgElement { + drawTrackSwitch ( + tswitch: TrackSwitch, + switchComponent: TrackSwitchComponent | null, + outlineCoors: number[][] + ): ISvgElement { const svg = SvgDraw.createSvgWithHead(this.SVG_DRAWAREA_SWITCH, this.SVG_DRAWAREA_SWITCH) if (!switchComponent) { return new SvgElement('Empty', svg, [], null ,[]) @@ -88,7 +96,7 @@ export default class SvgDrawTrackSwitch extends AbstractDrawSVG { outline.setAttribute('d', pathLine) g.appendChild(outline) - this.drawTrackSwitchStyle(g, switchComponent).forEach(ele => ( + this.drawTrackSwitchStyle(g, tswitch, switchComponent).forEach(ele => ( svg.appendChild(ele) )) @@ -108,10 +116,20 @@ export default class SvgDrawTrackSwitch extends AbstractDrawSVG { * @param component track switch component * @returns list of HTML Element */ - private drawTrackSwitchStyle (outlineSVGGroup: HTMLElement, component: TrackSwitchComponent): Element[] { + private drawTrackSwitchStyle ( + outlineSVGGroup: HTMLElement, + tswitch: TrackSwitch, + component: TrackSwitchComponent + ): Element[] { + if (tswitch.switchType === SwitchType.SimpleCross) { + outlineSVGGroup.setAttribute('fill', `url(%23${SvgDraw.DIAGONAL_LINE_ID})`) + return [SvgDraw.diagonalPattern(component.start.rotation), outlineSVGGroup] + } + const rotate = component.mainLeg.connection === LeftRight.RIGHT ? component.start.rotation - 45 : component.start.rotation + 45 + switch (component.operatingMode) { case TurnoutOperatingMode.ElectricRemote: case TurnoutOperatingMode.MechanicalRemote: @@ -172,7 +190,7 @@ export default class SvgDrawTrackSwitch extends AbstractDrawSVG { * @returns a {@link ISvgElement} containing the final SVG for rendering */ drawLabel (tswitch: TrackSwitchComponent | null): ISvgElement { - if (!tswitch) { + if (!tswitch || !tswitch.label) { return new SvgElement('Empty', document.createElement('svg'), [], null, []) } From a2d9de8c3e9f7bc66adcd1e324065580a750bef8 Mon Sep 17 00:00:00 2001 From: Quang Truong Date: Wed, 1 Oct 2025 10:14:07 +0200 Subject: [PATCH 2/2] Revert Java version siteplan model --- .../bundles/org.eclipse.set.model.siteplan/META-INF/MANIFEST.MF | 2 +- .../org.eclipse.set.model.siteplan/model/siteplan.genmodel | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/bundles/org.eclipse.set.model.siteplan/META-INF/MANIFEST.MF b/java/bundles/org.eclipse.set.model.siteplan/META-INF/MANIFEST.MF index f6767330db..bf5b86a4fd 100644 --- a/java/bundles/org.eclipse.set.model.siteplan/META-INF/MANIFEST.MF +++ b/java/bundles/org.eclipse.set.model.siteplan/META-INF/MANIFEST.MF @@ -7,7 +7,7 @@ Bundle-Version: 2.5.0.qualifier Bundle-ClassPath: . Bundle-Vendor: %providerName Bundle-Localization: plugin -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Export-Package: org.eclipse.set.model.siteplan, org.eclipse.set.model.siteplan.impl, org.eclipse.set.model.siteplan.util diff --git a/java/bundles/org.eclipse.set.model.siteplan/model/siteplan.genmodel b/java/bundles/org.eclipse.set.model.siteplan/model/siteplan.genmodel index 9be70cebbb..1dfb7d3be9 100644 --- a/java/bundles/org.eclipse.set.model.siteplan/model/siteplan.genmodel +++ b/java/bundles/org.eclipse.set.model.siteplan/model/siteplan.genmodel @@ -5,7 +5,7 @@ modelDirectory="/org.eclipse.set.model.siteplan/src" creationIcons="false" editDirectory="" editorDirectory="" modelPluginID="org.eclipse.set.model.siteplan" modelName="Siteplan" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" codeFormatting="true" - commentFormatting="true" importerID="org.eclipse.emf.importer.ecore" complianceLevel="17.0" + commentFormatting="true" importerID="org.eclipse.emf.importer.ecore" complianceLevel="21.0" copyrightFields="false" editPluginID="org.eclipse.set.model.siteplan.edit" operationReflection="true" importOrganizing="true"> siteplan.ecore