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/08/20 06:38:05 UTC
[4/4] incubator-ignite git commit: IGNITE-843: WIP load metadata from
db.
IGNITE-843: WIP load metadata from db.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/76d999b3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/76d999b3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/76d999b3
Branch: refs/heads/ignite-843
Commit: 76d999b3d2458c40f3454f3dcf0cd9e10f5b0d9d
Parents: c43eb9b
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Thu Aug 20 11:38:18 2015 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Aug 20 11:38:18 2015 +0700
----------------------------------------------------------------------
.../main/js/controllers/clusters-controller.js | 35 ++-----
.../src/main/js/controllers/common-module.js | 52 +++++++++-
.../main/js/controllers/metadata-controller.js | 102 +++++++++----------
.../js/views/configuration/metadata-load.jade | 17 +++-
.../src/main/js/views/includes/controls.jade | 4 +-
5 files changed, 117 insertions(+), 93 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/76d999b3/modules/control-center-web/src/main/js/controllers/clusters-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/clusters-controller.js b/modules/control-center-web/src/main/js/controllers/clusters-controller.js
index 1ad20d7..3ed69f3 100644
--- a/modules/control-center-web/src/main/js/controllers/clusters-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/clusters-controller.js
@@ -66,40 +66,17 @@ controlCenterModule.controller('clustersController', ['$scope', '$http', '$commo
}
}
- $scope.cacheModes = [
- {value: 'LOCAL', label: 'LOCAL'},
- {value: 'REPLICATED', label: 'REPLICATED'},
- {value: 'PARTITIONED', label: 'PARTITIONED'}
- ];
+ $scope.cacheModes = $common.mkOptions(['LOCAL', 'REPLICATED', 'PARTITIONED']);
- $scope.deploymentModes = [
- {value: 'PRIVATE', label: 'PRIVATE'},
- {value: 'ISOLATED', label: 'ISOLATED'},
- {value: 'SHARED', label: 'SHARED'},
- {value: 'CONTINUOUS', label: 'CONTINUOUS'}
- ];
+ $scope.deploymentModes = $common.mkOptions(['PRIVATE', 'ISOLATED', 'SHARED', 'CONTINUOUS']);
- $scope.transactionConcurrency = [
- {value: 'OPTIMISTIC', label: 'OPTIMISTIC'},
- {value: 'PESSIMISTIC', label: 'PESSIMISTIC'}
- ];
+ $scope.transactionConcurrency = $common.mkOptions(['OPTIMISTIC', 'PESSIMISTIC']);
- $scope.transactionIsolation = [
- {value: 'READ_COMMITTED', label: 'READ_COMMITTED'},
- {value: 'REPEATABLE_READ', label: 'REPEATABLE_READ'},
- {value: 'SERIALIZABLE', label: 'SERIALIZABLE'}
- ];
+ $scope.transactionIsolation = $common.mkOptions(['READ_COMMITTED', 'REPEATABLE_READ', 'SERIALIZABLE']);
- $scope.segmentationPolicy = [
- {value: 'RESTART_JVM', label: 'RESTART_JVM'},
- {value: 'STOP', label: 'STOP'},
- {value: 'NOOP', label: 'NOOP'}
- ];
+ $scope.segmentationPolicy = $common.mkOptions(['RESTART_JVM', 'STOP', 'NOOP']);
- $scope.marshallers = [
- {value: 'OptimizedMarshaller', label: 'OptimizedMarshaller'},
- {value: 'JdkMarshaller', label: 'JdkMarshaller'}
- ];
+ $scope.marshallers = $common.mkOptions(['OptimizedMarshaller', 'JdkMarshaller']);
$scope.ui = {expanded: false};
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/76d999b3/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 674940f..8ddec82 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
@@ -123,12 +123,51 @@ controlCenterModule.service('$common', [
return _.contains(javaBuildInClasses, cls) || _.contains(javaBuildInFullNameClasses, cls);
}
- var JDBC_TYPES = [
+ var SUPPORTED_JDBC_TYPES = [
'BIT', 'BOOLEAN', 'TINYINT', 'SMALLINT', 'INTEGER', 'BIGINT', 'REAL', 'FLOAT', 'DOUBLE',
'NUMERIC', 'DECIMAL', 'CHAR', 'VARCHAR', 'LONGVARCHAR', 'NCHAR', 'NVARCHAR', 'LONGNVARCHAR',
'DATE', 'TIME', 'TIMESTAMP'
];
+ var ALL_JDBC_TYPES = [
+ {dbName: 'BIT', dbType: -7, javaType: 'Boolean'},
+ {dbName: 'TINYINT', dbType: -6, javaType: 'Byte'},
+ {dbName: 'SMALLINT', dbType: 5, javaType: 'Short'},
+ {dbName: 'INTEGER', dbType: 4, javaType: 'Integer'},
+ {dbName: 'BIGINT', dbType: -5, javaType: 'Long'},
+ {dbName: 'FLOAT', dbType: 6, javaType: 'Float'},
+ {dbName: 'REAL', dbType: 7, javaType: 'Double'},
+ {dbName: 'DOUBLE', dbType: 8, javaType: 'Double'},
+ {dbName: 'NUMERIC', dbType: 2, javaType: 'BigDecimal'},
+ {dbName: 'DECIMAL', dbType: 3, javaType: 'BigDecimal'},
+ {dbName: 'CHAR', dbType: 1, javaType: 'String'},
+ {dbName: 'VARCHAR', dbType: 12, javaType: 'String'},
+ {dbName: 'LONGVARCHAR', dbType: -1, javaType: 'String'},
+ {dbName: 'DATE', dbType: 91, javaType: 'Date'},
+ {dbName: 'TIME', dbType: 92, javaType: 'Time'},
+ {dbName: 'TIMESTAMP', dbType: 93, javaType: 'Timestamp'},
+ {dbName: 'BINARY', dbType: -2, javaType: 'Object'},
+ {dbName: 'VARBINARY', dbType: -3, javaType: 'Object'},
+ {dbName: 'LONGVARBINARY', dbType: -4, javaType: 'Object'},
+ {dbName: 'NULL', dbType: 0, javaType: 'Object'},
+ {dbName: 'OTHER', dbType: 1111, javaType: 'Object'},
+ {dbName: 'JAVA_OBJECT', dbType: 2000, javaType: 'Object'},
+ {dbName: 'DISTINCT', dbType: 2001, javaType: 'Object'},
+ {dbName: 'STRUCT', dbType: 2002, javaType: 'Object'},
+ {dbName: 'ARRAY', dbType: 2003, javaType: 'Object'},
+ {dbName: 'BLOB', dbType: 2004, javaType: 'Object'},
+ {dbName: 'CLOB', dbType: 2005, javaType: 'String'},
+ {dbName: 'REF', dbType: 2006, javaType: 'Object'},
+ {dbName: 'DATALINK', dbType: 70, javaType: 'Object'},
+ {dbName: 'BOOLEAN', dbType: 16, javaType: 'Boolean'},
+ {dbName: 'ROWID', dbType: -8, javaType: 'Object'},
+ {dbName: 'NCHAR', dbType: -15, javaType: 'String'},
+ {dbName: 'NVARCHAR', dbType: -9, javaType: 'String'},
+ {dbName: 'LONGNVARCHAR', dbType: -16, javaType: 'String'},
+ {dbName: 'NCLOB', dbType: 2011, javaType: 'String'},
+ {dbName: 'SQLXML', dbType: 2009, javaType: 'Object'}
+ ];
+
var JAVA_KEYWORDS = [
'abstract', 'assert', 'boolean', 'break', 'byte',
'case', 'catch', 'char', 'class', 'const',
@@ -483,7 +522,7 @@ controlCenterModule.service('$common', [
},
mkOptions: function (options) {
return _.map(options, function (option) {
- return {value: option, label: option};
+ return {value: option, label: isDefined(option) ? option : 'Not set'};
});
},
isDefined: isDefined,
@@ -501,7 +540,14 @@ controlCenterModule.service('$common', [
duration: 2
});
},
- JDBC_TYPES: JDBC_TYPES,
+ SUPPORTED_JDBC_TYPES: SUPPORTED_JDBC_TYPES,
+ findJdbcType: function (jdbcType) {
+ var res = _.find(ALL_JDBC_TYPES, function (item) {
+ return item.dbType == jdbcType;
+ });
+
+ return res ? res : {dbName: 'Unknown', javaType: 'Unknown'}
+ },
javaBuildInClasses: javaBuildInClasses,
isJavaBuildInClass: isJavaBuildInClass,
isValidJavaIdentifier: isValidJavaIdentifier,
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/76d999b3/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 2d9b251..42d115e 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
@@ -47,52 +47,7 @@ controlCenterModule.controller('metadataController', [
$scope.hidePopover = $common.hidePopover;
var showPopoverMessage = $common.showPopoverMessage;
- var JDBC_TYPES = [
- {dbName: 'BIT', dbType: -7, javaType: 'Boolean'},
- {dbName: 'TINYINT', dbType: -6, javaType: 'Byte'},
- {dbName: 'SMALLINT', dbType: 5, javaType: 'Short'},
- {dbName: 'INTEGER', dbType: 4, javaType: 'Integer'},
- {dbName: 'BIGINT', dbType: -5, javaType: 'Long'},
- {dbName: 'FLOAT', dbType: 6, javaType: 'Float'},
- {dbName: 'REAL', dbType: 7, javaType: 'Double'},
- {dbName: 'DOUBLE', dbType: 8, javaType: 'Double'},
- {dbName: 'NUMERIC', dbType: 2, javaType: 'BigDecimal'},
- {dbName: 'DECIMAL', dbType: 3, javaType: 'BigDecimal'},
- {dbName: 'CHAR', dbType: 1, javaType: 'String'},
- {dbName: 'VARCHAR', dbType: 12, javaType: 'String'},
- {dbName: 'LONGVARCHAR', dbType: -1, javaType: 'String'},
- {dbName: 'DATE', dbType: 91, javaType: 'Date'},
- {dbName: 'TIME', dbType: 92, javaType: 'Time'},
- {dbName: 'TIMESTAMP', dbType: 93, javaType: 'Timestamp'},
- {dbName: 'BINARY', dbType: -2, javaType: 'Object'},
- {dbName: 'VARBINARY', dbType: -3, javaType: 'Object'},
- {dbName: 'LONGVARBINARY', dbType: -4, javaType: 'Object'},
- {dbName: 'NULL', dbType: 0, javaType: 'Object'},
- {dbName: 'OTHER', dbType: 1111, javaType: 'Object'},
- {dbName: 'JAVA_OBJECT', dbType: 2000, javaType: 'Object'},
- {dbName: 'DISTINCT', dbType: 2001, javaType: 'Object'},
- {dbName: 'STRUCT', dbType: 2002, javaType: 'Object'},
- {dbName: 'ARRAY', dbType: 2003, javaType: 'Object'},
- {dbName: 'BLOB', dbType: 2004, javaType: 'Object'},
- {dbName: 'CLOB', dbType: 2005, javaType: 'String'},
- {dbName: 'REF', dbType: 2006, javaType: 'Object'},
- {dbName: 'DATALINK', dbType: 70, javaType: 'Object'},
- {dbName: 'BOOLEAN', dbType: 16, javaType: 'Boolean'},
- {dbName: 'ROWID', dbType: -8, javaType: 'Object'},
- {dbName: 'NCHAR', dbType: -15, javaType: 'String'},
- {dbName: 'NVARCHAR', dbType: -9, javaType: 'String'},
- {dbName: 'LONGNVARCHAR', dbType: -16, javaType: 'String'},
- {dbName: 'NCLOB', dbType: 2011, javaType: 'String'},
- {dbName: 'SQLXML', dbType: 2009, javaType: 'Object'}
- ];
-
- function _findJdbcType(jdbcType) {
- var res = _.find(JDBC_TYPES, function (item) {
- return item.code == jdbcCode;
- });
- return res ? res : {dbName: 'Unknown', javaType: 'Unknown'}
- }
var presets = [
{
@@ -179,9 +134,9 @@ controlCenterModule.controller('metadataController', [
}
}, true);
- $scope.jdbcTypes = $common.mkOptions($common.JDBC_TYPES);
+ $scope.supportedJdbcTypes = $common.mkOptions($common.SUPPORTED_JDBC_TYPES);
- $scope.javaTypes = $common.mkOptions($common.javaBuildInClasses);
+ $scope.supportedJavaTypes = $common.mkOptions($common.javaBuildInClasses);
$scope.sortDirections = [
{value: false, label: 'ASC'},
@@ -201,6 +156,7 @@ controlCenterModule.controller('metadataController', [
return false;
};
+ // Load page descriptor.
$http.get('/models/metadata.json')
.success(function (data) {
$scope.screenTip = data.screenTip;
@@ -244,6 +200,7 @@ controlCenterModule.controller('metadataController', [
// Show load metadata modal.
$scope.showLoadMetadataModal = function () {
+ // Get available JDBC drivers via agent.
$http.post('/agent/drivers')
.success(function (drivers) {
if (drivers && drivers.length > 0) {
@@ -325,22 +282,59 @@ controlCenterModule.controller('metadataController', [
}
function toJavaName(dbName) {
- return dbName;
+ var javaName = toJavaClassName(dbName);
+
+ return javaName.charAt(0).toLocaleLowerCase() + javaName.slice(1);
}
+ $scope.packageName = 'org.apache.ignite';
+
$scope.saveSelectedMetadata = function () {
loadMetaModal.hide();
_.forEach($scope.loadMeta.tables, function (table) {
if (table.use) {
+ var qryFields = [];
+ var ascFields = [];
+ var descFields = [];
+ var groups = [];
+ var keyFields = [];
+ var valFields = [];
+
+ var tableName = table.tbl;
+
+ var valType = $scope.packageName + '.' + toJavaClassName(tableName);
+
+ function queryField(name, jdbcType) {
+ return {name: toJavaName(name), className: jdbcType.javaType}
+ }
+
+ _.forEach(table.cols, function(col) {
+ var name = col.name;
+ var jdbcType = $common.findJdbcType(col.type);
+
+ qryFields.push(queryField(name, jdbcType));
+
+ if (_.includes(table.ascCols, name))
+ ascFields.push(queryField(name, jdbcType));
+
+ if (_.includes(table.descCols, name))
+ descFields.push(queryField(name, jdbcType));
+ });
+
var newItem = {
- name: toProperCase(table.tbl),
+ space: $scope.spaces[0],
+ name: toProperCase(tableName),
databaseSchema: table.schema,
- databaseTable: table.tbl,
- keyType: table.tableName + 'Key',
- valueType: table.tableName,
- keyFields: [],
- valueFields: []
+ databaseTable: tableName,
+ keyType: valType + 'Key',
+ valueType: valType,
+ queryFields: qryFields,
+ ascendingFields: ascFields,
+ descendingFields: descFields,
+ groups: groups,
+ keyFields: keyFields,
+ valueFields: valFields
};
save(newItem);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/76d999b3/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 21cf3a1..8d9a4e4 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
@@ -31,26 +31,33 @@ include ../includes/controls
.settings-row
label.col-sm-2.required Package:
.col-sm-10
- input.form-control(type="text")
+ input.form-control(type="text" ng-model='packageName')
table.table.table-condensed.table-stripped.metadata(st-table='displayedTables' st-safe-src='loadMeta.tables')
thead
tr
- th.header(colspan='2')
+ th
+ th
+ th.header
input.form-control(type='text' st-search='' placeholder='Filter tables...')
tr
th
input(type='checkbox' ng-model='loadMeta.allSelected' ng-change='loadMeta.selectAll()')
th
+ label Schemas
+ th
label Tables
+
tbody
tr(ng-repeat='table in displayedTables')
td
input(type='checkbox' ng-model='table.use' ng-change='loadMeta.select()')
td
- label {{::table.schemaName}} / {{::table.tableName}}
- tfoot
+ label {{::table.schema}}
+ td
+ label {{::table.tbl}}
+ tfoot()
tr
- td.text-right(colspan='2')
+ td.text-right(colspan='3')
div(st-pagination st-items-by-page='10' st-displayed-pages='5')
.modal-footer
button.btn.btn-primary(ng-show='loadMeta.action == "connect"' ng-disabled='loadForm.$invalid' ng-click='loadMetadataFromDb()') Load metadata
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/76d999b3/modules/control-center-web/src/main/js/views/includes/controls.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/includes/controls.jade b/modules/control-center-web/src/main/js/views/includes/controls.jade
index 779fe80..0d989a5 100644
--- a/modules/control-center-web/src/main/js/views/includes/controls.jade
+++ b/modules/control-center-web/src/main/js/views/includes/controls.jade
@@ -206,7 +206,7 @@ mixin table-db-field-edit(prefix, focusId, index)
.col-xs-3.col-sm-3.col-md-3
label.fieldSep /
.input-tip
- button.form-control(id=databaseTypeId enter-focus-next=javaNameId ng-model=databaseTypeModel bs-select bs-options='item.value as item.label for item in {{jdbcTypes}}' on-escape='tableReset()' tabindex='0')
+ button.form-control(id=databaseTypeId enter-focus-next=javaNameId ng-model=databaseTypeModel bs-select bs-options='item.value as item.label for item in {{supportedJdbcTypes}}' on-escape='tableReset()' tabindex='0')
.col-xs-3.col-sm-3.col-md-3
label.fieldSep /
.input-tip
@@ -218,7 +218,7 @@ mixin table-db-field-edit(prefix, focusId, index)
+btn-save(btnVisible, btnSave)
.input-tip
- button.form-control(id=javaTypeId ng-model=javaTypeModel bs-select bs-options='item.value as item.label for item in {{javaTypes}}' on-enter=btnVisibleAndSave on-escape='tableReset()' tabindex='0')
+ button.form-control(id=javaTypeId ng-model=javaTypeModel bs-select bs-options='item.value as item.label for item in {{supportedJavaTypes}}' on-enter=btnVisibleAndSave on-escape='tableReset()' tabindex='0')
mixin table-group-item-edit(prefix, index)
-var fieldName = prefix + 'FieldName'