[CCSDK-28] populated the seed code for dgbuilder
[ccsdk/distribution.git] / dgbuilder / public / util / js / migrateFlow.js
diff --git a/dgbuilder/public/util/js/migrateFlow.js b/dgbuilder/public/util/js/migrateFlow.js
new file mode 100644 (file)
index 0000000..399db60
--- /dev/null
@@ -0,0 +1,184 @@
+fs=require('fs');
+_=require('lodash');
+//extras=require("/home/users/schinthakayala/nodered/sheshi/dgxml/extras");
+//puts=extras.puts;
+var path = require('path');
+var appDir = path.dirname(require.main.filename);
+
+var dgjson = [];
+var level = 0;
+
+function getJSON() {
+var filename = process.argv[2]; 
+  console.log("reading json from flows file" + filename);
+  //flowsJson=fs.readFileSync(appDir + "/flows_ss4nj01dev01.localdomain.json").toString();
+  flowsJson=fs.readFileSync(filename).toString();
+  // Let's make a backup while we're here...
+  ts=Date.now().toString();
+  flows=JSON.parse(flowsJson);
+  //console.log("returning flows");
+  return(flows);
+}
+
+function getStartTag(xmlStr){
+        var startTag= null ;
+       if(xmlStr != null){
+               xmlStr = xmlStr.trim();
+       }
+        try{
+                var regex = new RegExp("(<)([^ >]+)");
+                var match = regex.exec(xmlStr);
+                if(match != null){
+                        if(match[1] != undefined && match[2] != undefined){
+                                startTag = match[2];
+                        }
+                }
+        }catch(e){
+                console.log(e);
+        }
+       return startTag;
+
+}
+
+function getAttributeValue(xmlStr,attribute){
+       var attrVal=null;
+       try{
+               var myRe = new RegExp(attribute + "=['\"](.*)['\"] ","m");
+               var myArray = myRe.exec(xmlStr);
+               if(myArray != null && myArray[1] != null){
+                       attrVal=myArray[1];
+               }
+       }catch(err){
+               console.log(err);
+       }
+       return attrVal;
+}
+
+function processNodes(){
+       var nodes = getJSON();
+       //console.dir(nodes);
+
+       nodes.forEach( function(node) {
+               if( node.xml != null && node.xml.indexOf("<service-logic") != -1){
+                       //console.log(node.xml);
+                       var module="";
+                       var version="";
+                       module=getAttributeValue(node.xml,"module");
+                       /*
+                       var myRe = new RegExp("module=\"(.*)\" ", "m");
+                       var myArray = myRe.exec(node.xml);
+                       if(myArray != null && myArray[1] != null){
+                               module=myArray[1];
+                       }
+                       myRe = new RegExp("version=\"(.*)\">", "m");
+                        myArray = myRe.exec(node.xml);
+                       if(myArray != null && myArray[1] != null){
+                               version=myArray[1];
+                               //console.dir(myArray);
+                       }
+                       */
+                       version=getAttributeValue(node.xml,"version");
+                       node.type="service-logic";
+                       //node.category="DGEmain";
+                       node.module=module;
+                       node.version=version;
+                       if(module != null && version != null){
+                               node.name=module+ "_" + version;
+                       }
+                       console.log("module=" + module);
+                       console.log("version=" + version);
+               }else if( node.xml != null && node.xml.indexOf("<method") != -1){
+                       var rpc=getAttributeValue(node.xml,"rpc");
+                       node.type="method";
+                       if(rpc != null){
+                               node.name=rpc;
+                       }
+               }else if( node.xml != null && node.xml.indexOf("<outcome") != -1){
+                        var uxml = node.xml.toUpperCase();
+                       if(uxml.indexOf("FAILURE") != -1){
+                               node.type="failure";
+                       }else if(uxml.indexOf("SUCCESS") != -1){
+                               node.type="success";
+                       }else if(uxml.indexOf("TRUE") != -1){
+                               node.type="outcomeTrue";
+                       }else if(uxml.indexOf("FALSE") != -1){
+                               node.type="outcomeFalse";
+                       }else if(uxml.indexOf("ALREADY-ACTIVE") != -1){
+                               node.type="already-active";
+                       }else if(uxml.indexOf("NOT-FOUND") != -1){
+                               node.type="not-found";
+                       }else{
+                               node.type="other";
+                       }
+               }else if( node.xml != null && node.xml.indexOf("<return") != -1){
+                        var uxml = node.xml.toUpperCase();
+                       if(uxml.indexOf("FAILURE") != -1){
+                               node.type="returnFailure";
+                       }else if(uxml.indexOf("SUCCESS") != -1){
+                               node.type="returnSuccess";
+                       }
+               }else if( node.xml != null && node.xml.indexOf("<exists") != -1){
+                       node.type="exists";
+               }else if( node.xml != null && node.xml.indexOf("<block") != -1){
+                       node.type="block";
+                       var atomic=getAttributeValue(node.xml,"atomic");
+                       
+                       if(atomic=='true'){
+                               node.atomic="true";
+                               node.name="block : atomic";
+                       }else{
+                               node.atomic="false";
+                               node.name="block";
+                       }
+               }else if( node.xml != null && node.xml.indexOf("<save") != -1){
+                       node.type="save";
+               }else if( node.xml != null && node.xml.indexOf("<switch") != -1){
+                       node.type="switchNode";
+               }else if( node.xml != null && node.xml.indexOf("<record") != -1){
+                       node.type="record";
+               }else if( node.xml != null && node.xml.indexOf("<call") != -1){
+                       node.type="call";
+               }else if( node.xml != null && node.xml.indexOf("<release") != -1){
+                       node.type="release";
+               }else if( node.xml != null && node.xml.indexOf("<set") != -1){
+                       node.type="set";
+               }else if( node.xml != null && node.xml.indexOf("<for") != -1){
+                       node.type="for";
+               }else if( node.xml != null && node.xml.indexOf("<is-available") != -1){
+                       node.type="is-available";
+               }else if( node.xml != null && node.xml.indexOf("<reserve") != -1){
+                       node.type="reserve";
+               }else if( node.xml != null && node.xml.indexOf("<get-resource") != -1){
+                       node.type="get-resource";
+               }else if( node.xml != null && node.xml.indexOf("<configure") != -1){
+                       node.type="configure";
+               }else if( node.xml != null && node.xml.indexOf("<delete") != -1){
+                       node.type="delete";
+               }else if( node.xml != null && node.xml.indexOf("<execute") != -1){
+                       node.type="execute";
+               }
+               //console.dir(node);
+       });     
+/*
+       var moduleName = "service-logic";
+       var methodName = "method";
+        for(var i=0;nodes != null && i<nodes.length;i++){
+                        if(nodes[i].type == "service-logic"){
+                                moduleName = nodes[i].name;
+                        }
+                        if(nodes[i].type == "method"){
+                                methodName = nodes[i].name;
+                        }
+        }
+       var fName = moduleName + "_" + methodName + ".json";
+       fName = fName.replace(/\s/g, "_");
+
+       var newFilename = process.argv[3];
+       var filename =   newFilename + "/" + fName;
+       console.log("filename" + filename);
+        fs.writeFileSync(filename, JSON.stringify(nodes,null,4));
+       */
+}
+
+
+processNodes();