Commit bed7ec29 authored by Martti Käärik's avatar Martti Käärik
Browse files

re dd0d08b7 also for QIdentifier

parent 762a1dc4
Loading
Loading
Loading
Loading
+39 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ import org.eclipse.xtext.nodemodel.INode;
public class TDLValueConverterService extends EString2XtextConverter {

	private IdentifierValueConverter identifierValueConverter;
	private QIdentifierValueConverter qidentifierValueConverter;

	@ValueConverter(rule = "org.etsi.mts.tdl.TDLtx.Identifier")
	public IValueConverter<String> Identifier() {
@@ -21,6 +22,18 @@ public class TDLValueConverterService extends EString2XtextConverter {
	public IValueConverter<String> TDLtxIdentifier() {
		return this.Identifier();
	}

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

	@ValueConverter(rule = "QIdentifier")
	public IValueConverter<String> TDLtxQIdentifier() {
		return this.QIdentifier();
	}
}

class IdentifierValueConverter extends AbstractValueConverter<String> {
@@ -41,3 +54,29 @@ class IdentifierValueConverter extends AbstractValueConverter<String> {
	}

}


class QIdentifierValueConverter extends IdentifierValueConverter {

	public QIdentifierValueConverter(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