Commit d91c838f authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ added basic template integration, ID-generator

use ID generator to add IDs to exported templates
parent 12373a60
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -4,5 +4,6 @@ source.. = src/,\
bin.includes = .,\
               META-INF/,\
               plugin.xml,\
               css/
               css/,\
               templates/
bin.excludes = **/*.xtend
+47 −0
Original line number Diff line number Diff line
package org.etsi.mts.tdl.ui.wizard;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import com.google.common.io.Files;

public class TemplateIDGenerator {

	public static void main(String[] args) throws Exception {
		//utility for adding ids to exported templates
		//TODO: later can potentially assemble from other files
		//TODO: extract to separate component?
		String prefix = "org.etsi.mts.tdl.tx.templates.";
		String source = "templates/templates.xml";
		Files.copy(new File(source), new File(source+"back"));
		DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		Document doc = builder.parse(new File(source));
		NodeList list = doc.getElementsByTagName("template");
		for (int i = 0; i<list.getLength(); i++) {
			Element item = (Element)list.item(i);
			String id = item.getAttribute("id");
			System.out.println("id:" + id);
			if (id.isBlank()) {
				item.setAttribute("id", prefix+item.getAttribute("name").replaceAll(" ", "."));
			}
			id = item.getAttribute("id");
			System.out.println("id:" + id);
			
		}
		DOMSource dom = new DOMSource(doc);
		Transformer transformer = TransformerFactory.newInstance().newTransformer();
	    StreamResult result = new StreamResult(new File(source));
	    transformer.transform(dom, result);
	}

}
+56 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.kw_Configuration" deleted="false" description="Configuraiton with necessary component and gate types" enabled="true" id="org.etsi.mts.tdl.tx.templates.Configuration" name="Configuration">Configuration ${name} {
	${componentType} sut as SUT,
	${componentType} tester as Tester,
	connect sut::${interfaceName} to tester::${interfaceName}
}
Message Gate ${gateType} accepts ${accepted}
Component ${componentType} {
	gate ${gateType} ${interfaceName}
}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.TestConfiguration" deleted="false" description="Alternative template" enabled="true" id="org.etsi.mts.tdl.tx.templates.Configuration.in" name="Configuration in">Configuration example${name} {
	${componentType} sut as SUT,
	${componentType} tester as Tester,
	connect sut::${interfaceName} to tester::${interfaceName}
}
Message Gate ${gateType} accepts ${dataType:CrossReference('GateType.dataType')}
Component ${componentType} {
	gate ${gateType} ${interfaceName}
}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.kw_Objective" deleted="false" description="Test objective template" enabled="true" id="org.etsi.mts.tdl.tx.templates.Objective" name="Objective">Objective ${name} {
	Description: "example"
	References: "reference"
}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.kw_Package" deleted="false" description="Basic package structure" enabled="true" id="org.etsi.mts.tdl.tx.templates.Package" name="Package">Package ${name} {
	Type integer
	Type string
	Message Gate http accepts string, integer
	Component node {
		gate http interface
	}
	Configuration base {
		node sut as SUT,
		node tester as Tester,
		connect sut::interface to tester::interface
	}
	Test example uses base {
		tester::interface sends "hello" to sut::interface
	}
}
	
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.AtomicBehaviour" deleted="false" description="Receive a message" enabled="true" id="org.etsi.mts.tdl.tx.templates.Receive.message" name="Receive message">${targetGate:CrossReference(Target.targetGate)} receives ${dataElement:CrossReference(DataElementUse.dataElement)} from ${source:CrossReference(Interaction.sourceGate)}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.AtomicBehaviour" deleted="false" description="Send a message" enabled="true" id="org.etsi.mts.tdl.tx.templates.Send.message" name="Send message">${source:CrossReference(Interaction.sourceGate)} sends ${dataElement:CrossReference(DataElementUse.dataElement)} to ${targetGate:CrossReference(Target.targetGate)}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.kw_Test" deleted="false" description="Test Purpose Description template" enabled="true" id="org.etsi.mts.tdl.tx.templates.TestPurposeDescription" name="TestPurposeDescription">Test Purpose Description ${name} {
	Objective: ${objective:CrossReference('TestDescription.testObjective')}
	Configuration: ${configuration:CrossReference('TestDescription.testConfiguration')}
	Expected behaviour
	ensure that {
		when {
			tester::interface sends "hello" to sut::interface
			${source:CrossReference('Message.sourceGate')} sends "ey" to sut::interface
		}	
		then {
			tester::interface receives "hello back" from sut::interface
		}				
	} 		
}		
</template></templates>
 No newline at end of file
+56 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.kw_Configuration" deleted="false" description="Configuraiton with necessary component and gate types" enabled="true" id="org.etsi.mts.tdl.tx.templates.Configuration" name="Configuration">Configuration ${name} {
	${componentType} sut as SUT,
	${componentType} tester as Tester,
	connect sut::${interfaceName} to tester::${interfaceName}
}
Message Gate ${gateType} accepts ${accepted}
Component ${componentType} {
	gate ${gateType} ${interfaceName}
}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.TestConfiguration" deleted="false" description="Alternative template" enabled="true" id="org.etsi.mts.tdl.tx.templates.Configuration.in" name="Configuration in">Configuration example${name} {
	${componentType} sut as SUT,
	${componentType} tester as Tester,
	connect sut::${interfaceName} to tester::${interfaceName}
}
Message Gate ${gateType} accepts ${dataType:CrossReference('GateType.dataType')}
Component ${componentType} {
	gate ${gateType} ${interfaceName}
}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.kw_Objective" deleted="false" description="Test objective template" enabled="true" id="org.etsi.mts.tdl.tx.templates.Objective" name="Objective">Objective ${name} {
	Description: "example"
	References: "reference"
}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.kw_Package" deleted="false" description="Basic package structure" enabled="true" id="org.etsi.mts.tdl.tx.templates.Package" name="Package">Package ${name} {
	Type integer
	Type string
	Message Gate http accepts string, integer
	Component node {
		gate http interface
	}
	Configuration base {
		node sut as SUT,
		node tester as Tester,
		connect sut::interface to tester::interface
	}
	Test example uses base {
		tester::interface sends "hello" to sut::interface
	}
}
	
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.AtomicBehaviour" deleted="false" description="Receive a message" enabled="true" id="org.etsi.mts.tdl.tx.templates.Receive.message" name="Receive message">${targetGate:CrossReference(Target.targetGate)} receives ${dataElement:CrossReference(DataElementUse.dataElement)} from ${source:CrossReference(Interaction.sourceGate)}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.AtomicBehaviour" deleted="false" description="Send a message" enabled="true" id="org.etsi.mts.tdl.tx.templates.Send.message" name="Send message">${source:CrossReference(Interaction.sourceGate)} sends ${dataElement:CrossReference(DataElementUse.dataElement)} to ${targetGate:CrossReference(Target.targetGate)}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.kw_Test" deleted="false" description="Test Purpose Description template" enabled="true" id="org.etsi.mts.tdl.tx.templates.TestPurposeDescription" name="TestPurposeDescription">Test Purpose Description ${name} {
	Objective: ${objective:CrossReference('TestDescription.testObjective')}
	Configuration: ${configuration:CrossReference('TestDescription.testConfiguration')}
	Expected behaviour
	ensure that {
		when {
			tester::interface sends "hello" to sut::interface
			${source:CrossReference('Message.sourceGate')} sends "ey" to sut::interface
		}	
		then {
			tester::interface receives "hello back" from sut::interface
		}				
	} 		
}		
</template></templates>
 No newline at end of file
+56 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.kw_Configuration" deleted="false" description="Configuraiton with necessary component and gate types" enabled="true" id="org.etsi.mts.tdl.tx.templates.Configuration" name="Configuration">Configuration ${name} {
	${componentType} sut as SUT,
	${componentType} tester as Tester,
	connect sut::${interfaceName} to tester::${interfaceName}
}
Message Gate ${gateType} accepts ${accepted}
Component ${componentType} {
	gate ${gateType} ${interfaceName}
}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.TestConfiguration" deleted="false" description="Alternative template" enabled="true" id="org.etsi.mts.tdl.tx.templates.Configuration.in" name="Configuration in">Configuration example${name} {
	${componentType} sut as SUT,
	${componentType} tester as Tester,
	connect sut::${interfaceName} to tester::${interfaceName}
}
Message Gate ${gateType} accepts ${dataType:CrossReference('GateType.dataType')}
Component ${componentType} {
	gate ${gateType} ${interfaceName}
}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.kw_Objective" deleted="false" description="Test objective template" enabled="true" id="org.etsi.mts.tdl.tx.templates.Objective" name="Objective">Objective ${name} {
	Description: "example"
	References: "reference"
}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.kw_Package" deleted="false" description="Basic package structure" enabled="true" id="org.etsi.mts.tdl.tx.templates.Package" name="Package">Package ${name} {
	Type integer
	Type string
	Message Gate http accepts string, integer
	Component node {
		gate http interface
	}
	Configuration base {
		node sut as SUT,
		node tester as Tester,
		connect sut::interface to tester::interface
	}
	Test example uses base {
		tester::interface sends "hello" to sut::interface
	}
}
	
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.AtomicBehaviour" deleted="false" description="Receive a message" enabled="true" id="org.etsi.mts.tdl.tx.templates.Receive.message" name="Receive message">${targetGate:CrossReference(Target.targetGate)} receives ${dataElement:CrossReference(DataElementUse.dataElement)} from ${source:CrossReference(Interaction.sourceGate)}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.AtomicBehaviour" deleted="false" description="Send a message" enabled="true" id="org.etsi.mts.tdl.tx.templates.Send.message" name="Send message">${source:CrossReference(Interaction.sourceGate)} sends ${dataElement:CrossReference(DataElementUse.dataElement)} to ${targetGate:CrossReference(Target.targetGate)}
</template><template autoinsert="true" context="org.etsi.mts.tdl.TDLtx.kw_Test" deleted="false" description="Test Purpose Description template" enabled="true" id="org.etsi.mts.tdl.tx.templates.TestPurposeDescription" name="TestPurposeDescription">Test Purpose Description ${name} {
	Objective: ${objective:CrossReference('TestDescription.testObjective')}
	Configuration: ${configuration:CrossReference('TestDescription.testConfiguration')}
	Expected behaviour
	ensure that {
		when {
			tester::interface sends "hello" to sut::interface
			${source:CrossReference('Message.sourceGate')} sends "ey" to sut::interface
		}	
		then {
			tester::interface receives "hello back" from sut::interface
		}				
	} 		
}		
</template></templates>
 No newline at end of file