diff options
Diffstat (limited to 'dgbuilder/public/util/js/migrateFlow.js')
-rw-r--r-- | dgbuilder/public/util/js/migrateFlow.js | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/dgbuilder/public/util/js/migrateFlow.js b/dgbuilder/public/util/js/migrateFlow.js new file mode 100644 index 00000000..399db606 --- /dev/null +++ b/dgbuilder/public/util/js/migrateFlow.js @@ -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(); |