You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by an...@apache.org on 2016/01/22 08:14:25 UTC
[02/10] ignite git commit: IGNITE-2284 Update store on save of cache
or domain.
IGNITE-2284 Update store on save of cache or domain.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/87df9d4a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/87df9d4a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/87df9d4a
Branch: refs/heads/ignite-843-rc3
Commit: 87df9d4a589bc452bc9cbca28ce7edd1ed90ef36
Parents: 97f2ab9
Author: Andrey <an...@gridgain.com>
Authored: Thu Jan 21 10:06:27 2016 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Thu Jan 21 10:06:27 2016 +0700
----------------------------------------------------------------------
.../main/js/controllers/caches-controller.js | 30 +--------------
.../src/main/js/controllers/common-module.js | 40 ++++++++++++++++----
.../main/js/controllers/domains-controller.js | 32 ++++++++++++++--
modules/control-center-web/src/main/js/db.js | 2 +-
.../src/main/js/routes/domains.js | 21 +++++++++-
5 files changed, 83 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/87df9d4a/modules/control-center-web/src/main/js/controllers/caches-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/caches-controller.js b/modules/control-center-web/src/main/js/controllers/caches-controller.js
index e9e0fb2..f0732db 100644
--- a/modules/control-center-web/src/main/js/controllers/caches-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/caches-controller.js
@@ -379,33 +379,6 @@ consoleModule.controller('cachesController', [
$scope.preview.statistics.allDefaults = $common.isEmptyString($scope.preview.statistics.xml);
}
}, true);
-
- $scope.$watchCollection('backupItem.domains', function (val) {
- if ($scope.selectedItemWatchGuard)
- $scope.selectedItemWatchGuard = false;
- else {
- var item = $scope.backupItem;
-
- var cacheStoreFactory = $common.isDefined(item) &&
- $common.isDefined(item.cacheStoreFactory) &&
- $common.isDefined(item.cacheStoreFactory.kind);
-
- if (val && !cacheStoreFactory) {
- if (_.findIndex(cacheDomains(item), $common.domainForStoreConfigured) >= 0) {
- item.cacheStoreFactory.kind = 'CacheJdbcPojoStoreFactory';
-
- if (!item.readThrough && !item.writeThrough) {
- item.readThrough = true;
- item.writeThrough = true;
- }
-
- $timeout(function () {
- $common.ensureActivePanel($scope.panels, 'store');
- });
- }
- }
- }
- });
})
.error(function (errMsg) {
$common.showError(errMsg);
@@ -629,9 +602,10 @@ consoleModule.controller('cachesController', [
// Save cache.
$scope.saveItem = function () {
if ($scope.tableReset(true)) {
-
var item = $scope.backupItem;
+ angular.extend(item, $common.autoCacheStoreConfiguration(item, cacheDomains(item)));
+
if (validate(item))
save(item);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/87df9d4a/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 1399f58..ba7e58a 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
@@ -695,6 +695,15 @@ consoleModule.service('$common', [
{value: 'H2', label: 'H2 database'}
];
+ function domainForStoreConfigured(domain) {
+ var isEmpty = !isDefined(domain) || (isEmptyString(domain.databaseSchema) &&
+ isEmptyString(domain.databaseTable) &&
+ isEmptyArray(domain.keyFields) &&
+ isEmptyArray(domain.valueFields));
+
+ return !isEmpty;
+ }
+
return {
getModel: getModel,
joinTip: function (arr) {
@@ -788,14 +797,7 @@ consoleModule.service('$common', [
return !isEmpty;
},
- domainForStoreConfigured: function (domain) {
- var isEmpty = !isDefined(domain) || (isEmptyString(domain.databaseSchema) &&
- isEmptyString(domain.databaseTable) &&
- isEmptyArray(domain.keyFields) &&
- isEmptyArray(domain.valueFields));
-
- return !isEmpty;
- },
+ domainForStoreConfigured: domainForStoreConfigured,
/**
* Cut class name by width in pixel or width in symbol count.
*
@@ -1061,6 +1063,28 @@ consoleModule.service('$common', [
}));
return res;
+ },
+ autoCacheStoreConfiguration: function (cache, domains) {
+ var change;
+
+ var cacheStoreFactory = isDefined(cache.cacheStoreFactory) &&
+ isDefined(cache.cacheStoreFactory.kind);
+
+ if (!cacheStoreFactory && _.findIndex(domains, domainForStoreConfigured) >= 0) {
+ var dflt = !cache.readThrough && !cache.writeThrough;
+
+ return {
+ cacheStoreFactory: {
+ kind: 'CacheJdbcPojoStoreFactory',
+ CacheJdbcPojoStoreFactory: {
+ dataSourceBean: cache.name + 'DS',
+ dialect: 'Generic'
+ }
+ },
+ readThrough: dflt || cache.readThrough,
+ writeThrough: dflt || cache.writeThrough
+ };
+ }
}
};
}]);
http://git-wip-us.apache.org/repos/asf/ignite/blob/87df9d4a/modules/control-center-web/src/main/js/controllers/domains-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/domains-controller.js b/modules/control-center-web/src/main/js/controllers/domains-controller.js
index a3a982d..bd88bbf 100644
--- a/modules/control-center-web/src/main/js/controllers/domains-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/domains-controller.js
@@ -816,6 +816,7 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
var batch = [];
var tables = [];
+ var checkedCaches = [];
var dupCnt = 0;
var containKey = true;
@@ -942,14 +943,28 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
newDomain.newCache.cacheStoreFactory = {
kind: 'CacheJdbcPojoStoreFactory',
CacheJdbcPojoStoreFactory: {
- dataSourceBean: 'dataSource' + dialect,
+ dataSourceBean: newDomain.newCache.name + 'DS',
dialect: dialect
}
};
}
}
- else if (table.cache !== IMPORT_DM_DO_NOT_GENERATE._id)
- newDomain.caches = [table.cache];
+ else if (table.cache !== IMPORT_DM_DO_NOT_GENERATE._id) {
+ var cacheId = table.cache;
+
+ newDomain.caches = [cacheId];
+
+ if (!_.contains(checkedCaches, cacheId)) {
+ var cache = _.find($scope.caches, {value: cacheId}).cache;
+
+ var change = $common.autoCacheStoreConfiguration(cache, [newDomain]);
+
+ if (change)
+ newDomain.cacheStoreChanges = [{cacheId: cacheId, change: change}];
+
+ checkedCaches.push(cacheId)
+ }
+ }
}
batch.push(newDomain);
@@ -1324,6 +1339,17 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
if ($scope.tableReset(true)) {
var item = $scope.backupItem;
+ item.cacheStoreChanges = [];
+
+ _.forEach(item.caches, function (cacheId) {
+ var cache = _.find($scope.caches, {value: cacheId}).cache;
+
+ var change = $common.autoCacheStoreConfiguration(cache, [item]);
+
+ if (change)
+ item.cacheStoreChanges.push({cacheId: cacheId, change: change});
+ });
+
if (validate(item))
save(item);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/87df9d4a/modules/control-center-web/src/main/js/db.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/db.js b/modules/control-center-web/src/main/js/db.js
index 8ecb71e..6d5ad65 100644
--- a/modules/control-center-web/src/main/js/db.js
+++ b/modules/control-center-web/src/main/js/db.js
@@ -74,7 +74,7 @@ exports.Space = mongoose.model('Space', new Schema({
var DomainModelSchema = new Schema({
space: {type: ObjectId, ref: 'Space'},
caches: [{type: ObjectId, ref: 'Cache'}],
- queryMetadata: {type: String, enum: ['Annotations', 'Config']},
+ queryMetadata: {type: String, enum: ['Annotations', 'Configuration']},
kind: {type: String, enum: ['query', 'store', 'both']},
databaseSchema: String,
databaseTable: String,
http://git-wip-us.apache.org/repos/asf/ignite/blob/87df9d4a/modules/control-center-web/src/main/js/routes/domains.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/domains.js b/modules/control-center-web/src/main/js/routes/domains.js
index 4867807..e52f7ee 100644
--- a/modules/control-center-web/src/main/js/routes/domains.js
+++ b/modules/control-center-web/src/main/js/routes/domains.js
@@ -76,6 +76,8 @@ function _saveDomainModel(domain, savedDomains, callback) {
var domainId = domain._id;
var caches = domain.caches;
+ var cacheStoreChanges = domain.cacheStoreChanges;
+
if (domainId)
db.DomainModel.update({_id: domain._id}, domain, {upsert: true}, function (err) {
if (err)
@@ -91,7 +93,7 @@ function _saveDomainModel(domain, savedDomains, callback) {
else {
savedDomains.push(domain);
- callback();
+ _updateCacheStore(cacheStoreChanges, callback);
}
});
});
@@ -115,7 +117,7 @@ function _saveDomainModel(domain, savedDomains, callback) {
else {
savedDomains.push(domain);
- callback();
+ _updateCacheStore(cacheStoreChanges, callback);
}
});
}
@@ -123,6 +125,21 @@ function _saveDomainModel(domain, savedDomains, callback) {
});
}
+function _updateCacheStore(cacheStoreChanges, callback) {
+ if (cacheStoreChanges && cacheStoreChanges.length > 0) {
+ async.forEachOf(cacheStoreChanges, function (change, idx, callback) {
+ db.Cache.update({_id: {$eq: change.cacheId}}, change.change, {}, function (err) {
+ if (err)
+ callback(err);
+ else
+ callback();
+ });
+ }, callback);
+ }
+ else
+ callback();
+}
+
function _save(domains, res) {
var savedDomains = [];
var generatedCaches = [];