From 80af8e035b01d3311a87d7a5cf5054f989119bc3 Mon Sep 17 00:00:00 2001 From: Andrea Enrici <andrea.enrici@nokia.com> Date: Wed, 7 Jan 2015 17:13:49 +0000 Subject: [PATCH] modified the parsing algo to parse ADs and junction ADs separately, produce output strings and merge the strings later. part I --- src/tmltranslator/TMLCPTextSpecification.java | 49 +++++++++++++------ 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/src/tmltranslator/TMLCPTextSpecification.java b/src/tmltranslator/TMLCPTextSpecification.java index 20072ba87c..b1e21e3170 100755 --- a/src/tmltranslator/TMLCPTextSpecification.java +++ b/src/tmltranslator/TMLCPTextSpecification.java @@ -274,6 +274,7 @@ public class TMLCPTextSpecification { private String makeTMLTextActivityDiagrams( TMLCP tmlcp ) { StringBuffer sb = new StringBuffer(); + StringBuffer sb2 = new StringBuffer(); ArrayList<TMLCPActivityDiagram> activityDiagList = tmlcp.getCPActivityDiagrams(); ArrayList<TMLCPActivityDiagram> junctionDiagList = new ArrayList<TMLCPActivityDiagram>(); ArrayList<String> diagsToRemove = new ArrayList<String>(); @@ -299,18 +300,31 @@ public class TMLCPTextSpecification { for( TMLCPActivityDiagram ad: activityDiagList ) { sb.append( "\nACTIVITY " + ad.getName() + "\n\n\tMAIN\n" ); - sb.append( makeSingleActivityDiagram( ad, junctionDiagList ) + "\n\tEND\n" ); + sb.append( makeSingleActivityDiagram( ad ) + "\n\tEND\n" ); sb.append( "\nEND " + ad.getName() + "\n" ); } - /*for( TMLCPActivityDiagram ad: junctionDiagList ) { - sb.append( "\nACTIVITY " + ad.getName() + "\n\n\tMAIN\n" ); - sb.append( makeSingleActivityDiagram( ad, junctionDiagList ) + "\n\tEND\n" ); - sb.append( "\nEND " + ad.getName() + "\n" ); - }*/ - return sb.toString(); + + ArrayList<String> junctionSL = new ArrayList<String>(); + for( TMLCPActivityDiagram ad: junctionDiagList ) { + //sb2.append( "\nACTIVITY " + ad.getName() ); + String temp = makeSingleJunctionDiagram( ad ); + sb2.append( temp ); + junctionSL.add( temp ); + //sb2.append( "\nEND " + ad.getName() + "\n" ); + } + + for( String s: junctionSL ) { + if( s.contains( "JUNCTION" ) ) { + String[] v = s.split( "JUNCTION" ); + TraceManager.addDev( "First part: " + v[0] ); + TraceManager.addDev( "Second part: " + v[1] ); + } + } + + return sb.toString() + sb2.toString(); } - private String makeSingleActivityDiagram( TMLCPActivityDiagram ad, ArrayList<TMLCPActivityDiagram> junctionDiagList ) { + private String makeSingleActivityDiagram( TMLCPActivityDiagram ad ) { StringBuffer sb = new StringBuffer( "\n\t<>; " ); TMLCPElement currentElement, nextElement; @@ -321,6 +335,7 @@ public class TMLCPTextSpecification { nextElements = currentElement.getNextElements(); if( nextElements.size() > 1 ) { // currentElement is a fork node sbFork = new StringBuffer(); + //TraceManager.addDev( "I AM IN DIAGRAM: " + ad.getName() ); currentElement = parseFork( nextElements ); // currentElement is the closing join, use attribute sbFork sb.append( sbFork.toString() ); sbFork.setLength(0); @@ -328,10 +343,10 @@ public class TMLCPTextSpecification { else { // currentElement is either a refToDiag or a junction if( isAJunction( currentElement ) ) { String s = ( (TMLCPRefAD) currentElement ).getName(); - sbJunction = new StringBuffer(); - sbJunction.append( parseJunction( getJunctionDiagram( s.substring(0, s.length()-2) , junctionDiagList ), junctionDiagList ) ); - sb.append( sbJunction.toString() ); - sbJunction.setLength(0); + //sbJunction = new StringBuffer(); + //sbJunction.append( parseJunction( getJunctionDiagram( s.substring(0, s.length()-2) , junctionDiagList ), junctionDiagList ) ); + sb.append( "\nJUNCTION" + SP + s + "\n" ); + //sbJunction.setLength(0); } else { sb.append( parseSequence( currentElement ) ); @@ -371,6 +386,7 @@ public class TMLCPTextSpecification { else { sbFork.append( parseSequence( nextElement ) ); } + //TraceManager.addDev( "I am the nextElement causing the exception: " + nextElement.toString() ); nextElement = nextElement.getNextElements().get(0); //no nested fork and join } sbFork = removeTrailingSymbol( sbFork ); @@ -381,7 +397,7 @@ public class TMLCPTextSpecification { return nextElement; } - private String parseJunction( TMLCPActivityDiagram ad, ArrayList<TMLCPActivityDiagram> junctionDiagList ) { + private String makeSingleJunctionDiagram( TMLCPActivityDiagram ad ) { StringBuffer sb = new StringBuffer(); TMLCPElement currentElement, nextElement; @@ -431,7 +447,12 @@ public class TMLCPTextSpecification { if( isAJunction( element ) ) { String s = ( (TMLCPRefAD) element ).getName(); sb = removeTrailingSymbol( sb ); - sb.append( "GOTO LOOP" + SP + s ); + if( s.equals( ad.getName() ) ) { + sb.append( "GOTO LOOP" + SP + s ); + } + else { + sb.append( "GOTO LOOP" + SP + "JUNCTION" + s ); + } break; } else { -- GitLab