Commit 8a4ba8bd authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ added data element and parameter mapping methods

* improved handling of keywords
parent 4d69c6ee
Loading
Loading
Loading
Loading
+28 −2
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ import org.etsi.mts.tdl.Annotation;
import org.etsi.mts.tdl.AnnotationType;
import org.etsi.mts.tdl.Constraint;
import org.etsi.mts.tdl.ConstraintType;
import org.etsi.mts.tdl.DataElementMapping;
import org.etsi.mts.tdl.DataResourceMapping;
import org.etsi.mts.tdl.DataType;
import org.etsi.mts.tdl.Element;
@@ -20,6 +21,9 @@ import org.etsi.mts.tdl.EnumDataType;
import org.etsi.mts.tdl.NamedElement;
import org.etsi.mts.tdl.Package;
import org.etsi.mts.tdl.PackageableElement;
import org.etsi.mts.tdl.Parameter;
import org.etsi.mts.tdl.ParameterBinding;
import org.etsi.mts.tdl.ParameterMapping;
import org.etsi.mts.tdl.SimpleDataType;
import org.etsi.mts.tdl.StructuredDataType;
import org.etsi.mts.tdl.tdlFactory;
@@ -34,6 +38,10 @@ public abstract class AbstractTranslator {
	protected SimpleDataType referencedType;
	protected boolean useQualifiers = true;

	protected boolean fullPrefix = false;
	protected String sourceMappingTag = "SOURCE_MAPPING";
	protected String targetMappingTag = "TARGET_MAPPING";

	public AbstractTranslator() {
		super();
	}
@@ -73,7 +81,8 @@ public abstract class AbstractTranslator {

	public String cleanName(String name) {
		//TODO: use keywords filter?
		List<String> keywords = List.of("Message", "Time", "Type", "type", "name", "instance", "size", "component"); 
//		List<String> keywords = List.of("Message", "Time", "Type", "type", "name", "instance", "size", "component");
		List<String> keywords = List.of("Message", "Time", "Type", "instance", "size", "component");
		if (keywords.contains(name)) {
			name = "^"+name;
		}
@@ -183,6 +192,23 @@ public abstract class AbstractTranslator {
		}
	}
	
	protected DataElementMapping addDataElementMapping(String uri, DataType dataType, String tag) {
		DataElementMapping mapping = getTypeFor(dataType.getName()+"_"+tag, tdlPackage.Literals.DATA_ELEMENT_MAPPING);
		mapping.setMappableDataElement(dataType);
		mapping.setElementURI(uri);
		mapping.setDataResourceMapping(drm);
		return mapping;
	}
	
	protected void addParameterMapping(DataElementMapping mapping, Parameter p, String uri) {
		Optional<ParameterMapping> opm = getContentWithPredicate(e->e.getParameter() == p, mapping, ParameterMapping.class);
		if (opm.isEmpty()) {
			ParameterMapping pm = (ParameterMapping) tdlFactory.eINSTANCE.create(tdlPackage.Literals.PARAMETER_MAPPING);
			pm.setParameter(p);
			pm.setParameterURI(uri.replaceAll("\\^", ""));
			mapping.getParameterMapping().add(pm);
		}
	}

	public Resource getTargetResource() {
		return targetResource;