Commit 50c0cfb9 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ fix for serialisation problems with gate references #137

parent 24e3423b
Loading
Loading
Loading
Loading
Loading
+30 −1
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ public class TDLValueConverterService extends EString2XtextConverter {

	private IdentifierValueConverter identifierValueConverter;
	private QIdentifierValueConverter qidentifierValueConverter;
	private GRIdentifierValueConverter gridentifierValueConverter;

	@ValueConverter(rule = "org.etsi.mts.tdl.TDLtx.Identifier")
	public IValueConverter<String> Identifier() {
@@ -37,7 +38,10 @@ public class TDLValueConverterService extends EString2XtextConverter {

	@ValueConverter(rule = "org.etsi.mts.tdl.TDLtx.GRIdentifier")
	public IValueConverter<String> GRIdentifier() {
		return this.QIdentifier();
//		return this.QIdentifier();
		if (this.gridentifierValueConverter == null)
			this.gridentifierValueConverter = new GRIdentifierValueConverter(this.ID());
		return this.gridentifierValueConverter;
	}

	@ValueConverter(rule = "GRIdentifier")
@@ -89,3 +93,28 @@ class QIdentifierValueConverter extends IdentifierValueConverter {
		return String.join(".", parts);
	}
}

class GRIdentifierValueConverter extends IdentifierValueConverter {

	public GRIdentifierValueConverter(IValueConverter<String> iValueConverter) {
		super(iValueConverter);
	}

	@Override
	public String toValue(String string, INode node) throws ValueConverterException {
		String[] parts = string.split("::");
		for (int i = 0; i < parts.length; i++) {
			parts[i] = super.toValue(parts[i], node);
		}
		return String.join("::", parts);
	}

	@Override
	public String toString(String value) throws ValueConverterException {
		String[] parts = value.split("::");
		for (int i = 0; i < parts.length; i++) {
			parts[i] = super.toString(parts[i]);
		}
		return String.join("::", parts);
	}
}
 No newline at end of file