Commit 43a9418b authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ behaviour diagram generator improvement

parent 6e400989
Loading
Loading
Loading
Loading
Loading
+32 −23
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import org.eclipse.ocl.pivot.utilities.OCL;
import org.eclipse.ocl.pivot.utilities.ParserException;
import org.eclipse.ocl.pivot.utilities.Query;
import org.eclipse.xtext.EcoreUtil2;
import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
import org.etsi.mts.tdl.ComponentInstance;
import org.etsi.mts.tdl.ComponentInstanceRole;
import org.etsi.mts.tdl.Extension;
@@ -48,6 +49,7 @@ import org.etsi.mts.tdl.tdlPackage;
import org.etsi.mts.tdl.asn2tdl.ASN2TDLTranslator;
import org.etsi.mts.tdl.constraints.evl.Validator;
import org.etsi.mts.tdl.helper.TDLHelper;
import org.etsi.mts.tdl.impl.CompoundBehaviourImpl;
import org.etsi.mts.tdl.json2tdl.JSON2TDLTranslator;
import org.etsi.mts.tdl.json2tdl.TDL2JSONTranslator;
import org.etsi.mts.tdl.openapi2tdl.next.OpenAPI2TDLTranslatorNext;
@@ -434,6 +436,7 @@ public class Standalone {
					e1 = e0;
					e0 = e;
				}
				//TODO: ports need to be configuration prefixed if only one diagram
				String c = ""+e0.getComponent().getName()+"_"+e0.getGate().getName()+""
						+" <--> "
						+""+e1.getComponent().getName()+"_"+e1.getGate().getName()+""
@@ -456,11 +459,11 @@ public class Standalone {
    private void generateBehaviour(String path, EObject model) {
        List<TestDescription> testDescriptions = EcoreUtil2.getAllContentsOfType(model, TestDescription.class);

        
        String d = "";
		for (TestDescription td : testDescriptions) {
            String d = "@startuml\n";
			d += "@startuml\n";
            d += "hide footbox\n";
            d+="title Foot Box removed\n";
            d += "title "+td.getName()+"\n";
            TestConfiguration tc = td.getTestConfiguration();
			for (var i : tc.getComponentInstance()) {
				if (i.getRole() == ComponentInstanceRole.TESTER) {
@@ -487,25 +490,21 @@ public class Standalone {
            
            if (td.getBehaviourDescription()!= null) {
                var b = td.getBehaviourDescription().getBehaviour();
                try {
                    d += processBehaviour(castObject(b.getClass(), b));
                } catch (Exception e) {
                    System.out.println("Error: "+e.getMessage());
                }
				d += processBehaviour(b);
            }

            d += "@enduml";
            d += "@enduml\n";
            //TODO: need to split behaviours..
		}
		System.out.println(d);
		try {
			//TODO: make configurable
                Files.writeString(Path.of(path+"-"+td.getName()+"-behaviour.md"), d);
			Files.writeString(Path.of(path+"-behaviour.md"), d);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
    }

    private <T> T castObject(Class<T> clazz, Object object) {
        return (T) object;
@@ -513,14 +512,23 @@ public class Standalone {

    private String processBehaviour(Behaviour b) {
    	String d = "' Not supported yet: "+b.getClass().getName();
        System.out.println(d);
        return d+"\n";
    	switch (b.eClass().getClassifierID()) {
		case tdlPackage.COMPOUND_BEHAVIOUR:
			d = processBehaviour((CompoundBehaviour)b);
			break;
		case tdlPackage.MESSAGE:
			d = processBehaviour((Message)b);
			break;
		default:
			break;
		}
        return d;
    }

    private String processBehaviour(CompoundBehaviour b) {
        String d = "";
        for (var nested : b.getBlock().getBehaviour()) {
            d+=processBehaviour(castObject(nested.getClass(), nested));
            d += processBehaviour(nested);
        }
        //TODO: handle prefixes and indentation?
        return d;
@@ -533,8 +541,9 @@ public class Standalone {
        var t = tc.container().getName()+"_"+tc.getName();
        var a = b.getArgument();
        String d = "";
        String at = NodeModelUtils.findActualNodeFor(a).getText();
        //TODO: use node model untils to get text (needs processing)
        d += c+" -> "+t+" : "+b.toString()+"\n";
        d += c+" -> "+t+" : "+at.replaceAll("\n", "\\n")+"\n";
        return d;
    }