diff --git a/.gitignore b/.gitignore
index 578eda5..81e9bd4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
datas
node_modules/
-dist/
\ No newline at end of file
+dist/
+trainingImages/
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 2a7d5c0..d252720 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,27 +5,17 @@
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
+
+
-
+
+
+
@@ -44,8 +34,8 @@
-
-
+
+
@@ -53,11 +43,11 @@
-
-
+
+
-
-
+
+
@@ -65,17 +55,11 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -83,52 +67,55 @@
-
-
+
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -175,6 +162,10 @@
.style
new Data
flowName
+ atetime
+ connect
+ console
+ constructor
@@ -188,7 +179,6 @@
-
@@ -207,23 +197,26 @@
-
+
+
-
+
+
+
-
+
-
+
-
+
@@ -231,6 +224,7 @@
+
@@ -349,7 +343,6 @@
-
@@ -385,7 +378,7 @@
-
+
@@ -441,8 +434,8 @@
-
+
@@ -465,6 +458,9 @@
+
+
+
1554992034761
@@ -477,17 +473,18 @@
-
+
+
-
+
-
+
@@ -592,27 +589,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -620,13 +596,6 @@
-
-
-
-
-
-
-
@@ -634,13 +603,6 @@
-
-
-
-
-
-
-
@@ -680,23 +642,10 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -707,44 +656,34 @@
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
-
-
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
+
+
@@ -758,10 +697,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/DataGeneratorPuppets/src/Puppet.ts b/DataGeneratorPuppets/src/Puppet.ts
index 8e86df4..8c6e81f 100644
--- a/DataGeneratorPuppets/src/Puppet.ts
+++ b/DataGeneratorPuppets/src/Puppet.ts
@@ -18,8 +18,6 @@ export class Puppet {
async execMovements(page, flow: {type: string; target: {x: number, y: number, width: number, height: number} }[]){
function humanize(val: number, bounduaries: {min: number, max: number}) {
- console.log(val);
- console.log(Math.random() * Math.abs(bounduaries.max));
return val + (Math.random() * Math.abs(bounduaries.max));
}
@@ -46,5 +44,8 @@ export class Puppet {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await this.execMovements(page, this.flow);
+ await page.close();
+ await browser.close();
+ return 'end';
}
}
diff --git a/DataGeneratorPuppets/src/main.ts b/DataGeneratorPuppets/src/main.ts
index 821d95c..310d3be 100644
--- a/DataGeneratorPuppets/src/main.ts
+++ b/DataGeneratorPuppets/src/main.ts
@@ -3,11 +3,40 @@ import {flows} from "../../DataGeneratorPuppets/src/datas/flow";
function main() {
- for(let i = 0; i < 30; i++) {
+ /*for(let i = 1; i <= 5; i++) {
let flowIndex = Math.floor(Math.random() * flows.length + 0);
const puppet = new Puppet('', flows[flowIndex].name, 'bot_'+i, flows[flowIndex].data);
puppet.run();
- }
+ }*/
+
+ let puppetCounter = 0;
+ let loop = true;
+ let counter = 0;
+
+ setInterval(() =>{
+ let res = [];
+ if(counter < 10) {
+ loop = false;
+ counter++;
+ let flowIndex = Math.floor(Math.random() * flows.length + 0);
+
+ res.push(new Puppet('', flows[flowIndex].name, 'bot_' + puppetCounter++, flows[flowIndex].data).run());
+
+ Promise.race(res)
+ .then(val => {
+ counter--;
+ console.log('Adios');
+ loop = true;
+ });
+ }
+ }, 50)
+
+ /*
+ const puppet2 = new Puppet('', flows[flowIndex].name, 'bot_'+puppetCounter++, flows[flowIndex].data).run();
+ const puppet3 = new Puppet('', flows[flowIndex].name, 'bot_'+puppetCounter++, flows[flowIndex].data).run();
+ const puppet4 = new Puppet('', flows[flowIndex].name, 'bot_'+puppetCounter++, flows[flowIndex].data).run();
+ const puppet5 = new Puppet('', flows[flowIndex].name, 'bot_'+puppetCounter++, flows[flowIndex].data).run('infinite');*/
+
}
main();
diff --git a/Predictor/PredictorWebService/package-lock.json b/Predictor/PredictorWebService/package-lock.json
index 5cca616..eb60339 100644
--- a/Predictor/PredictorWebService/package-lock.json
+++ b/Predictor/PredictorWebService/package-lock.json
@@ -13,6 +13,14 @@
"@types/node": "*"
}
},
+ "@types/bson": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.0.tgz",
+ "integrity": "sha512-pq/rqJwJWkbS10crsG5bgnrisL8pML79KlMKQMoQwLUjlPAkrUHMvHJ3oGwE7WHR61Lv/nadMwXVAD2b+fpD8Q==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@types/connect": {
"version": "3.4.32",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz",
@@ -51,6 +59,24 @@
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz",
"integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw=="
},
+ "@types/mongodb": {
+ "version": "3.1.26",
+ "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.1.26.tgz",
+ "integrity": "sha512-i7+l95IbqnGLRW+AJ6F2nzqosLUgU022lDuoHhbQquMV7tgek0vNUg9RwC2Fn7ImBSQSFdCWeU394ciPEwSeaQ==",
+ "requires": {
+ "@types/bson": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/mongoose": {
+ "version": "5.3.27",
+ "resolved": "https://registry.npmjs.org/@types/mongoose/-/mongoose-5.3.27.tgz",
+ "integrity": "sha512-1bQcQaYw4kN9mMuJC54FcfjyYe2gtxbUj9OAvrUA/5G2rSv0fuvu2jplizXqyADgBcXzPVEglDNzT3YrztWLoQ==",
+ "requires": {
+ "@types/mongodb": "*",
+ "@types/node": "*"
+ }
+ },
"@types/node": {
"version": "11.13.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.0.tgz",
@@ -184,6 +210,14 @@
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
},
+ "async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+ "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+ "requires": {
+ "lodash": "^4.17.10"
+ }
+ },
"async-each": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.2.tgz",
@@ -259,6 +293,11 @@
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
"integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="
},
+ "bluebird": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
+ "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
+ },
"body-parser": {
"version": "1.18.3",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
@@ -326,6 +365,11 @@
}
}
},
+ "bson": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.1.tgz",
+ "integrity": "sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg=="
+ },
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -1809,6 +1853,11 @@
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
},
+ "kareem": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.0.tgz",
+ "integrity": "sha512-6hHxsp9e6zQU8nXsP+02HGWXwTkOEw6IROhF2ZA28cYbUk4eJ6QbtZvdqZOdD9YPKghG3apk5eOCvs+tLl3lRg=="
+ },
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
@@ -1822,6 +1871,11 @@
"package-json": "^4.0.0"
}
},
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
+ },
"lodash.unescape": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz",
@@ -1874,6 +1928,12 @@
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
},
+ "memory-pager": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
+ "optional": true
+ },
"merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -1993,6 +2053,85 @@
}
}
},
+ "mongodb": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.2.3.tgz",
+ "integrity": "sha512-jw8UyPsq4QleZ9z+t/pIVy3L++51vKdaJ2Q/XXeYxk/3cnKioAH8H6f5tkkDivrQL4PUgUOHe9uZzkpRFH1XtQ==",
+ "requires": {
+ "mongodb-core": "^3.2.3",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "mongodb-core": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.2.3.tgz",
+ "integrity": "sha512-UyI0rmvPPkjOJV8XGWa9VCTq7R4hBVipimhnAXeSXnuAPjuTqbyfA5Ec9RcYJ1Hhu+ISnc8bJ1KfGZd4ZkYARQ==",
+ "requires": {
+ "bson": "^1.1.1",
+ "require_optional": "^1.0.1",
+ "safe-buffer": "^5.1.2",
+ "saslprep": "^1.0.0"
+ }
+ },
+ "mongoose": {
+ "version": "5.5.5",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.5.5.tgz",
+ "integrity": "sha512-rov43FpXDMoE22q8/iUoeSdg6zBtyTE/ZIIKRpQomASl0JOyD0479Weu9w5g0GjmP8fHmNjsWneoLIbnyGcnDQ==",
+ "requires": {
+ "async": "2.6.1",
+ "bson": "~1.1.1",
+ "kareem": "2.3.0",
+ "mongodb": "3.2.3",
+ "mongodb-core": "3.2.3",
+ "mongoose-legacy-pluralize": "1.0.2",
+ "mpath": "0.5.2",
+ "mquery": "3.2.0",
+ "ms": "2.1.1",
+ "regexp-clone": "0.0.1",
+ "safe-buffer": "5.1.2",
+ "sift": "7.0.1",
+ "sliced": "1.0.1"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ }
+ }
+ },
+ "mongoose-legacy-pluralize": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
+ "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
+ },
+ "mpath": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.5.2.tgz",
+ "integrity": "sha512-NOeCoW6AYc3hLi30npe7uzbD9b4FQZKH40YKABUCCvaKKL5agj6YzvHoNx8jQpDMNPgIa5bvSZQbQpWBAVD0Kw=="
+ },
+ "mquery": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.0.tgz",
+ "integrity": "sha512-qPJcdK/yqcbQiKoemAt62Y0BAc0fTEKo1IThodBD+O5meQRJT/2HSe5QpBNwaa4CjskoGrYWsEyjkqgiE0qjhg==",
+ "requires": {
+ "bluebird": "3.5.1",
+ "debug": "3.1.0",
+ "regexp-clone": "0.0.1",
+ "safe-buffer": "5.1.2",
+ "sliced": "1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -2406,6 +2545,11 @@
"safe-regex": "^1.1.0"
}
},
+ "regexp-clone": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz",
+ "integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk="
+ },
"registry-auth-token": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz",
@@ -2438,6 +2582,20 @@
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
},
+ "require_optional": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
+ "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
+ "requires": {
+ "resolve-from": "^2.0.0",
+ "semver": "^5.1.0"
+ }
+ },
+ "resolve-from": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
+ "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
+ },
"resolve-url": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
@@ -2474,6 +2632,15 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
+ "saslprep": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
+ "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
+ "optional": true,
+ "requires": {
+ "sparse-bitfield": "^3.0.3"
+ }
+ },
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
@@ -2567,11 +2734,21 @@
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
},
+ "sift": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz",
+ "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g=="
+ },
"signal-exit": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
},
+ "sliced": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
+ "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
+ },
"snapdragon": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
@@ -2709,6 +2886,15 @@
"resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
"integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
},
+ "sparse-bitfield": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+ "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
+ "optional": true,
+ "requires": {
+ "memory-pager": "^1.0.2"
+ }
+ },
"split-string": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
diff --git a/Predictor/PredictorWebService/package.json b/Predictor/PredictorWebService/package.json
index 3e7a8f2..9559202 100644
--- a/Predictor/PredictorWebService/package.json
+++ b/Predictor/PredictorWebService/package.json
@@ -5,10 +5,13 @@
"main": "main.js",
"dependencies": {
"@types/express": "^4.16.1",
+ "@types/mongoose": "^5.3.27",
"body-parser": "^1.18.3",
"canvas": "^2.4.1",
"cors": "^2.8.5",
"express": "^4.16.4",
+ "mongodb": "^3.2.3",
+ "mongoose": "^5.5.5",
"nodemon": "^1.18.10",
"query-string-parser": "^0.2.3",
"ws": "^6.2.1"
diff --git a/Predictor/PredictorWebService/src/image-creator/ImageCreatorService.ts b/Predictor/PredictorWebService/src/image-creator/ImageCreatorService.ts
index 638f300..c6d2978 100644
--- a/Predictor/PredictorWebService/src/image-creator/ImageCreatorService.ts
+++ b/Predictor/PredictorWebService/src/image-creator/ImageCreatorService.ts
@@ -1,8 +1,25 @@
import {Data} from "../../../../DataGatherer/src/shared/Data";
import {createCanvas, Image} from "canvas";
import fs from "fs";
+import mongoose from "mongoose";
+import {DataSchema} from "../predictor-web-service/models/Data";
export class ImageCreatorService {
+ private mongoEndpoint = 'mongodb://localhost:27017/predictorDatas';
+
+ constructor() {
+ mongoose.Promise = global.Promise;
+ mongoose.connect(this.mongoEndpoint, { useNewUrlParser: true },
+ err => {
+ if (err) {
+ console.log(err);
+ }
+ else {
+ console.log('Connected to MongoDb');
+ this.startProcessing(6, 200);
+ }
+ });
+ }
createImageFromData(data: Array, name: string) {
return new Promise((resolve, reject) => {
@@ -124,35 +141,40 @@ export class ImageCreatorService {
}
- public startProcessing(srcPath: string, destPath: string) {
+ public startProcessing(flows: number, agents: number, threshold: number = 5) {
const that = this;
- fs.readdir(srcPath, function(err, items) {
-
- for (var i=0; i {
- if(res) {
- console.log('virtual image ' + ' processed');
- that.saveImage(res['data'], './trainingImages/virtual/' + destPath + '/' + res['name'] + '.png');
- }
- });
-
- that.applyDataToImage(jsonData, items[i].split('.')[0])
- .then(res => {
- if(res) {
- console.log('real image ' + ' processed');
- that.saveImage(res['data'], './trainingImages/real/' + destPath + '/' + res['name'] + '.png');
- }
- });
- } catch (e) {
- console.log('file not valid');
- }
+ const orderedByFlows = [];
+ const promises = [];
+ for(let i=0; i {
+ for(let i = 0; i< flows; i++){
+ fs.mkdirSync('./trainingImages/virtual/' + 'flow'+(i+1), {recursive: true});
+ }
+ for(let i = 0; i < orderedByFlows.length; i++) {
+ for (let j of orderedByFlows[i]) {
+ if(j.data.length > threshold) {
+ that.createImageFromData(j.data, j.agentName + '_' + j.counter)
+ .then(res => {
+ if (res) {
+ console.log('virtual image ' + ' processed');
+ that.saveImage(res['data'], './trainingImages/virtual/' + j.flowName + '/' + res['name'] + '.png');
+ }
+ });
+ }
+ }
+ }
+ })
}
}
diff --git a/Predictor/PredictorWebService/src/image-creator/main.ts b/Predictor/PredictorWebService/src/image-creator/main.ts
index dad304a..676e254 100644
--- a/Predictor/PredictorWebService/src/image-creator/main.ts
+++ b/Predictor/PredictorWebService/src/image-creator/main.ts
@@ -2,10 +2,6 @@ import {ImageCreatorService} from "./ImageCreatorService";
function main() {
const imageCreatorService = new ImageCreatorService();
- imageCreatorService.startProcessing('./trainingDatas/flow1', 'flow1');
- imageCreatorService.startProcessing('./trainingDatas/flow2', 'flow2');
- imageCreatorService.startProcessing('./trainingDatas/flow3', 'flow3');
-
}
main();
diff --git a/Predictor/PredictorWebService/src/predictor-web-service/PredictorWebService.ts b/Predictor/PredictorWebService/src/predictor-web-service/PredictorWebService.ts
index 591da60..e524348 100644
--- a/Predictor/PredictorWebService/src/predictor-web-service/PredictorWebService.ts
+++ b/Predictor/PredictorWebService/src/predictor-web-service/PredictorWebService.ts
@@ -3,9 +3,10 @@ import * as WebSocket from 'ws';
import * as http from 'http';
import cors from 'cors';
import * as bodyParser from "body-parser";
-import fs from 'fs';
import {Data} from "../../../../DataGatherer/src/shared/Data";
import parser from 'query-string-parser';
+import mongoose from "mongoose";
+import {DataSchema} from './models/Data';
export class PredictorWebService {
@@ -15,6 +16,7 @@ export class PredictorWebService {
private app: express.Application;
private httpServer: http.Server;
private wss: WebSocket.Server;
+ private mongoEndpoint = 'mongodb://localhost:27017/predictorDatas';
private counter: number = 0;
@@ -22,6 +24,18 @@ export class PredictorWebService {
this.url = url;
this.portApi = portApi;
this.portWebSocket = portWebSocket;
+ mongoose.Promise = global.Promise;
+ mongoose.connect(this.mongoEndpoint, { useNewUrlParser: true },
+ err => {
+ if (err) {
+ console.log(err);
+ }
+ else {
+ console.log('Connected to MongoDb');
+ this.startPredictor();
+ this.startTrainer();
+ }
+ });
}
public startTrainer() {
@@ -38,9 +52,7 @@ export class PredictorWebService {
that.counter++;
that.saveData(data, queryObj.flowName, queryObj.agentName)
.then( (msg) => {
- if(msg === 'ok') {
- ws.send('trainer - Data saved');
- }
+ ws.send('trainer - Data saved');
})
.catch( (err) => {
ws.send('trainer - Error while saving data');
@@ -71,26 +83,8 @@ export class PredictorWebService {
saveData(data: Array, flowName: string, agentName: string) {
return new Promise((resolve, reject) => {
- console.log(flowName);
- console.log(agentName);
- if(flowName && agentName) {
- fs.mkdirSync('./trainingDatas/' + flowName + '/', { recursive: true });
- } else {
- fs.mkdirSync('./trainingDatas/undefined', { recursive: true });
- }
- if(!flowName && !agentName) {
- fs.writeFile('./trainingDatas/undefined/' + this.counter + '.json', JSON.stringify(data), 'utf8', function (err) {
- if (err) reject('err');
- console.log('Data saved');
- resolve('ok');
- });
- } else {
- fs.writeFile('./trainingDatas/' + flowName + '/' + agentName + '_' + this.counter + '.json', JSON.stringify(data), 'utf8', function (err) {
- if (err) reject('err');
- console.log('Data saved');
- resolve('ok');
- });
- }
+ const dataSchema = new DataSchema({flowName: flowName, agentName: agentName, counter: this.counter, data: data});
+ resolve(dataSchema.save());
});
}
}
diff --git a/Predictor/PredictorWebService/src/predictor-web-service/main.ts b/Predictor/PredictorWebService/src/predictor-web-service/main.ts
index 10b107d..710203a 100644
--- a/Predictor/PredictorWebService/src/predictor-web-service/main.ts
+++ b/Predictor/PredictorWebService/src/predictor-web-service/main.ts
@@ -2,8 +2,7 @@ import { PredictorWebService } from "./PredictorWebService";
function main() {
const predictorWebService = new PredictorWebService('/', 4000, 4100);
- predictorWebService.startPredictor();
- predictorWebService.startTrainer();
+
}
main();
diff --git a/Predictor/PredictorWebService/src/predictor-web-service/models/Data.ts b/Predictor/PredictorWebService/src/predictor-web-service/models/Data.ts
new file mode 100644
index 0000000..4e8dcb9
--- /dev/null
+++ b/Predictor/PredictorWebService/src/predictor-web-service/models/Data.ts
@@ -0,0 +1,14 @@
+import mongoose from "mongoose";
+import {Data} from "../../../../../DataGatherer/src/shared/Data";
+import {Schema} from "mongoose";
+
+const DataSchema_:Schema = new Schema(
+ {
+ flowName: String,
+ agentName: String,
+ counter: Number,
+ data: Array()
+ }
+);
+
+export const DataSchema: any = mongoose.model('Data', DataSchema_, 'datas');