Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-843 40e87e2ce -> 1585080ed


IGNITE-843 Validation of metadata content. Hide KeyValues if KeyType is a 
primitive type.


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

Branch: refs/heads/ignite-843
Commit: 1585080ed166cbdb090b5bbed8b9fb5be3bebffd
Parents: 40e87e2
Author: AKuznetsov <akuznet...@gridgain.com>
Authored: Fri Jul 31 17:14:23 2015 +0700
Committer: AKuznetsov <akuznet...@gridgain.com>
Committed: Fri Jul 31 17:14:23 2015 +0700

----------------------------------------------------------------------
 .../src/main/js/controllers/common-module.js    |  3 +-
 .../main/js/controllers/metadata-controller.js  | 61 ++++++++++++++++++++
 .../main/js/controllers/models/metadata.json    |  2 +-
 .../src/main/js/routes/generator/common.js      |  8 +++
 .../src/main/js/routes/generator/java.js        |  7 ++-
 .../src/main/js/routes/generator/xml.js         |  7 ++-
 6 files changed, 82 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1585080e/modules/control-center-web/src/main/js/controllers/common-module.js
----------------------------------------------------------------------
diff --git 
a/modules/control-center-web/src/main/js/controllers/common-module.js 
b/modules/control-center-web/src/main/js/controllers/common-module.js
index 9c2ee0c..7803b85 100644
--- a/modules/control-center-web/src/main/js/controllers/common-module.js
+++ b/modules/control-center-web/src/main/js/controllers/common-module.js
@@ -498,8 +498,9 @@ controlCenterModule.controller('notebooks', ['$scope', 
'$http','$common', functi
                     { divider: true }
                 ];
 
-                for (notebook of $scope.notebooks)
+                _.forEach($scope.notebooks, function (notebook) {
                     $scope.notebookDropdown.push({text: notebook.name, href: 
'/sql/' + notebook._id, target: '_self'});
+                });
             }
         })
         .error(function (errMsg) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1585080e/modules/control-center-web/src/main/js/controllers/metadata-controller.js
----------------------------------------------------------------------
diff --git 
a/modules/control-center-web/src/main/js/controllers/metadata-controller.js 
b/modules/control-center-web/src/main/js/controllers/metadata-controller.js
index da543e2..91d8abf 100644
--- a/modules/control-center-web/src/main/js/controllers/metadata-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/metadata-controller.js
@@ -258,6 +258,15 @@ controlCenterModule.controller('metadataController', 
['$scope', '$http', '$commo
 
         $scope.metadatas = [];
 
+        $scope.isJavaBuildInType = function () {
+            var item = $scope.backupItem;
+
+            if (item && item.keyType)
+                return _.contains($common.javaBuildInTypes, item.keyType);
+
+            return false;
+        };
+
         $http.get('/models/metadata.json')
             .success(function (data) {
                 $scope.screenTip = data.screenTip;
@@ -334,8 +343,60 @@ controlCenterModule.controller('metadataController', 
['$scope', '$http', '$commo
             $scope.backupItem.space = $scope.spaces[0]._id;
         };
 
+        function isEmpty(arr) {
+            if ($common.isDefined(arr))
+                return arr.length == 0;
+            else
+                return true;
+        }
+
         // Check metadata logical consistency.
         function validate(item) {
+            var kind = item.kind;
+
+            if (kind == 'query' || kind == 'both') {
+                if (isEmpty(item.queryFields) && isEmpty(item.ascendingFields) 
&& isEmpty(item.descendingFields)
+                    && isEmpty(item.textFields) && isEmpty(item.groups)) {
+                        $common.showError('SQL fields are not specified!');
+
+                        return false;
+                }
+
+                var groups = item.groups;
+                if (groups && groups.length > 0) {
+                    for (var i = 0; i < groups.length; i++) {
+                        var group = groups[i];
+                        var fields = group.fields;
+
+                        if (isEmpty(fields)) {
+                            $common.showError('Group "' + group.name + '" has 
no fields.');
+
+                            return false;
+                        }
+
+                        if (fields.length == 1) {
+                            $common.showError('Group "' + group.name + '" has 
only one field.<br/> Consider to use ascending or descending fields.');
+
+                            return false;
+                        }
+                    }
+                }
+            }
+
+            if (kind == 'store' || kind == 'both') {
+                if (isEmpty(item.keyFields) && 
!_.contains($common.javaBuildInTypes, item.keyType)) {
+                    $common.showError('Key fields are not specified!');
+
+                    return false;
+                }
+
+                if (isEmpty(item.valueFields)) {
+                    $common.showError('Value fields are not specified!');
+
+                    return false;
+                }
+            }
+
             return true;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1585080e/modules/control-center-web/src/main/js/controllers/models/metadata.json
----------------------------------------------------------------------
diff --git 
a/modules/control-center-web/src/main/js/controllers/models/metadata.json 
b/modules/control-center-web/src/main/js/controllers/models/metadata.json
index 86efe0b..65725b8 100644
--- a/modules/control-center-web/src/main/js/controllers/models/metadata.json
+++ b/modules/control-center-web/src/main/js/controllers/models/metadata.json
@@ -93,7 +93,7 @@
       "model": "keyFields",
       "keyName": "name",
       "valueName": "className",
-      "hide": "backupItem.kind == 'query'",
+      "hide": "backupItem.kind == 'query' || isJavaBuildInType()",
       "addTip": "Add key field.",
       "removeTip": "Remove key field.",
       "tip": [

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1585080e/modules/control-center-web/src/main/js/routes/generator/common.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/generator/common.js 
b/modules/control-center-web/src/main/js/routes/generator/common.js
index 01a7cd6..c005f58 100644
--- a/modules/control-center-web/src/main/js/routes/generator/common.js
+++ b/modules/control-center-web/src/main/js/routes/generator/common.js
@@ -202,6 +202,14 @@ function javaBuildInClass(className) {
 
 exports.javaBuildInClass = javaBuildInClass;
 
+/**
+ * @param className Class name to check.
+ * @returns 'true' if given class name is a java build-in type.
+ */
+exports.isJavaBuildInClass = function (className) {
+    return isDefined(javaBuildInClasses[className]);
+};
+
 exports.knownClasses = {
     Oracle: new 
ClassDescriptor('org.apache.ignite.cache.store.jdbc.dialect.OracleDialect', {}),
     DB2: new 
ClassDescriptor('org.apache.ignite.cache.store.jdbc.dialect.DB2Dialect', {}),

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1585080e/modules/control-center-web/src/main/js/routes/generator/java.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/generator/java.js 
b/modules/control-center-web/src/main/js/routes/generator/java.js
index 516c7f4..06b8a2a 100644
--- a/modules/control-center-web/src/main/js/routes/generator/java.js
+++ b/modules/control-center-web/src/main/js/routes/generator/java.js
@@ -428,13 +428,16 @@ function addCacheTypeMetadataConfiguration(res, meta) {
 
     var kind = meta.kind;
 
-    addClassProperty(res, 'typeMeta', meta, 'keyType');
+    var keyType = addClassProperty(res, 'typeMeta', meta, 'keyType');
     addClassProperty(res, 'typeMeta', meta, 'valueType');
 
     if (kind != 'query') {
         addProperty(res, 'typeMeta', meta, 'databaseSchema');
         addProperty(res, 'typeMeta', meta, 'databaseTable');
-        addCacheTypeMetadataDatabaseFields(res, meta, 'keyFields');
+
+        if (!generatorCommon.isJavaBuildInClass(keyType))
+            addCacheTypeMetadataDatabaseFields(res, meta, 'keyFields');
+
         addCacheTypeMetadataDatabaseFields(res, meta, 'valueFields');
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1585080e/modules/control-center-web/src/main/js/routes/generator/xml.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/generator/xml.js 
b/modules/control-center-web/src/main/js/routes/generator/xml.js
index cba14df..7c5d045 100644
--- a/modules/control-center-web/src/main/js/routes/generator/xml.js
+++ b/modules/control-center-web/src/main/js/routes/generator/xml.js
@@ -427,13 +427,16 @@ function generateCacheTypeMetadataConfiguration(res, 
meta) {
 
     var kind = meta.kind;
 
-    addProperty(res, meta, 'keyType');
+    var keyType = addProperty(res, meta, 'keyType');
     addProperty(res, meta, 'valueType');
 
     if (kind != 'query') {
         addProperty(res, meta, 'databaseSchema');
         addProperty(res, meta, 'databaseTable');
-        addCacheTypeMetadataDatabaseFields(res, meta, 'keyFields');
+
+        if (!generatorCommon.isJavaBuildInClass(keyType))
+            addCacheTypeMetadataDatabaseFields(res, meta, 'keyFields');
+
         addCacheTypeMetadataDatabaseFields(res, meta, 'valueFields');
     }
 

Reply via email to