You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2017/07/11 09:03:21 UTC
[23/49] ignite git commit: IGNITE-5369 Added support for _key and
_val names on QueryEntity XML and code generation.
IGNITE-5369 Added support for _key and _val names on QueryEntity XML and code generation.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/eb37f538
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/eb37f538
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/eb37f538
Branch: refs/heads/ignite-2.1
Commit: eb37f538f55a471258e49ee2fbf0e8f234829def
Parents: e5c2ec5
Author: vsisko <vs...@gridgain.com>
Authored: Fri Jul 7 23:22:59 2017 +0700
Committer: Alexey Kuznetsov <ak...@gridgain.com>
Committed: Fri Jul 7 23:22:59 2017 +0700
----------------------------------------------------------------------
.../internal/visor/query/VisorQueryEntity.java | 32 +++++++++++++++++--
modules/web-console/backend/app/mongo.js | 2 ++
.../generator/AbstractTransformer.js | 4 +--
.../generator/ConfigurationGenerator.js | 33 +++++++++++++++-----
.../states/configuration/domains/query.pug | 9 ++++++
.../frontend/controllers/domains-controller.js | 7 +++--
6 files changed, 73 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/eb37f538/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryEntity.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryEntity.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryEntity.java
index 9f4dfe7..c67918a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryEntity.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryEntity.java
@@ -58,6 +58,12 @@ public class VisorQueryEntity extends VisorDataTransferObject {
/** Table name. */
private String tblName;
+ /** Key name. Can be used in field list to denote the key as a whole. */
+ private String keyFieldName;
+
+ /** Value name. Can be used in field list to denote the entire value. */
+ private String valFieldName;
+
/** Fields to create group indexes for. */
private List<VisorQueryIndex> grps;
@@ -108,6 +114,10 @@ public class VisorQueryEntity extends VisorDataTransferObject {
for (QueryIndex qryIdx : qryIdxs)
grps.add(new VisorQueryIndex(qryIdx));
+
+ tblName = q.getTableName();
+ keyFieldName = q.getKeyFieldName();
+ valFieldName = q.getValueFieldName();
}
/**
@@ -153,6 +163,20 @@ public class VisorQueryEntity extends VisorDataTransferObject {
}
/**
+ * @return Key name. Can be used in field list to denote the key as a whole.
+ */
+ public String getKeyFieldName() {
+ return keyFieldName;
+ }
+
+ /**
+ * @return Value name. Can be used in field list to denote the entire value.
+ */
+ public String getValueFieldName() {
+ return valFieldName;
+ }
+
+ /**
* @return Fields to create group indexes for.
*/
public List<VisorQueryIndex> getGroups() {
@@ -166,8 +190,10 @@ public class VisorQueryEntity extends VisorDataTransferObject {
U.writeCollection(out, keyFields);
IgfsUtils.writeStringMap(out, qryFlds);
U.writeMap(out, aliases);
- U.writeString(out, tblName);
U.writeCollection(out, grps);
+ U.writeString(out, tblName);
+ U.writeString(out, keyFieldName);
+ U.writeString(out, valFieldName);
}
/** {@inheritDoc} */
@@ -177,8 +203,10 @@ public class VisorQueryEntity extends VisorDataTransferObject {
keyFields = U.readList(in);
qryFlds = IgfsUtils.readStringMap(in);
aliases = U.readMap(in);
- tblName = U.readString(in);
grps = U.readList(in);
+ tblName = U.readString(in);
+ keyFieldName = U.readString(in);
+ valFieldName = U.readString(in);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/eb37f538/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 32796e6..aa11e0b 100644
--- a/modules/web-console/backend/app/mongo.js
+++ b/modules/web-console/backend/app/mongo.js
@@ -106,6 +106,8 @@ module.exports.factory = function(passportMongo, settings, pluginMongo, mongoose
queryMetadata: {type: String, enum: ['Annotations', 'Configuration']},
kind: {type: String, enum: ['query', 'store', 'both']},
tableName: String,
+ keyFieldName: String,
+ valueFieldName: String,
databaseSchema: String,
databaseTable: String,
keyType: String,
http://git-wip-us.apache.org/repos/asf/ignite/blob/eb37f538/modules/web-console/frontend/app/modules/configuration/generator/AbstractTransformer.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/configuration/generator/AbstractTransformer.js b/modules/web-console/frontend/app/modules/configuration/generator/AbstractTransformer.js
index 0e4537e..4d66a64 100644
--- a/modules/web-console/frontend/app/modules/configuration/generator/AbstractTransformer.js
+++ b/modules/web-console/frontend/app/modules/configuration/generator/AbstractTransformer.js
@@ -304,8 +304,8 @@ export default class AbstractTransformer {
}
// Generate domain model for query group.
- static domainModelQuery(domain) {
- return this.toSection(this.generator.domainModelQuery(domain));
+ static domainModelQuery(domain, available) {
+ return this.toSection(this.generator.domainModelQuery(domain, available));
}
// Generate domain model for store group.
http://git-wip-us.apache.org/repos/asf/ignite/blob/eb37f538/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 f850dce..8c9b14c 100644
--- a/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
+++ b/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
@@ -1672,13 +1672,30 @@ export default class IgniteConfigurationGenerator {
}
// Generate domain model for query group.
- static domainModelQuery(domain, cfg = this.domainConfigurationBean(domain)) {
+ static domainModelQuery(domain, available, cfg = this.domainConfigurationBean(domain)) {
if (cfg.valueOf('queryMetadata') === 'Configuration') {
- const fields = _.map(domain.fields,
- (e) => ({name: e.name, className: javaTypes.fullClassName(e.className)}));
+ const fields = _.filter(_.map(domain.fields,
+ (e) => ({name: e.name, className: javaTypes.fullClassName(e.className)})), (field) => {
+ return field.name !== domain.keyFieldName && field.name !== domain.valueFieldName;
+ });
+
+ cfg.stringProperty('tableName');
+
+ if (available('2.0.0')) {
+ cfg.stringProperty('keyFieldName')
+ .stringProperty('valueFieldName');
+
+ const keyFieldName = cfg.valueOf('keyFieldName');
+ const valFieldName = cfg.valueOf('valueFieldName');
+
+ if (keyFieldName)
+ fields.push({name: keyFieldName, className: javaTypes.fullClassName(domain.keyType)});
+
+ if (valFieldName)
+ fields.push({name: valFieldName, className: javaTypes.fullClassName(domain.valueType)});
+ }
- cfg.stringProperty('tableName')
- .mapProperty('fields', fields, 'fields', true)
+ cfg.mapProperty('fields', fields, 'fields', true)
.mapProperty('aliases', 'aliases');
const indexes = _.map(domain.indexes, (index) =>
@@ -2131,12 +2148,12 @@ export default class IgniteConfigurationGenerator {
}
// Generate domain models configs.
- static cacheDomains(domains, ccfg) {
+ static cacheDomains(domains, available, ccfg) {
const qryEntities = _.reduce(domains, (acc, domain) => {
if (_.isNil(domain.queryMetadata) || domain.queryMetadata === 'Configuration') {
const qryEntity = this.domainModelGeneral(domain);
- this.domainModelQuery(domain, qryEntity);
+ this.domainModelQuery(domain, available, qryEntity);
acc.push(qryEntity);
}
@@ -2160,7 +2177,7 @@ export default class IgniteConfigurationGenerator {
this.cacheRebalance(cache, ccfg);
this.cacheNearServer(cache, ccfg);
this.cacheStatistics(cache, ccfg);
- this.cacheDomains(cache.domains, ccfg);
+ this.cacheDomains(cache.domains, available, ccfg);
return ccfg;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/eb37f538/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 b8564dc..19cb83d 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
@@ -67,6 +67,15 @@ mixin table-index-item-edit(prefix, index, sortAvailable, idAddition)
div(ng-if=`${model}.queryMetadata === 'Configuration'`)
.settings-row
+text('Table name:', `${model}.tableName`, '"tableName"', 'false', 'Enter table name', 'Table name for this query entity')
+ div(ng-if='$ctrl.available("2.0.0")')
+ .settings-row
+ +text('Key field name:', `${model}.keyFieldName`, '"keyFieldName"', 'false', 'Enter key field name',
+ 'Key name.<br/>' +
+ 'Can be used in field list to denote the key as a whole')
+ .settings-row
+ +text('Value field name:', `${model}.valueFieldName`, '"valueFieldName"', 'false', 'Enter value field name',
+ 'Value name.<br/>' +
+ 'Can be used in field list to denote the entire value')
.settings-row
+ignite-form-group(ng-model=queryFields ng-form=queryFieldsForm)
ignite-form-field-label(id='queryFields')
http://git-wip-us.apache.org/repos/asf/ignite/blob/eb37f538/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 7a16c50..7c87ce0 100644
--- a/modules/web-console/frontend/controllers/domains-controller.js
+++ b/modules/web-console/frontend/controllers/domains-controller.js
@@ -18,10 +18,12 @@
import templateUrl from 'views/configuration/domains-import.tpl.pug';
// Controller for Domain model screen.
-export default ['$rootScope', '$scope', '$http', '$state', '$filter', '$timeout', '$modal', 'IgniteLegacyUtils', 'IgniteMessages', 'IgniteFocus', 'IgniteConfirm', 'IgniteConfirmBatch', 'IgniteInput', 'IgniteLoading', 'IgniteModelNormalizer', 'IgniteUnsavedChangesGuard', 'AgentManager', 'IgniteLegacyTable', 'IgniteConfigurationResource', 'IgniteErrorPopover', 'IgniteFormUtils', 'JavaTypes', 'SqlTypes', 'IgniteActivitiesData',
- function($root, $scope, $http, $state, $filter, $timeout, $modal, LegacyUtils, Messages, Focus, Confirm, ConfirmBatch, Input, Loading, ModelNormalizer, UnsavedChangesGuard, agentMgr, LegacyTable, Resource, ErrorPopover, FormUtils, JavaTypes, SqlTypes, ActivitiesData) {
+export default ['$rootScope', '$scope', '$http', '$state', '$filter', '$timeout', '$modal', 'IgniteLegacyUtils', 'IgniteMessages', 'IgniteFocus', 'IgniteConfirm', 'IgniteConfirmBatch', 'IgniteInput', 'IgniteLoading', 'IgniteModelNormalizer', 'IgniteUnsavedChangesGuard', 'AgentManager', 'IgniteLegacyTable', 'IgniteConfigurationResource', 'IgniteErrorPopover', 'IgniteFormUtils', 'JavaTypes', 'SqlTypes', 'IgniteActivitiesData', 'IgniteVersion',
+ function($root, $scope, $http, $state, $filter, $timeout, $modal, LegacyUtils, Messages, Focus, Confirm, ConfirmBatch, Input, Loading, ModelNormalizer, UnsavedChangesGuard, agentMgr, LegacyTable, Resource, ErrorPopover, FormUtils, JavaTypes, SqlTypes, ActivitiesData, Version) {
UnsavedChangesGuard.install($scope);
+ this.available = Version.available.bind(Version);
+
const emptyDomain = {empty: true};
let __original_value;
@@ -941,6 +943,7 @@ export default ['$rootScope', '$scope', '$http', '$state', '$filter', '$timeout'
const keyField = newDomain.keyFields[0];
newDomain.keyType = keyField.javaType;
+ newDomain.keyFieldName = keyField.javaFieldName;
// Exclude key column from query fields.
newDomain.fields = _.filter(newDomain.fields, (field) => field.name !== keyField.javaFieldName);