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/08/21 08:40:44 UTC
[35/50] [abbrv] ignite git commit: IGNITE-5985 Web Console: added
generation for QueryEntity key fields.
IGNITE-5985 Web Console: added generation for QueryEntity key fields.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ef055fee
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ef055fee
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ef055fee
Branch: refs/heads/ignite-5578
Commit: ef055feeac69ba115b4ad8ebfd91db675574e75e
Parents: fb890a2
Author: Vasiliy Sisko <vs...@gridgain.com>
Authored: Fri Aug 18 11:08:13 2017 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Aug 18 11:08:13 2017 +0700
----------------------------------------------------------------------
modules/web-console/backend/app/mongo.js | 1 +
.../generator/ConfigurationGenerator.js | 3 ++-
.../states/configuration/domains/query.pug | 7 ++++++
.../app/services/LegacyTable.service.js | 6 ++---
.../frontend/controllers/domains-controller.js | 24 +++++++++++++++-----
.../views/configuration/domains-import.tpl.pug | 6 +++++
6 files changed, 37 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ef055fee/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 0bc0e5c..28eaa5d 100644
--- a/modules/web-console/backend/app/mongo.js
+++ b/modules/web-console/backend/app/mongo.js
@@ -124,6 +124,7 @@ module.exports.factory = function(passportMongo, settings, pluginMongo, mongoose
javaFieldName: String,
javaFieldType: String
}],
+ queryKeyFields: [String],
fields: [{name: String, className: String}],
aliases: [{field: String, alias: String}],
indexes: [{
http://git-wip-us.apache.org/repos/asf/ignite/blob/ef055fee/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 a14bfd3..24dc0d3 100644
--- a/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
+++ b/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
@@ -1695,7 +1695,8 @@ export default class IgniteConfigurationGenerator {
fields.push({name: valFieldName, className: javaTypes.fullClassName(domain.valueType)});
}
- cfg.mapProperty('fields', fields, 'fields', true)
+ cfg.collectionProperty('keyFields', 'keyFields', domain.queryKeyFields, 'java.lang.String', 'java.util.HashSet')
+ .mapProperty('fields', fields, 'fields', true)
.mapProperty('aliases', 'aliases');
const indexes = _.map(domain.indexes, (index) =>
http://git-wip-us.apache.org/repos/asf/ignite/blob/ef055fee/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 19cb83d..e8eceac 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
@@ -18,6 +18,7 @@ include /app/helpers/jade/mixins
-var form = 'query'
-var model = 'backupItem'
+-var queryKeyFields = `${model}.queryKeyFields`
-var queryFields = `${model}.fields`
-var queryAliases = `${model}.aliases`
-var queryIndexes = `${model}.indexes`
@@ -100,6 +101,12 @@ mixin table-index-item-edit(prefix, index, sortAvailable, idAddition)
td.col-sm-12
+table-pair-edit('queryFieldsTbl', 'new', 'Field name', 'Field full class name', false, true, '{{::queryFieldsTbl.focusId + $index}}', '-1', '/')
.settings-row
+ +ignite-form-field-dropdown('Key fields:', queryKeyFields, '"queryKeyFields"', false, false, true,
+ 'Select key fields', 'Configure available fields', 'fields(\'cur\', ' + queryKeyFields + ')',
+ 'Query fields that belongs to the key.<br/>\
+ Used to build / modify keys and values during SQL DML operations when no key - value classes are present on cluster nodes.'
+ )
+ .settings-row
+ignite-form-group(ng-model=queryAliases ng-form=queryAliasesForm)
ignite-form-field-label
| Aliases
http://git-wip-us.apache.org/repos/asf/ignite/blob/ef055fee/modules/web-console/frontend/app/services/LegacyTable.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/services/LegacyTable.service.js b/modules/web-console/frontend/app/services/LegacyTable.service.js
index ab95164..38b041a 100644
--- a/modules/web-console/frontend/app/services/LegacyTable.service.js
+++ b/modules/web-console/frontend/app/services/LegacyTable.service.js
@@ -72,10 +72,10 @@ export default ['IgniteLegacyTable',
table.editIndex = editIndex;
}
- function _tableUI(field) {
- const ui = field.ui;
+ function _tableUI(tbl) {
+ const ui = tbl.ui;
- return ui ? ui : field.type;
+ return ui ? ui : tbl.type;
}
function _tableFocus(focusId, index) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ef055fee/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 7c87ce0..840086e 100644
--- a/modules/web-console/frontend/controllers/domains-controller.js
+++ b/modules/web-console/frontend/controllers/domains-controller.js
@@ -28,7 +28,7 @@ export default ['$rootScope', '$scope', '$http', '$state', '$filter', '$timeout'
let __original_value;
- const blank = {};
+ const blank = {queryKeyFields: []};
// We need to initialize backupItem with empty object in order to properly used from angular directives.
$scope.backupItem = emptyDomain;
@@ -63,6 +63,7 @@ export default ['$rootScope', '$scope', '$http', '$state', '$filter', '$timeout'
$scope.ui.generatePojo = true;
$scope.ui.builtinKeys = true;
+ $scope.ui.generateKeyFields = true;
$scope.ui.usePrimitives = true;
$scope.ui.generateTypeAliases = true;
$scope.ui.generateFieldAliases = true;
@@ -145,13 +146,17 @@ export default ['$rootScope', '$scope', '$http', '$state', '$filter', '$timeout'
$scope.tableRemove = function(item, field, index) {
if ($scope.tableReset(true)) {
- // Remove field from indexes.
if (field.type === 'fields') {
+ // Remove field from indexes.
_.forEach($scope.backupItem.indexes, (modelIndex) => {
modelIndex.fields = _.filter(modelIndex.fields, (indexField) => {
return indexField.name !== $scope.backupItem.fields[index].name;
});
});
+
+ // Remove field from query key fields.
+ $scope.backupItem.queryKeyFields = _.filter($scope.backupItem.queryKeyFields,
+ (keyField) => keyField !== $scope.backupItem.fields[index].name);
}
LegacyTable.tableRemove(item, field, index);
@@ -212,8 +217,10 @@ export default ['$rootScope', '$scope', '$http', '$state', '$filter', '$timeout'
if (prefix === 'new')
return fields;
- if (cur && !_.find(fields, {value: cur}))
- fields.push({value: cur, label: cur + ' (Unknown field)'});
+ _.forEach(_.isArray(cur) ? cur : [cur], (value) => {
+ if (!_.find(fields, {value}))
+ fields.push({value, label: value + ' (Unknown field)'});
+ });
return fields;
};
@@ -929,6 +936,7 @@ export default ['$rootScope', '$scope', '$http', '$state', '$filter', '$timeout'
newDomain.databaseSchema = table.schema;
newDomain.databaseTable = tableName;
newDomain.fields = qryFields;
+ newDomain.queryKeyFields = _.map(keyFields, (field) => field.javaFieldName);
newDomain.indexes = indexes;
newDomain.keyFields = keyFields;
newDomain.aliases = aliases;
@@ -945,8 +953,12 @@ export default ['$rootScope', '$scope', '$http', '$state', '$filter', '$timeout'
newDomain.keyType = keyField.javaType;
newDomain.keyFieldName = keyField.javaFieldName;
- // Exclude key column from query fields.
- newDomain.fields = _.filter(newDomain.fields, (field) => field.name !== keyField.javaFieldName);
+ if (!$scope.ui.generateKeyFields) {
+ // Exclude key column from query fields.
+ newDomain.fields = _.filter(newDomain.fields, (field) => field.name !== keyField.javaFieldName);
+
+ newDomain.queryKeyFields = [];
+ }
// Exclude key column from indexes.
_.forEach(newDomain.indexes, (index) => {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ef055fee/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 e9ed6f3..369c7de 100644
--- a/modules/web-console/frontend/views/configuration/domains-import.tpl.pug
+++ b/modules/web-console/frontend/views/configuration/domains-import.tpl.pug
@@ -158,6 +158,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 query entity key fields', 'ui.generateKeyFields', '"generateKeyFields"',
+ 'Generate key fields for query entity.<br\>\
+ We need this for the cases when no key-value classes\
+ are present on cluster nodes, and we need to build/modify keys and values during SQL DML operations.\
+ Thus, setting this parameter is not mandatory and should be based on particular use case.')
+ .settings-row
+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')