You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2015/09/07 13:34:30 UTC

ignite git commit: IGNITE-843 Load metadata minor fixes.

Repository: ignite
Updated Branches:
  refs/heads/ignite-843 9882bc57c -> 0a978129e


IGNITE-843 Load metadata minor fixes.


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

Branch: refs/heads/ignite-843
Commit: 0a978129eac8319ecaad6e009a05937a4c9b6128
Parents: 9882bc5
Author: AKuznetsov <ak...@gridgain.com>
Authored: Mon Sep 7 18:34:31 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Mon Sep 7 18:34:31 2015 +0700

----------------------------------------------------------------------
 .../main/js/controllers/metadata-controller.js  | 199 +++++++++++--------
 .../control-center-web/src/main/js/package.json |   2 +-
 .../js/views/configuration/metadata-load.jade   |   8 +-
 3 files changed, 122 insertions(+), 87 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/0a978129/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 f0173c9..5a9c3f7 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
@@ -282,7 +282,7 @@ controlCenterModule.controller('metadataController', [
                                 $scope.loadMeta.action = 'connect';
                                 $scope.loadMeta.tables = [];
 
-                                loadMetaModal.show();
+                                $common.confirmUnsavedChanges($confirm, $scope.ui.inputForm, loadMetaModal.show);
 
                                 $focus('jdbcUrl');
                             });
