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();