You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by an...@apache.org on 2016/03/04 10:31:03 UTC
[08/50] ignite git commit: IGNITE-2287 Reworked codegeneration of
example code.
IGNITE-2287 Reworked codegeneration of example code.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/dc5ada54
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/dc5ada54
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/dc5ada54
Branch: refs/heads/ignite-843
Commit: dc5ada545a57a3020395d350dfc0ea0c8cb20332
Parents: 695c217
Author: vsisko <vs...@gridgain.com>
Authored: Fri Feb 19 14:54:48 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Feb 19 14:54:48 2016 +0700
----------------------------------------------------------------------
.../main/js/helpers/generator/generator-java.js | 199 ++++++++++++++-----
1 file changed, 148 insertions(+), 51 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/dc5ada54/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
index abee0be..57ac1da 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
@@ -2561,13 +2561,7 @@ $generatorJava.dataSourceClassName = function (res, storeFactory) {
return undefined;
};
-var MAX_PARKING_CNT = 5;
-var MAX_CAR_CNT = 10;
-var MAX_COUNTRY_CNT = 5;
-var MAX_DEPARTMENT_CNT = 5;
-var MAX_EMPLOYE_CNT = 10;
-
-// Defined queries for demo data.
+// Descriptors for generation of demo data.
var PREDEFINED_QUERIES = [
{
schema: 'CARS',
@@ -2576,13 +2570,13 @@ var PREDEFINED_QUERIES = [
'ID INTEGER NOT NULL PRIMARY KEY,\n' +
'NAME VARCHAR(50) NOT NULL,\n' +
'CAPACITY INTEGER NOT NULL)',
- fillQuery: function () {
- var queries = ['DELETE FROM CARS.PARKING;'];
-
- for (var id = 0; id < MAX_PARKING_CNT; id++)
- queries.push('INSERT INTO CARS.PARKING(ID, NAME, CAPACITY) VALUES(' + id + ', \'Parking #' + (id + 1) + '\', 10);');
-
- return queries;
+ clearQuery: 'DELETE FROM CARS.PARKING',
+ insertCntConsts: [{name: 'EXAMPLE_MAX_PARKING_CNT', val: 5, comment: 'How many parkings to generate.'}],
+ insertPattern: ['INSERT INTO CARS.PARKING(ID, NAME, CAPACITY) VALUES(?, ?, ?)'],
+ fillInsertParameters: function (res) {
+ res.line('stmt.setInt(1, id);');
+ res.line('stmt.setString(2, "Parking #" + (id + 1));');
+ res.line('stmt.setInt(3, 10 + rnd.nextInt(20));');
},
selectQuery: [
"SELECT * FROM PARKING WHERE CAPACITY >= 20"
@@ -2595,13 +2589,17 @@ var PREDEFINED_QUERIES = [
'ID INTEGER NOT NULL PRIMARY KEY,\n' +
'PARKING_ID INTEGER NOT NULL,\n' +
'NAME VARCHAR(50) NOT NULL);',
- fillQuery: function () {
- var queries = ['DELETE FROM CARS.CAR;'];
-
- for (var id = 0; id < MAX_CAR_CNT; id++)
- queries.push('INSERT INTO CARS.CAR(ID, PARKING_ID, NAME) VALUES(' + id + ', ' + Math.floor(Math.random() * MAX_PARKING_CNT) + ', \'Car #' + (id + 1) + '\');');
-
- return queries;
+ clearQuery: 'DELETE FROM CARS.CAR',
+ rndRequired: true,
+ insertCntConsts: [
+ {name: 'EXAMPLE_MAX_CAR_CNT', val: 10, comment: 'How many cars to generate.'},
+ {name: 'EXAMPLE_MAX_PARKING_CNT', val: 5, comment: 'How many parkings to generate.'}
+ ],
+ insertPattern: ['INSERT INTO CARS.CAR(ID, PARKING_ID, NAME) VALUES(?, ?, ?)'],
+ fillInsertParameters: function (res) {
+ res.line('stmt.setInt(1, id);');
+ res.line('stmt.setInt(2, rnd.nextInt(EXAMPLE_MAX_PARKING_CNT));');
+ res.line('stmt.setString(3, "Car #" + (id + 1));');
},
selectQuery: [
"SELECT * FROM CAR WHERE PARKINGID = 2"
@@ -2613,13 +2611,13 @@ var PREDEFINED_QUERIES = [
'ID INTEGER NOT NULL PRIMARY KEY,\n' +
'NAME VARCHAR(50),\n' +
'POPULATION INTEGER NOT NULL);',
- fillQuery: function () {
- var queries = ['DELETE FROM COUNTRY;'];
-
- for (var id = 0; id < MAX_COUNTRY_CNT; id++)
- queries.push('INSERT INTO COUNTRY(ID, NAME, POPULATION) VALUES(' + id + ', \'Country #' + (id + 1) + '\', ' + ((id + 1) * 10000000) + ');');
-
- return queries;
+ clearQuery: 'DELETE FROM COUNTRY',
+ insertCntConsts: [{name: 'EXAMPLE_MAX_COUNTRY_CNT', val: 5, comment: 'How many countries to generate.'}],
+ insertPattern: ['INSERT INTO COUNTRY(ID, NAME, POPULATION) VALUES(?, ?, ?)'],
+ fillInsertParameters: function (res) {
+ res.line('stmt.setInt(1, id);');
+ res.line('stmt.setString(2, "Country #" + (id + 1));');
+ res.line('stmt.setInt(3, 10000000 + rnd.nextInt(100000000));');
},
selectQuery: [
"SELECT * FROM COUNTRY WHERE POPULATION BETWEEN 15000000 AND 25000000"
@@ -2631,13 +2629,17 @@ var PREDEFINED_QUERIES = [
'ID INTEGER NOT NULL PRIMARY KEY,\n' +
'COUNTRY_ID INTEGER NOT NULL,\n' +
'NAME VARCHAR(50) NOT NULL);',
- fillQuery: function () {
- var queries = ['DELETE FROM DEPARTMENT;'];
-
- for (var id = 0; id < MAX_DEPARTMENT_CNT; id++)
- queries.push('INSERT INTO DEPARTMENT(ID, COUNTRY_ID, NAME) VALUES(' + id + ', ' + Math.floor(Math.random() * MAX_COUNTRY_CNT) + ', \'Department #' + (id + 1) + '\');');
-
- return queries;
+ clearQuery: 'DELETE FROM DEPARTMENT',
+ rndRequired: true,
+ insertCntConsts: [
+ {name: 'EXAMPLE_MAX_DEPARTMENT_CNT', val: 5, comment: 'How many departments to generate.'},
+ {name: 'EXAMPLE_MAX_COUNTRY_CNT', val: 5, comment: 'How many countries to generate.'}
+ ],
+ insertPattern: ['INSERT INTO DEPARTMENT(ID, COUNTRY_ID, NAME) VALUES(?, ?, ?)'],
+ fillInsertParameters: function (res) {
+ res.line('stmt.setInt(1, id);');
+ res.line('stmt.setInt(2, rnd.nextInt(EXAMPLE_MAX_COUNTRY_CNT));');
+ res.line('stmt.setString(3, "Department #" + (id + 1));');
},
selectQuery: [
"SELECT * FROM DEPARTMENT"
@@ -2656,23 +2658,62 @@ var PREDEFINED_QUERIES = [
'HIRE_DATE DATE NOT NULL,\n' +
'JOB VARCHAR(50) NOT NULL,\n' +
'SALARY DOUBLE);',
- fillQuery: function () {
- var queries = ['DELETE FROM EMPLOYEE;'];
+ clearQuery: 'DELETE FROM EMPLOYEE',
+ rndRequired: true,
+ insertCntConsts: [
+ {name: 'EXAMPLE_MAX_EMPLOYEE_CNT', val: 10, comment: 'How many employees to generate.'},
+ {name: 'EXAMPLE_MAX_DEPARTMENT_CNT', val: 5, comment: 'How many departments to generate.'}
+ ],
+ specialGeneration: function (res, conVar) {
+ $generatorJava.declareVariableCustom(res, 'stmt', 'java.sql.PreparedStatement', conVar +
+ '.prepareStatement("INSERT INTO EMPLOYEE(ID, DEPARTMENT_ID, FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, HIRE_DATE, JOB, SALARY) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)")');
+
+ res.startBlock('for (int id = 0; id < EXAMPLE_MAX_DEPARTMENT_CNT; id ++) {');
+ res.line('stmt.setInt(1, id);');
+ res.line('stmt.setInt(2, id);');
+ res.line('stmt.setString(3, "First name manager #" + (id + 1));');
+ res.line('stmt.setString(4, "Last name manager#" + (id + 1));');
+ res.line('stmt.setString(5, "Email manager#" + (id + 1));');
+ res.line('stmt.setString(6, "Phone number manager#" + (id + 1));');
+ res.line('stmt.setString(7, "2014-01-01");');
+ res.line('stmt.setString(8, "Job manager #" + (id + 1));');
+ res.line('stmt.setDouble(9, 1000.0 + rnd.nextInt(500));');
- for (var id = 0; id < MAX_DEPARTMENT_CNT; id++)
- queries.push('INSERT INTO EMPLOYEE(ID, DEPARTMENT_ID, FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, HIRE_DATE, JOB, SALARY) VALUES(' +
- id + ', ' + id + ', \'First name manager #' + (id + 1) + '\', \'Last name manager #' + (id + 1) + '\', \'Email manager #' +
- (id + 1) + '\', \'Phone number manager #' + (id + 1) + '\', \'2014-01-01\', \'Job manager #' + (id + 1) + '\', ' + (1100 + 50 * id) + ');');
+ res.needEmptyLine = true;
- for (id = 0; id < MAX_EMPLOYE_CNT; id++) {
- var depId = Math.floor(Math.random() * MAX_DEPARTMENT_CNT);
+ res.line('stmt.executeUpdate();');
- queries.push('INSERT INTO EMPLOYEE(ID, DEPARTMENT_ID, MANAGER_ID, FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, HIRE_DATE, JOB, SALARY) VALUES(' +
- (100 + id) + ', ' + depId + ', ' + depId + ', \'First name employee #' + (id + 1) + '\', \'Last name employee #' + (id + 1) + '\', \'Email employee #' +
- (id + 1) + '\', \'Phone number employee #' + (id + 1) + '\', \'2014-01-01\', \'Job employee #' + (id + 1) + '\', ' + (600 + 50 * id + 50 * depId) + ');');
- }
+ res.endBlock('}');
+
+ res.needEmptyLine = true;
+
+ $generatorJava.declareVariableCustom(res, 'stmt', 'java.sql.PreparedStatement', conVar +
+ '.prepareStatement("INSERT INTO EMPLOYEE(ID, DEPARTMENT_ID, MANAGER_ID, FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, HIRE_DATE, JOB, SALARY) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")');
- return queries;
+ res.startBlock('for (int id = 0; id < EXAMPLE_MAX_EMPLOYEE_CNT; id ++) {');
+
+ res.needEmptyLine = true;
+
+ res.line('int depId = rnd.nextInt(EXAMPLE_MAX_DEPARTMENT_CNT);');
+
+ res.line('stmt.setInt(1, EXAMPLE_MAX_DEPARTMENT_CNT + id);');
+ res.line('stmt.setInt(2, depId);');
+ res.line('stmt.setInt(3, depId);');
+ res.line('stmt.setString(4, "First name manager #" + (id + 1));');
+ res.line('stmt.setString(5, "Last name manager#" + (id + 1));');
+ res.line('stmt.setString(6, "Email manager#" + (id + 1));');
+ res.line('stmt.setString(7, "Phone number manager#" + (id + 1));');
+ res.line('stmt.setString(8, "2014-01-01");');
+ res.line('stmt.setString(9, "Job manager #" + (id + 1));');
+ res.line('stmt.setDouble(10, 600.0 + rnd.nextInt(300));');
+
+ res.needEmptyLine = true;
+
+ res.line('stmt.executeUpdate();');
+
+ res.endBlock('}');
+
+ res.needEmptyLine = true;
},
selectQuery: [
"SELECT * FROM EMPLOYEE WHERE MANAGERID IS NOT NULL"
@@ -2765,14 +2806,49 @@ $generatorJava.generateExample = function (cluster, res, factoryCls) {
typeByDs[ds].push(type);
});
+ var rndDefined = false;
+
+ var generatedConsts = [];
+
+ _.forEach(typeByDs, function (types) {
+ _.forEach(types, function (type) {
+ _.forEach(type.domains, function (domain) {
+ var desc = _.find(PREDEFINED_QUERIES, function (desc) {
+ return domain.valueType.toUpperCase().endsWith(desc.type);
+ });
+
+ if (desc) {
+ if (!rndDefined && desc.rndRequired) {
+ res.line('/** Random generator for demo data. */');
+ $generatorJava.declareVariableCustom(res, 'rnd', 'java.util.Random', 'new Random()', 'private static final');
+
+ rndDefined = true;
+ }
+
+ _.forEach(desc.insertCntConsts, function (cnt) {
+ if (!_.contains(generatedConsts, cnt.name)) {
+ res.line('/** ' + cnt.comment + ' */');
+ res.line('private static final int ' + cnt.name + ' = ' + cnt.val + ';');
+ res.needEmptyLine = true;
+
+ generatedConsts.push(cnt.name);
+ }
+ });
+ }
+ });
+ });
+ });
+
+ res.needEmptyLine = true;
+
// Generation of fill database method
- res.line('/** Fill data for domain model demo example. */');
+ res.line('/** Fill data for Demo example. */');
res.startBlock('private static void prepareExampleData() throws ' + res.importClass('java.sql.SQLException') + ' {');
_.forEach(typeByDs, function (types, ds) {
var conVar = ds + 'Con';
- res.startBlock('try (' + res.importClass('java.sql.Connection') + ' ' + conVar + ' = ' + factoryCls + '.DataSources.INSTANCE_' + ds + '.getConnection()) {');
+ res.startBlock('try (' + res.importClass('java.sql.Connection') + ' ' + conVar + ' = ' + res.importClass(factoryCls) + '.DataSources.INSTANCE_' + ds + '.getConnection()) {');
_.forEach(types, function (type) {
_.forEach(type.domains, function (domain) {
@@ -2785,7 +2861,28 @@ $generatorJava.generateExample = function (cluster, res, factoryCls) {
_prepareStatement(res, conVar, 'CREATE SCHEMA IF NOT EXISTS ' + desc.schema);
_prepareStatement(res, conVar, desc.create);
- _prepareStatement(res, conVar, desc.fillQuery().join('\n'));
+
+ _prepareStatement(res, conVar, desc.clearQuery);
+
+ res.needEmptyLine = true;
+
+ if (!desc.specialGeneration) {
+ $generatorJava.declareVariableCustom(res, 'stmt', 'java.sql.PreparedStatement', conVar + '.prepareStatement("' + desc.insertPattern + '")');
+
+ res.startBlock('for (int id = 0; id < ' + desc.insertCntConsts[0].name + '; id ++) {');
+
+ desc.fillInsertParameters(res);
+
+ res.needEmptyLine = true;
+
+ res.line('stmt.executeUpdate();');
+
+ res.endBlock('}');
+
+ res.needEmptyLine = true;
+ }
+ else
+ desc.specialGeneration(res, conVar);
res.line(conVar + '.commit();');