Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,16 @@ private static class LSInputImpl implements LSInput {
private final String baseURI;
private final String publicId;
private final String systemId;
private final String version;
private final Bundle bundle = FrameworkUtil
.getBundle(PlanPro_Schnittstelle.class);

LSInputImpl(final String publicId, final String systemId,
final String baseURI) {
final String baseURI, final String version) {
this.publicId = publicId;
this.systemId = systemId;
this.baseURI = baseURI;
this.version = version;
}

@Override
Expand Down Expand Up @@ -133,8 +135,12 @@ public void setSystemId(final String systemId) {
throw new UnsupportedOperationException();
}

private String getSchemaDir() {
return String.format("%s/%s", SCHEMA_DIR, version); //$NON-NLS-1$
}

private String getSchemaPath() {
final Enumeration<URL> entries = bundle.findEntries(SCHEMA_DIR,
final Enumeration<URL> entries = bundle.findEntries(getSchemaDir(),
getSystemId(), true);
final URL element = entries.nextElement();
Assert.isTrue(!entries.hasMoreElements());
Expand All @@ -153,7 +159,9 @@ public ResourceResolver() {
public LSInput resolveResource(final String type,
final String namespaceURI, final String publicId,
final String systemId, final String baseURI) {
return new LSInputImpl(publicId, systemId, baseURI);
final String version = namespaceURI
.substring(namespaceURI.lastIndexOf("/") + 1); //$NON-NLS-1$
return new LSInputImpl(publicId, systemId, baseURI, version);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import java.util.Map;

import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.xmi.XMLHelper;
import org.eclipse.emf.ecore.xmi.XMLResource;
import org.eclipse.emf.ecore.xmi.XMLSave;
import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
Expand All @@ -21,7 +22,24 @@
* Adapted resource implementation for the EMF-XML Resources
*/
public class PlanProFileResource extends XMLResourceImpl {

private String standalone;
private XMLHelper xmlHelper;

/**
* Creates an instance of the resource. <!-- begin-user-doc --> <!--
* end-user-doc -->
*
* @param uri
* the URI of the new resource.
* @param xmlHelper
* the {@link XMLHelper}
* @generated
*/
public PlanProFileResource(final URI uri, final XMLHelper xmlHelper) {
this(uri);
this.xmlHelper = xmlHelper;
}

/**
* Creates an instance of the resource. <!-- begin-user-doc --> <!--
Expand All @@ -33,7 +51,7 @@ public class PlanProFileResource extends XMLResourceImpl {
*/
public PlanProFileResource(final URI uri) {
super(uri);

this.xmlHelper = null;
getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA,
Boolean.TRUE);
getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA,
Expand All @@ -49,6 +67,9 @@ public PlanProFileResource(final URI uri) {
XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER,
Boolean.TRUE);
getDefaultLoadOptions().put(
XMLResource.OPTION_USE_PACKAGE_NS_URI_AS_LOCATION,
Boolean.FALSE);
}

static final String STANDALONE = "standalone"; //$NON-NLS-1$
Expand All @@ -70,4 +91,12 @@ protected XMLSave createXMLSave() {
public void setStandalone(final String value) {
standalone = value;
}

@Override
protected XMLHelper createXMLHelper() {
if (xmlHelper != null) {
return xmlHelper;
}
return super.createXMLHelper();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.eclipse.set.core.services.graph.TopologicalGraphService;
import org.eclipse.set.core.services.planningaccess.PlanningAccessService;
import org.eclipse.set.core.services.siteplan.SiteplanService;
import org.eclipse.set.core.services.version.PlanProVersionService;
import org.eclipse.set.core.services.viewmodel.ToolboxViewModelService;

/**
Expand All @@ -33,6 +34,7 @@ public class Services {
private static UserConfigurationService userConfigurationService;
private static TopologicalGraphService topGraphService;
private static PointObjectPositionService pointObjectPositionService;
private static PlanProVersionService planProVersionService;

/**
* @return the siteplan service
Expand Down Expand Up @@ -183,4 +185,20 @@ public static void setPointObjectPositionService(
final PointObjectPositionService pointObjectPositionService) {
Services.pointObjectPositionService = pointObjectPositionService;
}

/**
* @param planProVersionService
* the {@link PlanProVersionService}
*/
public static void setPlanProVersionService(
final PlanProVersionService planProVersionService) {
Services.planProVersionService = planProVersionService;
}

/**
* @return the {@link PlanProVersionService}
*/
public static PlanProVersionService getPlanProVersionService() {
return planProVersionService;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,53 @@
*/
public interface PlanProVersionService {

/**
* The PlanPro Version format <major>.<patch>.<minor>
*
* @param major
* the major version
* @param patch
* the patch version
* @param minor
* the minor version
*/
public record PlanProVersionFormat(String major, String patch,
String minor) {
/**
* @return <major>.<patch>
*/
public String getMajorPatchVersion() {
return major + "." + patch; //$NON-NLS-1$
}

/**
* @return <major>.<patch>.<version>
*/
public String getFullVersion() {
return String.format("%s.%s.%s", major, patch, minor); //$NON-NLS-1$
}
}

/**
* @return the supported PlanPro version
*/
public VersionInfo createSupportedVersion();

/**
* @return the supported PlanPro version format
*/
public PlanProVersionFormat getSupportedVersionFormat();

/**
* @param location
* location to the PlanPro model
*
* @return the used version
*/
public VersionInfo createUsedVersion(Path location);

/**
* @return the current PlanPro version
*/
public String getCurrentVersion();
}
9 changes: 7 additions & 2 deletions java/bundles/org.eclipse.set.core.test/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,18 @@ Fragment-Host: org.eclipse.set.core;bundle-version="0.1.0"
Automatic-Module-Name: org.eclipse.set.core.test
Bundle-RequiredExecutionEnvironment: JavaSE-21
Bundle-Vendor: Eclipse Signalling Engineering Toolbox
Import-Package: org.eclipse.set.feature.validation.session,
Import-Package: org.eclipse.set.core.services.version,
org.eclipse.set.feature.validation.session,
org.eclipse.set.model.planpro.PlanPro,
org.eclipse.set.model.planpro.Signalbegriffe_Ril_301,
org.eclipse.set.sessionservice,
org.eclipse.set.unittest.utils,
org.eclipse.set.unittest.utils.session,
org.eclipse.set.unittest.utils.toolboxfile,
org.junit,
org.junit.function,
org.junit.jupiter.api
Require-Bundle: org.hamcrest.core
Require-Bundle: org.hamcrest.core,
org.mockito.mockito-core,
net.bytebuddy.byte-buddy,
net.bytebuddy.byte-buddy-agent
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/**
* Copyright (c) 2025 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.core.fileservice;

import org.eclipse.set.core.services.Services;
import org.eclipse.set.core.services.version.PlanProVersionService;
import org.eclipse.set.core.services.version.PlanProVersionService.PlanProVersionFormat;
import org.junit.function.ThrowingRunnable;
import org.mockito.MockedStatic;
import org.mockito.Mockito;

/**
* The {@link PlanProVersionService} is needed for open planpro file
*/
public class MockPlanProVersionService {
private static final PlanProVersionFormat currentVersion = new PlanProVersionFormat(
"1.10", "0", "3"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

/**
* Mock {@link PlanProVersionService}
*
* @param doTest
* the test code
* @throws Throwable
* the exception
*/
public static void mockPlanProVersionService(final ThrowingRunnable doTest)
throws Throwable {
final PlanProVersionService mockVersionService = Mockito
.mock(PlanProVersionService.class);
Mockito.when(mockVersionService.getCurrentVersion())
.thenReturn(currentVersion.getFullVersion());
Mockito.when(mockVersionService.getSupportedVersionFormat())
.thenReturn(currentVersion);
try (MockedStatic<Services> mockStatic = Mockito
.mockStatic(Services.class)) {
mockStatic.when(Services::getPlanProVersionService)
.thenReturn(mockVersionService);
doTest.run();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,12 @@
*/
package org.eclipse.set.core.fileservice

import java.io.IOException
import java.nio.file.Paths
import org.eclipse.set.basis.files.ToolboxFile
import org.eclipse.set.basis.files.ToolboxFileRole
import org.eclipse.set.core.services.files.ToolboxFileFormatService
import org.eclipse.set.feature.validation.session.SetSessionService
import org.eclipse.set.unittest.utils.toolboxfile.AbstractToolboxFileTest
import org.junit.jupiter.api.Test
import org.eclipse.set.feature.validation.session.SetSessionService

/**
* Test for {@link PlainToolboxFile}
Expand All @@ -28,30 +26,37 @@ class PlainToolboxFileTest extends AbstractToolboxFileTest {
* Test method for {@link PlainToolboxFile#open()}
*/
@Test
def void testOpen() throws IOException{
whenOpen
thenExpectContentsExists(true)
def void testOpen() throws Throwable{
MockPlanProVersionService.mockPlanProVersionService([
whenOpen
thenExpectContentsExists(true)
])
}

/**
* Test method for {@link PlainToolboxFile#close()}
*/
@Test
def void testClose() throws IOException{
whenOpen
whenClose
thenExpectContentsExists(false)
def void testClose() throws Throwable{
MockPlanProVersionService.mockPlanProVersionService([
whenOpen
whenClose
thenExpectContentsExists(false)
])

}

/**
* Test method for multiple {@link PlainToolboxFile#close()}
*/
@Test
def void testMultipleClose() throws IOException{
whenOpen
whenClose
whenClose
thenExpectContentsExists(false)
def void testMultipleClose() throws Throwable{
MockPlanProVersionService.mockPlanProVersionService([
whenOpen
whenClose
whenClose
thenExpectContentsExists(false)
])
}

/**
Expand All @@ -60,19 +65,15 @@ class PlainToolboxFileTest extends AbstractToolboxFileTest {
*
*/
@Test
def void testCloseThenOpen() throws IOException{
whenOpen
thenExpectContentsExists(true)
whenClose
thenExpectContentsExists(false)
whenOpen
thenExpectContentsExists(true)
}

def ToolboxFileFormatService setUpFormatService() {
val formatService = new PlainFileFormatService
formatService.sessionService = new SetSessionService
return formatService
def void testCloseThenOpen() throws Throwable {
MockPlanProVersionService.mockPlanProVersionService([
whenOpen
thenExpectContentsExists(true)
whenClose
thenExpectContentsExists(false)
whenOpen
thenExpectContentsExists(true)
])
}

override protected ToolboxFile createToolboxFile(ToolboxFileRole role) {
Expand Down
Loading
Loading