blob: 399db6060cd2d87212958c4ba49c234679c8833c [file] [log] [blame]
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();