@@ -364,7 +364,7 @@ controlCenterModule.controller('metadataController', [
                 return javaName.charAt(0).toLocaleLowerCase() + javaName.slice(1);
             }
 
-            $scope.packageName = 'org.apache.ignite';
+            $scope.ui.packageName = 'org.apache.ignite';
 
             function _saveMetadata() {
                 $scope.preset.space = $scope.spaces[0];
@@ -374,104 +374,136 @@ controlCenterModule.controller('metadataController', [
                         $common.showError(errMsg);
                     });
 
-                loadMetaModal.hide();
+                var tables = [];
+                var isIntersections = false;
 
                 _.forEach($scope.loadMeta.tables, function (table) {
-                    if (table.use) {
-                        var qryFields = [];
-                        var ascFields = [];
-                        var descFields = [];
-                        var groups = [];
-                        var keyFields = [];
-                        var valFields = [];
+                    if (table.use)
+                        if (tables.indexOf(table.tbl) >= 0)
+                            isIntersections = true;
+                        else
+                            tables.push(table.tbl)
+                });
 
-                        var tableName = table.tbl;
+                tables = [];
 
-                        var valType = $scope.packageName + '.' + toJavaClassName(tableName);
+                function saveImported() {
+                    loadMetaModal.hide();
 
-                        function queryField(name, jdbcType) {
-                            return {name: toJavaName(name), className: jdbcType.javaType}
-                        }
+                    _.forEach($scope.loadMeta.tables, function (table) {
+                        if (table.use) {
+                            if (tables.indexOf(table.tbl) == -1) {
+                                var qryFields = [];
+                                var ascFields = [];
+                                var descFields = [];
+                                var groups = [];
+                                var keyFields = [];
+                                var valFields = [];
 
-                        function dbField(name, jdbcType) {
-                            return {databaseName: name, databaseType: jdbcType.dbName,
-                                javaName: toJavaName(name), javaType: jdbcType.javaType}
-                        }
+                                var tableName = table.tbl;
 
-                        function colType(colName) {
-                            var col = _.find(table.cols, function(col) {
-                                return col.name == colName;
-                            });
+                                var valType = $scope.ui.packageName + '.' + toJavaClassName(tableName);
 
-                            if (col)
-                                return $common.findJdbcType(col.type).javaType;
+                                function queryField(name, jdbcType) {
+                                    return {name: toJavaName(name), className: jdbcType.javaType}
+                                }
 
-                            return 'Unknown';
-                        }
+                                function dbField(name, jdbcType) {
+                                    return {databaseName: name, databaseType: jdbcType.dbName,
+                                        javaName: toJavaName(name), javaType: jdbcType.javaType}
+                                }
+
+                                function colType(colName) {
+                                    var col = _.find(table.cols, function (col) {
+                                        return col.name == colName;
+                                    });
 
-                        _.forEach(table.cols, function(col) {
-                            var colName = col.name;
-                            var jdbcType = $common.findJdbcType(col.type);
+                                    if (col)
+                                        return $common.findJdbcType(col.type).javaType;
 
-                            qryFields.push(queryField(colName, jdbcType));
+                                    return 'Unknown';
+                                }
 
-                            if (_.includes(table.ascCols, colName))
-                                ascFields.push(queryField(colName, jdbcType));
+                                _.forEach(table.cols, function (col) {
+                                    var colName = col.name;
+                                    var jdbcType = $common.findJdbcType(col.type);
 
-                            if (_.includes(table.descCols, colName))
-                                descFields.push(queryField(colName, jdbcType));
+                                    qryFields.push(queryField(colName, jdbcType));
 
-                            if (col.key)
-                                keyFields.push(dbField(colName, jdbcType));
-                            else
-                                valFields.push(dbField(colName, jdbcType));
-                        });
+                                    if (_.includes(table.ascCols, colName))
+                                        ascFields.push(queryField(colName, jdbcType));
 
-                        var idxs = table.idxs;
+                                    if (_.includes(table.descCols, colName))
+                                        descFields.push(queryField(colName, jdbcType));
 
-                        if (table.idxs) {
-                            var indexes = Object.keys(idxs);
+                                    if (col.key)
+                                        keyFields.push(dbField(colName, jdbcType));
+                                    else
+                                        valFields.push(dbField(colName, jdbcType));
+                                });
 
-                            _.forEach(indexes, function (indexName) {
-                                var index = idxs[indexName];
+                                var idxs = table.idxs;
 
-                                var fields = Object.keys(index);
+                                if (table.idxs) {
+                                    var indexes = Object.keys(idxs);
 
-                                if (fields.length > 1)
-                                    groups.push(
-                                        {name: indexName, fields: _.map(fields, function (fieldName) {
-                                            return {
-                                                name: fieldName,
-                                                className: colType(fieldName),
-                                                direction: index[fieldName]
-                                            };
-                                        })});
-                            });
-                        }
+                                    _.forEach(indexes, function (indexName) {
+                                        var index = idxs[indexName];
 
-                        var metaName = toProperCase(tableName);
+                                        var fields = Object.keys(index);
 
-                        var meta = _.find($scope.metadatas, function (meta) {
-                            return meta.name == metaName;
-                        });
+                                        if (fields.length > 1)
+                                            groups.push(
+                                                {name: indexName, fields: _.map(fields, function (fieldName) {
+                                                    return {
+                                                        name: fieldName,
+                                                        className: colType(fieldName),
+                                                        direction: index[fieldName]
+                                                    };
+                                                })});
+                                    });
+                                }
 
-                        if (!meta)
-                            meta = {space: $scope.spaces[0], name: metaName};
-
-                        meta.databaseSchema = table.schema;
-                        meta.databaseTable = tableName;
-                        meta.keyType = valType + 'Key';
-                        meta.valueType = valType;
-                        meta.queryFields = qryFields;
-                        meta.ascendingFields = ascFields;
-                        meta.descendingFields = descFields;
-                        meta.groups = groups;
-                        meta.keyFields = keyFields;
-                        meta.valueFields = valFields;
-
-                        save(meta);
-                    }
-                });
+                                var metaName = toProperCase(tableName);
+
+                                var meta = _.find($scope.metadatas, function (meta) {
+                                    return meta.name == metaName;
+                                });
+
+                                if (!meta)
+                                    meta = {space: $scope.spaces[0], name: metaName};
+
+                                meta.databaseSchema = table.schema;
+                                meta.databaseTable = tableName;
+                                meta.keyType = valType + 'Key';
+                                meta.valueType = valType;
+                                meta.queryFields = qryFields;
+                                meta.ascendingFields = ascFields;
+                                meta.descendingFields = descFields;
+                                meta.groups = groups;
+                                meta.keyFields = keyFields;
+                                meta.valueFields = valFields;
+
+                                save(meta, true);
+
+                                tables.push(table.tbl)
+                            }
+                        }
+                    });
+
+                    $common.showInfo('Cache type metadata loaded from database.');
+                }
+
+                if (isIntersections)
+                    $confirm.show('<span>' +
+                        'Loaded metadata has intersections in schemas by table names.<br/>' +
+                        'Will be loaded only first table for every name.<br/><br/>' +
+                        'Continue to load metadata with skipping of repeat table names?' +
+                        '</span>').then(function () {
+                        saveImported();
+                    });
+                else
+                    saveImported();
             }
 
             $scope.loadMetadataNext = function () {
@@ -483,6 +515,10 @@ controlCenterModule.controller('metadataController', [
                     _saveMetadata();
             };
 
+            $scope.nextAvailable = function () {
+                return $scope.loadMeta.action != 'tables' || $('#metadataTableData').find(':checked').length > 0;
+            };
+
             $scope.loadMetadataPrev = function () {
                 if  ($scope.loadMeta.action == 'tables') {
                     $scope.loadMeta.action = 'schemas';
@@ -674,7 +710,7 @@ controlCenterModule.controller('metadataController', [
             }
 
             // Save cache type metadata into database.
-            function save(item) {
+            function save(item, quiet) {
                 var qry = queryConfigured(item);
                 var str = storeConfigured(item);
 
@@ -689,8 +725,6 @@ controlCenterModule.controller('metadataController', [
                     .success(function (_id) {
                         $common.markPristine($scope.ui.inputForm, 'metadataBackupItemChanged');
 
-                        $common.showInfo('Metadata "' + item.name + '" saved.');
-
                         var idx = _.findIndex($scope.metadatas, function (metadata) {
                             return metadata._id == _id;
                         });
@@ -705,7 +739,8 @@ controlCenterModule.controller('metadataController', [
 
                         $scope.selectItem(item);
 
-                        $common.showInfo('Cache type metadata"' + item.name + '" saved.');
+                        if (!quiet)
+                            $common.showInfo('Cache type metadata"' + item.name + '" saved.');
                     })
                     .error(function (errMsg) {
                         $common.showError(errMsg);

http://git-wip-us.apache.org/repos/asf/ignite/blob/0a978129/modules/control-center-web/src/main/js/package.json
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/package.json b/modules/control-center-web/src/main/js/package.json
index 2efdf65..501ef55 100644
--- a/modules/control-center-web/src/main/js/package.json
+++ b/modules/control-center-web/src/main/js/package.json
@@ -46,7 +46,7 @@
   "devDependencies": {
     "morgan": "~1.6.1",
     "supertest": "^1.1.0",
-    "mocha": "~2.3.0",
+    "mocha": "~2.3.1",
     "should": "~7.1.0"
   }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0a978129/modules/control-center-web/src/main/js/views/configuration/metadata-load.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/metadata-load.jade b/modules/control-center-web/src/main/js/views/configuration/metadata-load.jade
index abac308..756fdee 100644
--- a/modules/control-center-web/src/main/js/views/configuration/metadata-load.jade
+++ b/modules/control-center-web/src/main/js/views/configuration/metadata-load.jade
@@ -42,7 +42,7 @@ include ../includes/controls
                             tr
                                 td(colspan='2')
                                     .metadata-scrollable(style='height: 184px')
-                                        table
+                                        table(id='metadataSchemaData')
                                             tbody
                                                 tr(ng-repeat='schema in displayedSchemas')
                                                     td(width='50px')
@@ -53,7 +53,7 @@ include ../includes/controls
                 .settings-row
                     label.col-sm-2.required Package:
                     .col-sm-10
-                        input.form-control(type="text" ng-model='packageName')
+                        input.form-control(type="text" ng-model='ui.packageName')
                 table.table.table-condensed.table-stripped.metadata(st-table='displayedTables' st-safe-src='loadMeta.tables')
                     thead
                         tr
@@ -70,7 +70,7 @@ include ../includes/controls
                         tr
                             td(colspan='3')
                                 .metadata-scrollable(style='height: 146px')
-                                    table
+                                    table(id='metadataTableData')
                                         tbody
                                             tr(ng-repeat='table in displayedTables')
                                                 td(width='50px')
@@ -81,4 +81,4 @@ include ../includes/controls
                                                     label {{::table.tbl}}
             .modal-footer
                 button.btn.btn-primary(ng-show='loadMeta.action != "connect"' ng-click='loadMetadataPrev()') Prev
-                button.btn.btn-primary(ng-click='loadMetadataNext()') {{loadMeta.button}}
+                button.btn.btn-primary(ng-click='loadMetadataNext()' ng-disabled='!nextAvailable()') {{loadMeta.button}}