You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/05/05 09:45:56 UTC

[45/50] [abbrv] ignite git commit: IGNITE-5071 Added table name property for query entity.

IGNITE-5071 Added table name property for query entity.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/94c1d758
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/94c1d758
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/94c1d758

Branch: refs/heads/ignite-5009
Commit: 94c1d758940fc4d82d855760f7b514d329e46daa
Parents: 8cd9fbe
Author: Vasiliy Sisko <vs...@gridgain.com>
Authored: Thu May 4 22:33:29 2017 +0700
Committer: Andrey Novikov <an...@gridgain.com>
Committed: Thu May 4 22:33:29 2017 +0700

----------------------------------------------------------------------
 modules/web-console/backend/app/mongo.js        |  1 +
 .../generator/ConfigurationGenerator.js         |  3 ++-
 .../states/configuration/domains/general.pug    |  4 ++--
 .../states/configuration/domains/query.pug      |  2 ++
 .../frontend/controllers/domains-controller.js  | 24 ++++++++++++++------
 .../views/configuration/domains-import.tpl.pug  | 11 +++++----
 6 files changed, 31 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/94c1d758/modules/web-console/backend/app/mongo.js
----------------------------------------------------------------------
diff --git a/modules/web-console/backend/app/mongo.js b/modules/web-console/backend/app/mongo.js
index 80be010..077044c 100644
--- a/modules/web-console/backend/app/mongo.js
+++ b/modules/web-console/backend/app/mongo.js
@@ -105,6 +105,7 @@ module.exports.factory = function(passportMongo, settings, pluginMongo, mongoose
         caches: [{type: ObjectId, ref: 'Cache'}],
         queryMetadata: {type: String, enum: ['Annotations', 'Configuration']},
         kind: {type: String, enum: ['query', 'store', 'both']},
+        tableName: String,
         databaseSchema: String,
         databaseTable: String,
         keyType: String,

http://git-wip-us.apache.org/repos/asf/ignite/blob/94c1d758/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js b/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
index d5aecdb..8bc74a9 100644
--- a/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
+++ b/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
@@ -1342,7 +1342,8 @@ export default class IgniteConfigurationGenerator {
             const fields = _.map(domain.fields,
                 (e) => ({name: e.name, className: javaTypes.fullClassName(e.className)}));
 
-            cfg.mapProperty('fields', fields, 'fields', true)
+            cfg.stringProperty('tableName')
+                .mapProperty('fields', fields, 'fields', true)
                 .mapProperty('aliases', 'aliases');
 
             const indexes = _.map(domain.indexes, (index) =>

http://git-wip-us.apache.org/repos/asf/ignite/blob/94c1d758/modules/web-console/frontend/app/modules/states/configuration/domains/general.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/domains/general.pug b/modules/web-console/frontend/app/modules/states/configuration/domains/general.pug
index 6432adf..a6d3fc2 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/domains/general.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/domains/general.pug
@@ -18,6 +18,7 @@ include /app/helpers/jade/mixins
 
 -var form = 'general'
 -var model = 'backupItem'
+-var generatePojo = `${model}.generatePojo`
 
 .panel.panel-default(ng-form=form novalidate)
     .panel-heading(bs-collapse-toggle)
@@ -32,7 +33,7 @@ include /app/helpers/jade/mixins
         .panel-body
             .col-sm-6
                 .settings-row
-                    +checkbox('Generate POJO classes', `${model}.generatePojo`, '"generatePojo"', 'If selected then POJO classes will be generated from database tables')
+                    +checkbox('Generate POJO classes', generatePojo, '"generatePojo"', 'If selected then POJO classes will be generated from database tables')
                 .settings-row
                     +caches(model, 'Select caches to associate domain model with cache')
                 .settings-row
@@ -42,7 +43,6 @@ include /app/helpers/jade/mixins
                             <li>Java annotations like @QuerySqlField</li>\
                             <li>Configuration via QueryEntity class</li>\
                         </ul>')
-                -var generatePojo = `${model}.generatePojo`
                 .settings-row
                     +java-class-typeahead('Key type:', `${model}.keyType`, '"keyType"', 'javaBuiltInClasses', 'true', 'true', '{{ ' + generatePojo + ' ? "Full class name for Key" : "Key type name" }}', 'Key class used to store key in cache', generatePojo)
                 .settings-row

http://git-wip-us.apache.org/repos/asf/ignite/blob/94c1d758/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug b/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug
index a057f59..aff3c73 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug
@@ -66,6 +66,8 @@ mixin table-index-item-edit(prefix, index, sortAvailable, idAddition)
                     label Not available for annotated types
                 div(ng-if=`${model}.queryMetadata === 'Configuration'`)
                     .settings-row
+                        +text('Table name:', `${model}.tableName`, '"tableName"', 'false', 'Enter table name', 'Table name for this query entity')
+                    .settings-row
                         +ignite-form-group(ng-model=queryFields ng-form=queryFieldsForm)
                             ignite-form-field-label(id='queryFields')
                                 | Fields

http://git-wip-us.apache.org/repos/asf/ignite/blob/94c1d758/modules/web-console/frontend/controllers/domains-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/controllers/domains-controller.js b/modules/web-console/frontend/controllers/domains-controller.js
index d7237b9..3c8830b 100644
--- a/modules/web-console/frontend/controllers/domains-controller.js
+++ b/modules/web-console/frontend/controllers/domains-controller.js
@@ -63,7 +63,8 @@ export default ['domainsController', [
         $scope.ui.generatePojo = true;
         $scope.ui.builtinKeys = true;
         $scope.ui.usePrimitives = true;
-        $scope.ui.generateAliases = true;
+        $scope.ui.generateTypeAliases = true;
+        $scope.ui.generateFieldAliases = true;
         $scope.ui.generatedCachesClusters = [];
 
         function _mapCaches(caches) {
@@ -857,7 +858,15 @@ export default ['domainsController', [
                         containDup = true;
                     }
 
-                    const valType = generatePojo ? _toJavaPackage(packageName) + '.' + typeName : tableName;
+                    let valType = tableName;
+                    let typeAlias;
+
+                    if (generatePojo) {
+                        if ($scope.ui.generateTypeAliases && tableName.toLowerCase() !== typeName.toLowerCase())
+                            typeAlias = tableName;
+
+                        valType = _toJavaPackage(packageName) + '.' + typeName;
+                    }
 
                     let _containKey = false;
 
@@ -868,7 +877,7 @@ export default ['domainsController', [
 
                         const dbName = fld.databaseFieldName;
 
-                        if ($scope.ui.generateAliases &&
+                        if (generatePojo && $scope.ui.generateFieldAliases &&
                             SqlTypes.validIdentifier(dbName) && !SqlTypes.isKeyword(dbName) &&
                             !_.find(aliases, {field: fld.javaFieldName}) &&
                             fld.javaFieldName.toUpperCase() !== dbName.toUpperCase())
@@ -916,6 +925,7 @@ export default ['domainsController', [
                         newDomain.confirm = true;
                     }
 
+                    newDomain.tableName = typeAlias;
                     newDomain.keyType = valType + 'Key';
                     newDomain.valueType = valType;
                     newDomain.queryMetadata = 'Configuration';
@@ -1024,7 +1034,7 @@ export default ['domainsController', [
             function checkDuplicate() {
                 if (containDup) {
                     Confirm.confirm('Some tables have the same name.<br/>' +
-                            'Name of types for that tables will contain schema name too.')
+                        'Name of types for that tables will contain schema name too.')
                         .then(() => checkOverwrite());
                 }
                 else
@@ -1035,7 +1045,7 @@ export default ['domainsController', [
                 checkDuplicate();
             else {
                 Confirm.confirm('Some tables have no primary key.<br/>' +
-                        'You will need to configure key type and key fields for such tables after import complete.')
+                    'You will need to configure key type and key fields for such tables after import complete.')
                     .then(() => checkDuplicate());
             }
         }
@@ -1816,8 +1826,8 @@ export default ['domainsController', [
                 // Found duplicate.
                 if (idx >= 0 && idx !== curIdx) {
                     return !stopEdit && ErrorPopover.show(LegacyTable.tableFieldId(curIdx,
-                        'FieldName' + indexIdx + (curIdx >= 0 ? '-' : '')),
-                        'Field with such name already exists in index!', $scope.ui, 'query');
+                                'FieldName' + indexIdx + (curIdx >= 0 ? '-' : '')),
+                            'Field with such name already exists in index!', $scope.ui, 'query');
                 }
             }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/94c1d758/modules/web-console/frontend/views/configuration/domains-import.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/configuration/domains-import.tpl.pug b/modules/web-console/frontend/views/configuration/domains-import.tpl.pug
index 1289bb3..20a7b85 100644
--- a/modules/web-console/frontend/views/configuration/domains-import.tpl.pug
+++ b/modules/web-console/frontend/views/configuration/domains-import.tpl.pug
@@ -153,6 +153,7 @@ mixin td-ellipses-lbl(w, lbl)
                             button.btn.btn-primary(ng-click='applyDefaults()') Apply
                 .import-domain-model-wizard-page(ng-show='importDomain.action == "options"')
                     -var form = 'optionsForm'
+                    -var generatePojo = 'ui.generatePojo'
 
                     form.form-horizontal(name=form novalidate)
                         .settings-row
@@ -160,10 +161,12 @@ mixin td-ellipses-lbl(w, lbl)
                         .settings-row
                             +checkbox('Use primitive types for NOT NULL table columns', 'ui.usePrimitives', '"domainUsePrimitives"', 'Use primitive types like "int", "long", "double" for POJOs fields generation in case of NOT NULL columns')
                         .settings-row
-                            +checkbox('Generate aliases for query fields', 'ui.generateAliases', '"domainGenerateAliases"', 'Generate aliases for query fields with database field names when database field name differ from Java field name')
-                        .settings-row
-                            +checkbox('Generate POJO classes', 'ui.generatePojo', '"domainGeneratePojo"', 'If selected then POJO classes will be generated from database tables')
-                        .settings-row.settings-row_small-label(ng-show='ui.generatePojo')
+                            +checkbox('Generate POJO classes', generatePojo, '"domainGeneratePojo"', 'If selected then POJO classes will be generated from database tables')
+                        .settings-row(ng-show=generatePojo)
+                            +checkbox('Generate aliases for query entity', 'ui.generateTypeAliases', '"domainGenerateTypeAliases"', 'Generate aliases for query entity if table name is invalid Java identifier')
+                        .settings-row(ng-show=generatePojo)
+                            +checkbox('Generate aliases for query fields', 'ui.generateFieldAliases', '"domainGenerateFieldAliases"', 'Generate aliases for query fields with database field names when database field name differ from Java field name')
+                        .settings-row.settings-row_small-label(ng-show=generatePojo)
                             +java-package('Package:', 'ui.packageName', '"domainPackageName"', true, true, 'Package that will be used for POJOs generation')(data-container='.modal-domain-import')
                         .settings-row.settings-row_small-label
                             +ignite-form-field-dropdown('Clusters:', 'ui.generatedCachesClusters', '"generatedCachesClusters"', false, false, true,