[CCSDK-28] populated the seed code for dgbuilder
[ccsdk/distribution.git] / dgbuilder / public / util / js / migrateFlow.js
1 fs=require('fs');
2 _=require('lodash');
3 //extras=require("/home/users/schinthakayala/nodered/sheshi/dgxml/extras");
4 //puts=extras.puts;
5 var path = require('path');
6 var appDir = path.dirname(require.main.filename);
7
8 var dgjson = [];
9 var level = 0;
10
11 function getJSON() {
12 var filename = process.argv[2]; 
13   console.log("reading json from flows file" + filename);
14   //flowsJson=fs.readFileSync(appDir + "/flows_ss4nj01dev01.localdomain.json").toString();
15   flowsJson=fs.readFileSync(filename).toString();
16   // Let's make a backup while we're here...
17   ts=Date.now().toString();
18   flows=JSON.parse(flowsJson);
19   //console.log("returning flows");
20   return(flows);
21 }
22
23 function getStartTag(xmlStr){
24         var startTag= null ;
25         if(xmlStr != null){
26                 xmlStr = xmlStr.trim();
27         }
28         try{
29                 var regex = new RegExp("(<)([^ >]+)");
30                 var match = regex.exec(xmlStr);
31                 if(match != null){
32                         if(match[1] != undefined && match[2] != undefined){
33                                 startTag = match[2];
34                         }
35                 }
36         }catch(e){
37                 console.log(e);
38         }
39         return startTag;
40
41 }
42
43 function getAttributeValue(xmlStr,attribute){
44         var attrVal=null;
45         try{
46                 var myRe = new RegExp(attribute + "=['\"](.*)['\"] ","m");
47                 var myArray = myRe.exec(xmlStr);
48                 if(myArray != null && myArray[1] != null){
49                         attrVal=myArray[1];
50                 }
51         }catch(err){
52                 console.log(err);
53         }
54         return attrVal;
55 }
56
57 function processNodes(){
58         var nodes = getJSON();
59         //console.dir(nodes);
60
61         nodes.forEach( function(node) {
62                 if( node.xml != null && node.xml.indexOf("<service-logic") != -1){
63                         //console.log(node.xml);
64                         var module="";
65                         var version="";
66                         module=getAttributeValue(node.xml,"module");
67                         /*
68                         var myRe = new RegExp("module=\"(.*)\" ", "m");
69                         var myArray = myRe.exec(node.xml);
70                         if(myArray != null && myArray[1] != null){
71                                 module=myArray[1];
72                         }
73                         myRe = new RegExp("version=\"(.*)\">", "m");
74                          myArray = myRe.exec(node.xml);
75                         if(myArray != null && myArray[1] != null){
76                                 version=myArray[1];
77                                 //console.dir(myArray);
78                         }
79                         */
80                         version=getAttributeValue(node.xml,"version");
81                         node.type="service-logic";
82                         //node.category="DGEmain";
83                         node.module=module;
84                         node.version=version;
85                         if(module != null && version != null){
86                                 node.name=module+ "_" + version;
87                         }
88                         console.log("module=" + module);
89                         console.log("version=" + version);
90                 }else if( node.xml != null && node.xml.indexOf("<method") != -1){
91                         var rpc=getAttributeValue(node.xml,"rpc");
92                         node.type="method";
93                         if(rpc != null){
94                                 node.name=rpc;
95                         }
96                 }else if( node.xml != null && node.xml.indexOf("<outcome") != -1){
97                          var uxml = node.xml.toUpperCase();
98                         if(uxml.indexOf("FAILURE") != -1){
99                                 node.type="failure";
100                         }else if(uxml.indexOf("SUCCESS") != -1){
101                                 node.type="success";
102                         }else if(uxml.indexOf("TRUE") != -1){
103                                 node.type="outcomeTrue";
104                         }else if(uxml.indexOf("FALSE") != -1){
105                                 node.type="outcomeFalse";
106                         }else if(uxml.indexOf("ALREADY-ACTIVE") != -1){
107                                 node.type="already-active";
108                         }else if(uxml.indexOf("NOT-FOUND") != -1){
109                                 node.type="not-found";
110                         }else{
111                                 node.type="other";
112                         }
113                 }else if( node.xml != null && node.xml.indexOf("<return") != -1){
114                          var uxml = node.xml.toUpperCase();
115                         if(uxml.indexOf("FAILURE") != -1){
116                                 node.type="returnFailure";
117                         }else if(uxml.indexOf("SUCCESS") != -1){
118                                 node.type="returnSuccess";
119                         }
120                 }else if( node.xml != null && node.xml.indexOf("<exists") != -1){
121                         node.type="exists";
122                 }else if( node.xml != null && node.xml.indexOf("<block") != -1){
123                         node.type="block";
124                         var atomic=getAttributeValue(node.xml,"atomic");
125                         
126                         if(atomic=='true'){
127                                 node.atomic="true";
128                                 node.name="block : atomic";
129                         }else{
130                                 node.atomic="false";
131                                 node.name="block";
132                         }
133                 }else if( node.xml != null && node.xml.indexOf("<save") != -1){
134                         node.type="save";
135                 }else if( node.xml != null && node.xml.indexOf("<switch") != -1){
136                         node.type="switchNode";
137                 }else if( node.xml != null && node.xml.indexOf("<record") != -1){
138                         node.type="record";
139                 }else if( node.xml != null && node.xml.indexOf("<call") != -1){
140                         node.type="call";
141                 }else if( node.xml != null && node.xml.indexOf("<release") != -1){
142                         node.type="release";
143                 }else if( node.xml != null && node.xml.indexOf("<set") != -1){
144                         node.type="set";
145                 }else if( node.xml != null && node.xml.indexOf("<for") != -1){
146                         node.type="for";
147                 }else if( node.xml != null && node.xml.indexOf("<is-available") != -1){
148                         node.type="is-available";
149                 }else if( node.xml != null && node.xml.indexOf("<reserve") != -1){
150                         node.type="reserve";
151                 }else if( node.xml != null && node.xml.indexOf("<get-resource") != -1){
152                         node.type="get-resource";
153                 }else if( node.xml != null && node.xml.indexOf("<configure") != -1){
154                         node.type="configure";
155                 }else if( node.xml != null && node.xml.indexOf("<delete") != -1){
156                         node.type="delete";
157                 }else if( node.xml != null && node.xml.indexOf("<execute") != -1){
158                         node.type="execute";
159                 }
160                 //console.dir(node);
161         });     
162 /*
163         var moduleName = "service-logic";
164         var methodName = "method";
165         for(var i=0;nodes != null && i<nodes.length;i++){
166                         if(nodes[i].type == "service-logic"){
167                                 moduleName = nodes[i].name;
168                         }
169                         if(nodes[i].type == "method"){
170                                 methodName = nodes[i].name;
171                         }
172         }
173         var fName = moduleName + "_" + methodName + ".json";
174         fName = fName.replace(/\s/g, "_");
175
176         var newFilename = process.argv[3];
177         var filename =   newFilename + "/" + fName;
178         console.log("filename" + filename);
179         fs.writeFileSync(filename, JSON.stringify(nodes,null,4));
180         */
181 }
182
183
184 processNodes();