Repository: ignite Updated Branches: refs/heads/ignite-843-rc1 3523917dd -> 12d5b16dd
IGNITE-1806 WIP rework UI and code generation to new store API. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/12d5b16d Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/12d5b16d Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/12d5b16d Branch: refs/heads/ignite-843-rc1 Commit: 12d5b16dd72e1d34d45359449cfaedbbcf462fb5 Parents: 3523917 Author: Alexey Kuznetsov <[email protected]> Authored: Fri Oct 30 17:36:52 2015 +0700 Committer: Alexey Kuznetsov <[email protected]> Committed: Fri Oct 30 17:36:52 2015 +0700 ---------------------------------------------------------------------- .../main/js/controllers/metadata-controller.js | 2 +- .../main/js/controllers/models/metadata.json | 9 + modules/control-center-web/src/main/js/db.js | 1 + .../js/routes/generator/generator-common.js | 5 +- .../main/js/routes/generator/generator-java.js | 271 +++++++++++-------- .../main/js/routes/generator/generator-xml.js | 109 ++++---- 6 files changed, 226 insertions(+), 171 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/12d5b16d/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 d0f3f92..5ee53d7 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 @@ -726,7 +726,7 @@ consoleModule.controller('metadataController', [ $scope.preview.query.allDefaults = $common.isEmptyString($scope.preview.query.xml); $scope.preview.store.xml = $generatorXml.metadataStore(val).asString(); - $scope.preview.store.java = $generatorJava.metadataStore(val).asString(); + $scope.preview.store.java = $generatorJava.metadataStore(val, false).asString(); $scope.preview.store.allDefaults = $common.isEmptyString($scope.preview.store.xml); } }, true); http://git-wip-us.apache.org/repos/asf/ignite/blob/12d5b16d/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 0f38b9f..e64e8b0 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 @@ -151,6 +151,15 @@ ] }, { + "label": "Keep serialized", + "id": "keepSerialized", + "type": "check", + "model": "keepSerialized", + "tip": [ + "Should be checked if in case of Portable object format" + ] + }, + { "label": "Key fields", "id": "keyFields", "type": "table-db-fields", http://git-wip-us.apache.org/repos/asf/ignite/blob/12d5b16d/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 ff63d3b..df0284f 100644 --- a/modules/control-center-web/src/main/js/db.js +++ b/modules/control-center-web/src/main/js/db.js @@ -80,6 +80,7 @@ var CacheTypeMetadataSchema = new Schema({ valueType: String, keyFields: [{databaseName: String, databaseType: String, javaName: String, javaType: String}], valueFields: [{databaseName: String, databaseType: String, javaName: String, javaType: String}], + keepSerialized: Boolean, fields: [{name: String, className: String}], aliases: [{field: String, alias: String}], indexes: [{name: String, type: {type: String, enum: ['SORTED', 'FULLTEXT', 'GEOSPATIAL']}, fields: [{name: String, direction: Boolean}]}] http://git-wip-us.apache.org/repos/asf/ignite/blob/12d5b16d/modules/control-center-web/src/main/js/routes/generator/generator-common.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-common.js b/modules/control-center-web/src/main/js/routes/generator/generator-common.js index d9dc14e..ffad061 100644 --- a/modules/control-center-web/src/main/js/routes/generator/generator-common.js +++ b/modules/control-center-web/src/main/js/routes/generator/generator-common.js @@ -62,6 +62,7 @@ $generatorCommon.builder = function () { res.lineStart = true; res.datasources = []; res.imports = {}; + res.vars = {}; res.safeDeep = 0; res.safeNeedEmptyLine = false; @@ -285,7 +286,9 @@ $generatorCommon.dataSourceClassName = function(db) { $generatorCommon.STORE_FACTORIES = { CacheJdbcPojoStoreFactory: { className: 'org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory', - fields: {dataSourceBean: null, dialect: {type: 'jdbcDialect'}} + fields: { + configuration: {type: 'bean'} + } }, CacheJdbcBlobStoreFactory: { className: 'org.apache.ignite.cache.store.jdbc.CacheJdbcBlobStoreFactory', http://git-wip-us.apache.org/repos/asf/ignite/blob/12d5b16d/modules/control-center-web/src/main/js/routes/generator/generator-java.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-java.js b/modules/control-center-web/src/main/js/routes/generator/generator-java.js index 656e7b1..562288a 100644 --- a/modules/control-center-web/src/main/js/routes/generator/generator-java.js +++ b/modules/control-center-web/src/main/js/routes/generator/generator-java.js @@ -72,35 +72,25 @@ $generatorJava.setterName = function (propName, setterName) { }; /** - * @param res Result holder. - * @param varName Variable name to check. - * @returns {boolean} 'true' if new variable required. - */ -$generatorJava.needNewVariable = function (res, varName) { - var needNew = !res[varName]; - - if (needNew) - res[varName] = true; - - return needNew; -}; - -/** * Add variable declaration. * * @param res Resulting output with generated code. - * @param varNew If 'true' then declare new variable otherwise reuse previously declared variable. * @param varName Variable name. * @param varFullType Variable full class name to be added to imports. * @param varFullActualType Variable actual full class name to be added to imports. * @param varFullGenericType1 Optional full class name of first generic. * @param varFullGenericType2 Optional full class name of second generic. */ -$generatorJava.declareVariable = function (res, varNew, varName, varFullType, varFullActualType, varFullGenericType1, varFullGenericType2) { +$generatorJava.declareVariable = function (res, varName, varFullType, varFullActualType, varFullGenericType1, varFullGenericType2) { res.emptyLineIfNeeded(); var varType = res.importClass(varFullType); + var varNew = !res.vars[varName]; + + if (varNew) + res.vars[varName] = true; + if (varFullActualType && varFullGenericType1) { var varActualType = res.importClass(varFullActualType); var varGenericType1 = res.importClass(varFullGenericType1); @@ -263,7 +253,7 @@ $generatorJava.beanProperty = function (res, varName, bean, beanPropName, beanVa if (bean && $commonUtils.hasProperty(bean, props)) { res.emptyLineIfNeeded(); - $generatorJava.declareVariable(res, true, beanVarName, beanClass); + $generatorJava.declareVariable(res, beanVarName, beanClass); _.forIn(props, function(descr, propName) { if (props.hasOwnProperty(propName)) { @@ -313,15 +303,6 @@ $generatorJava.beanProperty = function (res, varName, bean, beanPropName, beanVa } break; - case 'jdbcDialect': - if (bean[propName]) { - var jdbcDialectClsName = res.importClass($generatorCommon.jdbcDialectClassName(bean[propName])); - - res.line(beanVarName + '.' + $generatorJava.setterName(propName) + '(new ' + jdbcDialectClsName + '());'); - } - - break; - case 'bean': if ($commonUtils.isDefinedAndNotEmpty(bean[propName])) res.line(beanVarName + '.' + $generatorJava.setterName(propName) + '(new ' + res.importClass(bean[propName]) + '());'); @@ -376,7 +357,7 @@ $generatorJava.clusterGeneral = function (cluster, clientNearCfg, res) { if (!res) res = $generatorCommon.builder(); - $generatorJava.declareVariable(res, true, 'cfg', 'org.apache.ignite.configuration.IgniteConfiguration'); + $generatorJava.declareVariable(res, 'cfg', 'org.apache.ignite.configuration.IgniteConfiguration'); $generatorJava.property(res, 'cfg', cluster, 'name', null, 'setGridName'); res.needEmptyLine = true; @@ -390,7 +371,7 @@ $generatorJava.clusterGeneral = function (cluster, clientNearCfg, res) { if (cluster.discovery) { var d = cluster.discovery; - $generatorJava.declareVariable(res, true, 'discovery', 'org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi'); + $generatorJava.declareVariable(res, 'discovery', 'org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi'); switch (d.kind) { case 'Multicast': @@ -486,7 +467,7 @@ $generatorJava.clusterAtomics = function (cluster, res) { if ($commonUtils.hasAtLeastOneProperty(atomics, ['cacheMode', 'atomicSequenceReserveSize', 'backups'])) { res.startSafeBlock(); - $generatorJava.declareVariable(res, true, 'atomicCfg', 'org.apache.ignite.configuration.AtomicConfiguration'); + $generatorJava.declareVariable(res, 'atomicCfg', 'org.apache.ignite.configuration.AtomicConfiguration'); $generatorJava.property(res, 'atomicCfg', atomics, 'cacheMode'); @@ -523,12 +504,12 @@ $generatorJava.clusterCommunication = function (cluster, res) { res.needEmptyLine = false; - $generatorJava.property(res, 'cfg', cluster, 'networkTimeout', undefined, undefined, 5000); - $generatorJava.property(res, 'cfg', cluster, 'networkSendRetryDelay', undefined, undefined, 1000); - $generatorJava.property(res, 'cfg', cluster, 'networkSendRetryCount', undefined, undefined, 3); + $generatorJava.property(res, 'cfg', cluster, 'networkTimeout', null, null, 5000); + $generatorJava.property(res, 'cfg', cluster, 'networkSendRetryDelay', null, null, 1000); + $generatorJava.property(res, 'cfg', cluster, 'networkSendRetryCount', null, null, 3); $generatorJava.property(res, 'cfg', cluster, 'segmentCheckFrequency'); $generatorJava.property(res, 'cfg', cluster, 'waitForSegmentOnStart', null, null, false); - $generatorJava.property(res, 'cfg', cluster, 'discoveryStartupDelay', undefined, undefined, 600000); + $generatorJava.property(res, 'cfg', cluster, 'discoveryStartupDelay', null, null, 600000); res.needEmptyLine = true; @@ -567,24 +548,24 @@ $generatorJava.clusterDiscovery = function (disco, res) { res = $generatorCommon.builder(); $generatorJava.property(res, 'discovery', disco, 'localAddress'); - $generatorJava.property(res, 'discovery', disco, 'localPort', undefined, undefined, 47500); - $generatorJava.property(res, 'discovery', disco, 'localPortRange', undefined, undefined, 100); + $generatorJava.property(res, 'discovery', disco, 'localPort', null, null, 47500); + $generatorJava.property(res, 'discovery', disco, 'localPortRange', null, null, 100); if ($commonUtils.isDefinedAndNotEmpty(disco.addressResolver)) { $generatorJava.beanProperty(res, 'discovery', disco, 'addressResolver', 'addressResolver', disco.addressResolver, {}, true); res.needEmptyLine = false; } - $generatorJava.property(res, 'discovery', disco, 'socketTimeout', undefined, undefined, 5000); - $generatorJava.property(res, 'discovery', disco, 'ackTimeout', undefined, undefined, 5000); - $generatorJava.property(res, 'discovery', disco, 'maxAckTimeout', undefined, undefined, 600000); - $generatorJava.property(res, 'discovery', disco, 'networkTimeout', undefined, undefined, 5000); - $generatorJava.property(res, 'discovery', disco, 'joinTimeout', undefined, undefined, 0); - $generatorJava.property(res, 'discovery', disco, 'threadPriority', undefined, undefined, 10); - $generatorJava.property(res, 'discovery', disco, 'heartbeatFrequency', undefined, undefined, 2000); - $generatorJava.property(res, 'discovery', disco, 'maxMissedHeartbeats', undefined, undefined, 1); - $generatorJava.property(res, 'discovery', disco, 'maxMissedClientHeartbeats', undefined, undefined, 5); - $generatorJava.property(res, 'discovery', disco, 'topHistorySize', undefined, undefined, 100); + $generatorJava.property(res, 'discovery', disco, 'socketTimeout', null, null, 5000); + $generatorJava.property(res, 'discovery', disco, 'ackTimeout', null, null, 5000); + $generatorJava.property(res, 'discovery', disco, 'maxAckTimeout', null, null, 600000); + $generatorJava.property(res, 'discovery', disco, 'networkTimeout', null, null, 5000); + $generatorJava.property(res, 'discovery', disco, 'joinTimeout', null, null, 0); + $generatorJava.property(res, 'discovery', disco, 'threadPriority', null, null, 10); + $generatorJava.property(res, 'discovery', disco, 'heartbeatFrequency', null, null, 2000); + $generatorJava.property(res, 'discovery', disco, 'maxMissedHeartbeats', null, null, 1); + $generatorJava.property(res, 'discovery', disco, 'maxMissedClientHeartbeats', null, null, 5); + $generatorJava.property(res, 'discovery', disco, 'topHistorySize', null, null, 100); if ($commonUtils.isDefinedAndNotEmpty(disco.listener)) { $generatorJava.beanProperty(res, 'discovery', disco, 'listener', 'listener', disco.listener, {}, true); @@ -601,17 +582,17 @@ $generatorJava.clusterDiscovery = function (disco, res) { res.needEmptyLine = false; } - $generatorJava.property(res, 'discovery', disco, 'reconnectCount', undefined, undefined, 10); - $generatorJava.property(res, 'discovery', disco, 'statisticsPrintFrequency', undefined, undefined, 0); - $generatorJava.property(res, 'discovery', disco, 'ipFinderCleanFrequency', undefined, undefined, 60000); + $generatorJava.property(res, 'discovery', disco, 'reconnectCount', null, null, 10); + $generatorJava.property(res, 'discovery', disco, 'statisticsPrintFrequency', null, null, 0); + $generatorJava.property(res, 'discovery', disco, 'ipFinderCleanFrequency', null, null, 60000); if ($commonUtils.isDefinedAndNotEmpty(disco.authenticator)) { $generatorJava.beanProperty(res, 'discovery', disco, 'authenticator', 'authenticator', disco.authenticator, {}, true); res.needEmptyLine = false; } - $generatorJava.property(res, 'discovery', disco, 'forceServerMode', undefined, undefined, false); - $generatorJava.property(res, 'discovery', disco, 'clientReconnectDisabled', undefined, undefined, false); + $generatorJava.property(res, 'discovery', disco, 'forceServerMode', null, null, false); + $generatorJava.property(res, 'discovery', disco, 'clientReconnectDisabled', null, null, false); res.needEmptyLine = true; @@ -842,24 +823,32 @@ $generatorJava.cacheQuery = function (cache, varName, res) { return res; }; -// Generate cache store group. -$generatorJava.cacheStore = function (cache, varName, res) { +/** + * Generate cache store group. + * + * @param cache Cache descriptor. + * @param cacheVarName Cache variable name. + * @param res Resulting output with generated code. + * @returns {*} Java code for cache store configuration. + */ +$generatorJava.cacheStore = function (cache, cacheVarName, res) { if (!res) res = $generatorCommon.builder(); if (cache.cacheStoreFactory && cache.cacheStoreFactory.kind) { - var storeFactory = cache.cacheStoreFactory[cache.cacheStoreFactory.kind]; + var factoryKind = cache.cacheStoreFactory.kind; + + var storeFactory = cache.cacheStoreFactory[factoryKind]; if (storeFactory) { - var storeFactoryDesc = $generatorCommon.STORE_FACTORIES[cache.cacheStoreFactory.kind]; + var storeFactoryDesc = $generatorCommon.STORE_FACTORIES[factoryKind]; - var sfVarName = $commonUtils.toJavaName('storeFactory', cache.name); - var dsVarName = 'none'; + var dataSourceFound = false; if (storeFactory.dialect) { var dataSourceBean = storeFactory.dataSourceBean; - dsVarName = $commonUtils.toJavaName('dataSource', dataSourceBean); + dataSourceFound = true; if (!_.contains(res.datasources, dataSourceBean)) { res.datasources.push(dataSourceBean); @@ -868,46 +857,89 @@ $generatorJava.cacheStore = function (cache, varName, res) { res.needEmptyLine = true; - $generatorJava.declareVariable(res, true, dsVarName, dsClsName); + $generatorJava.declareVariable(res, 'dataSource', dsClsName); switch (storeFactory.dialect) { case 'DB2': - res.line(dsVarName + '.setServerName(props.getProperty("' + dataSourceBean + '.jdbc.server_name"));'); - res.line(dsVarName + '.setPortNumber(props.getProperty("' + dataSourceBean + '.jdbc.port_number"));'); - res.line(dsVarName + '.setDatabaseName(props.getProperty("' + dataSourceBean + '.jdbc.database_name"));'); - res.line(dsVarName + '.setDriverType(props.getProperty("' + dataSourceBean + '.jdbc.driver_type"));'); + res.line('dataSource.setServerName(props.getProperty("' + dataSourceBean + '.jdbc.server_name"));'); + res.line('dataSource.setPortNumber(props.getProperty("' + dataSourceBean + '.jdbc.port_number"));'); + res.line('dataSource.setDatabaseName(props.getProperty("' + dataSourceBean + '.jdbc.database_name"));'); + res.line('dataSource.setDriverType(props.getProperty("' + dataSourceBean + '.jdbc.driver_type"));'); break; default: - res.line(dsVarName + '.setURL(props.getProperty("' + dataSourceBean + '.jdbc.url"));'); + res.line('dataSource.setURL(props.getProperty("' + dataSourceBean + '.jdbc.url"));'); } - res.line(dsVarName + '.setUser(props.getProperty("' + dataSourceBean + '.jdbc.username"));'); - res.line(dsVarName + '.setPassword(props.getProperty("' + dataSourceBean + '.jdbc.password"));'); + res.line('dataSource.setUser(props.getProperty("' + dataSourceBean + '.jdbc.username"));'); + res.line('dataSource.setPassword(props.getProperty("' + dataSourceBean + '.jdbc.password"));'); } } - $generatorJava.beanProperty(res, varName, storeFactory, 'cacheStoreFactory', sfVarName, - storeFactoryDesc.className, storeFactoryDesc.fields, true); + if (factoryKind == 'CacheJdbcPojoStoreFactory') { + // Generate POJO store factory. + $generatorJava.declareVariable(res, 'storeFactory', 'org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory'); - if (dsVarName != 'none') - res.line(sfVarName + '.setDataSource(' + dsVarName + ');'); + $generatorJava.declareVariable(res, 'storeFactoryCfg', 'org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreConfiguration'); + + if (dataSourceFound) + res.line('storeFactoryCfg.setDataSource(dataSource);'); + + res.needEmptyLine = true; + + if (cache.metadatas && cache.metadatas.length > 0) { + $generatorJava.declareVariable(res, 'jdbcTypes', 'java.util.Collection', 'java.util.ArrayList', 'org.apache.ignite.cache.store.jdbc.JdbcType'); + + res.needEmptyLine = true; + + _.forEach(cache.metadatas, function (meta) { + $generatorJava.declareVariable(res, 'jdbcType', 'org.apache.ignite.cache.store.jdbc.JdbcType'); + + res.needEmptyLine = true; + + $generatorJava.metadataStore(meta, true, res); + + res.needEmptyLine = true; + + res.line('jdbcTypes.add(jdbcType);'); + + res.needEmptyLine = true; + }); + + res.line('storeFactoryCfg.setTypes(jdbcTypes);'); + + res.needEmptyLine = true; + } + + res.line('storeFactory.setConfiguration(storeFactoryCfg);'); + } + else { + $generatorJava.beanProperty(res, cacheVarName, storeFactory, 'cacheStoreFactory', 'storeFactory', + storeFactoryDesc.className, storeFactoryDesc.fields, true); + + if (dataSourceFound) + res.line('storeFactory.setDataSource(dataSource);'); + } res.needEmptyLine = true; } + + res.line(cacheVarName + '.setStoreFactory(storeFactory);'); + + res.needEmptyLine = true; } - $generatorJava.property(res, varName, cache, 'loadPreviousValue'); - $generatorJava.property(res, varName, cache, 'readThrough'); - $generatorJava.property(res, varName, cache, 'writeThrough'); + $generatorJava.property(res, cacheVarName, cache, 'loadPreviousValue'); + $generatorJava.property(res, cacheVarName, cache, 'readThrough'); + $generatorJava.property(res, cacheVarName, cache, 'writeThrough'); res.needEmptyLine = true; - $generatorJava.property(res, varName, cache, 'writeBehindEnabled'); - $generatorJava.property(res, varName, cache, 'writeBehindBatchSize'); - $generatorJava.property(res, varName, cache, 'writeBehindFlushSize'); - $generatorJava.property(res, varName, cache, 'writeBehindFlushFrequency'); - $generatorJava.property(res, varName, cache, 'writeBehindFlushThreadCount'); + $generatorJava.property(res, cacheVarName, cache, 'writeBehindEnabled'); + $generatorJava.property(res, cacheVarName, cache, 'writeBehindBatchSize'); + $generatorJava.property(res, cacheVarName, cache, 'writeBehindFlushSize'); + $generatorJava.property(res, cacheVarName, cache, 'writeBehindFlushFrequency'); + $generatorJava.property(res, cacheVarName, cache, 'writeBehindFlushThreadCount'); res.needEmptyLine = true; @@ -996,7 +1028,7 @@ $generatorJava.metadataQueryFields = function (res, meta) { var fields = meta.fields; if (fields && fields.length > 0) { - $generatorJava.declareVariable(res, $generatorJava.needNewVariable(res, 'fields'), 'fields', 'java.util.LinkedHashMap', 'java.util.LinkedHashMap', 'java.lang.String', 'java.lang.String'); + $generatorJava.declareVariable(res, 'fields', 'java.util.LinkedHashMap', 'java.util.LinkedHashMap', 'java.lang.String', 'java.lang.String'); _.forEach(fields, function (field) { res.line('fields.put("' + field.name + '", "' + $dataStructures.fullClassName(field.className) + '");'); @@ -1015,7 +1047,7 @@ $generatorJava.metadataQueryAliases = function (res, meta) { var aliases = meta.aliases; if (aliases && aliases.length > 0) { - $generatorJava.declareVariable(res, $generatorJava.needNewVariable(res, 'aliases'), 'aliases', 'java.util.Map', 'java.util.HashMap', 'java.lang.String', 'java.lang.String'); + $generatorJava.declareVariable(res, 'aliases', 'java.util.Map', 'java.util.HashMap', 'java.lang.String', 'java.lang.String'); _.forEach(aliases, function (alias) { res.line('aliases.put("' + alias.field + '", "' + alias.alias + '");'); @@ -1036,12 +1068,12 @@ $generatorJava.metadataQueryIndexes = function (res, meta) { if (indexes && indexes.length > 0) { res.needEmptyLine = true; - $generatorJava.declareVariable(res, $generatorJava.needNewVariable(res, 'indexes'), 'indexes', 'java.util.Map', 'java.util.LinkedHashMap', 'String', 'org.apache.ignite.cache.store.QueryEntityIndex'); + $generatorJava.declareVariable(res, 'indexes', 'java.util.Map', 'java.util.LinkedHashMap', 'String', 'org.apache.ignite.cache.store.QueryEntityIndex'); _.forEach(indexes, function (index) { res.needEmptyLine = true; - $generatorJava.declareVariable(res, $generatorJava.needNewVariable(res, 'index'), 'index', 'org.apache.ignite.cache.store.QueryEntityIndex'); + $generatorJava.declareVariable(res, 'index', 'org.apache.ignite.cache.store.QueryEntityIndex'); $generatorJava.property(res, 'index', index, 'name'); $generatorJava.property(res, 'index', index, 'type', 'org.apache.ignite.cache.store.QueryEntityIndex.Type'); @@ -1049,7 +1081,7 @@ $generatorJava.metadataQueryIndexes = function (res, meta) { var fields = index.fields; if (fields && fields.length > 0) { - $generatorJava.declareVariable(res, $generatorJava.needNewVariable(res, 'indFlds'), 'indFlds', 'java.util.LinkedHashMap', 'java.util.LinkedHashMap', 'String', 'Boolean'); + $generatorJava.declareVariable(res, 'indFlds', 'java.util.LinkedHashMap', 'java.util.LinkedHashMap', 'String', 'Boolean'); _.forEach(fields, function(field) { res.line('indFlds.put("' + field.name + '", ' + field.direction + ');'); @@ -1080,18 +1112,19 @@ $generatorJava.metadataDatabaseFields = function (res, meta, fieldProperty) { if (dbFields && dbFields.length > 0) { res.needEmptyLine = true; - $generatorJava.declareVariable(res, $generatorJava.needNewVariable(res, fieldProperty), fieldProperty, 'java.util.Collection', 'java.util.ArrayList', 'org.apache.ignite.cache.CacheTypeFieldMetadata'); + res.importClass('java.sql.Types'); + + res.startBlock('jdbcType.' + $commonUtils.toJavaName('set', fieldProperty) + '('); + + var lastIx = dbFields.length - 1; - _.forEach(dbFields, function (field) { - res.line(fieldProperty + '.add(new CacheTypeFieldMetadata(' + - '"' + field.databaseName + '", ' + - 'java.sql.Types.' + field.databaseType + ', ' + - '"' + field.javaName + '", ' + - field.javaType + '.class' - + '));'); + _.forEach(dbFields, function (field, ix) { + res.line('new JdbcTypeField(' + + 'Types.' + field.databaseType + ', ' + '"' + field.databaseName + '", ' + + field.javaType + '.class, ' + '"' + field.javaName + '"'+ ')' + (ix < lastIx ? ',' : '')); }); - res.line('typeMeta.' + $commonUtils.toJavaName('set', fieldProperty) + '(' + fieldProperty + ');'); + res.endBlock(');'); res.needEmptyLine = true; } @@ -1127,15 +1160,20 @@ $generatorJava.metadataQuery = function (meta, res) { }; // Generate metadata for store group. -$generatorJava.metadataStore = function (meta, res) { +$generatorJava.metadataStore = function (meta, withTypes, res) { if (!res) res = $generatorCommon.builder(); - $generatorJava.property(res, 'typeMeta', meta, 'databaseSchema'); - $generatorJava.property(res, 'typeMeta', meta, 'databaseTable'); + $generatorJava.property(res, 'jdbcType', meta, 'databaseSchema'); + $generatorJava.property(res, 'jdbcType', meta, 'databaseTable'); + $generatorJava.property(res, 'jdbcType', meta, 'keepSerialized', null, null, false); + + if (withTypes) { + $generatorJava.property(res, 'jdbcType', meta, 'keyType'); + $generatorJava.property(res, 'jdbcType', meta, 'valueType'); + } - if (!$dataStructures.isJavaBuildInClass(meta.keyType)) - $generatorJava.metadataDatabaseFields(res, meta, 'keyFields'); + $generatorJava.metadataDatabaseFields(res, meta, 'keyFields'); $generatorJava.metadataDatabaseFields(res, meta, 'valueFields'); @@ -1146,10 +1184,9 @@ $generatorJava.metadataStore = function (meta, res) { // Generate cache type metadata config. $generatorJava.cacheMetadata = function(meta, res) { - $generatorJava.declareVariable(res, $generatorJava.needNewVariable(res, 'typeMeta'), 'typeMeta', 'org.apache.ignite.cache.CacheTypeMetadata'); + $generatorJava.declareVariable(res, 'typeMeta', 'org.apache.ignite.cache.CacheTypeMetadata'); $generatorJava.metadataGeneral(meta, res); - $generatorJava.metadataStore(meta, res); res.emptyLineIfNeeded(); res.line('types.add(typeMeta);'); @@ -1159,7 +1196,7 @@ $generatorJava.cacheMetadata = function(meta, res) { // Generate cache type metadata config. $generatorJava.cacheQueryMetadata = function(meta, res) { - $generatorJava.declareVariable(res, $generatorJava.needNewVariable(res, 'queryMeta'), 'queryMeta', 'org.apache.ignite.cache.store.QueryEntity'); + $generatorJava.declareVariable(res, 'queryMeta', 'org.apache.ignite.cache.store.QueryEntity'); $generatorJava.classNameProperty(res, 'queryMeta', meta, 'keyType'); $generatorJava.classNameProperty(res, 'queryMeta', meta, 'valueType'); @@ -1181,7 +1218,7 @@ $generatorJava.cacheMetadatas = function (metadatas, varName, res) { // Generate cache type metadata configs. if (metadatas && metadatas.length > 0) { - $generatorJava.declareVariable(res, $generatorJava.needNewVariable(res, 'types'), 'types', 'java.util.Collection', 'java.util.ArrayList', 'org.apache.ignite.cache.CacheTypeMetadata'); + $generatorJava.declareVariable(res, 'types', 'java.util.Collection', 'java.util.ArrayList', 'org.apache.ignite.cache.CacheTypeMetadata'); _.forEach(metadatas, function (meta) { $generatorJava.cacheMetadata(meta, res); @@ -1191,7 +1228,7 @@ $generatorJava.cacheMetadatas = function (metadatas, varName, res) { res.needEmptyLine = true; - $generatorJava.declareVariable(res, $generatorJava.needNewVariable(res, 'queryEntities'), 'queryEntities', 'java.util.Collection', 'java.util.ArrayList', 'org.apache.ignite.cache.store.QueryEntity'); + $generatorJava.declareVariable(res, 'queryEntities', 'java.util.Collection', 'java.util.ArrayList', 'org.apache.ignite.cache.store.QueryEntity'); _.forEach(metadatas, function (meta) { $generatorJava.cacheQueryMetadata(meta, res); @@ -1236,7 +1273,7 @@ $generatorJava.clusterCaches = function (caches, igfss, res) { var cacheName = $commonUtils.toJavaName('cache', cache.name); - $generatorJava.declareVariable(res, true, cacheName, 'org.apache.ignite.configuration.CacheConfiguration'); + $generatorJava.declareVariable(res, cacheName, 'org.apache.ignite.configuration.CacheConfiguration'); $generatorJava.cache(cache, cacheName, res); @@ -1572,7 +1609,7 @@ $generatorJava.igfss = function(igfss, varName, res) { res.line(res.importClass('org.apache.ignite.configuration.FileSystemConfiguration') + '[] ' + arrayName + ' = new FileSystemConfiguration[' + igfss.length + '];'); _.forEach(igfss, function(igfs, ix) { - $generatorJava.declareVariable(res, $generatorJava.needNewVariable(res, igfsInst), igfsInst, 'org.apache.ignite.configuration.FileSystemConfiguration'); + $generatorJava.declareVariable(res, igfsInst, 'org.apache.ignite.configuration.FileSystemConfiguration'); $generatorJava.igfsGeneral(igfs, igfsInst, res); $generatorJava.igfsIPC(igfs, igfsInst, res); @@ -1614,9 +1651,9 @@ $generatorJava.igfsFragmentizer = function(igfs, varName, res) { res = $generatorCommon.builder(); if (igfs.fragmentizerEnabled) { - $generatorJava.property(res, varName, igfs, 'fragmentizerConcurrentFiles', undefined, undefined, 0); - $generatorJava.property(res, varName, igfs, 'fragmentizerThrottlingBlockLength', undefined, undefined, 16777216); - $generatorJava.property(res, varName, igfs, 'fragmentizerThrottlingDelay', undefined, undefined, 200); + $generatorJava.property(res, varName, igfs, 'fragmentizerConcurrentFiles', null, null, 0); + $generatorJava.property(res, varName, igfs, 'fragmentizerThrottlingBlockLength', null, null, 16777216); + $generatorJava.property(res, varName, igfs, 'fragmentizerThrottlingDelay', null, null, 200); res.needEmptyLine = true; } @@ -1630,12 +1667,12 @@ $generatorJava.igfsDualMode = function(igfs, varName, res) { if (!res) res = $generatorCommon.builder(); - $generatorJava.property(res, varName, igfs, 'dualModeMaxPendingPutsSize', undefined, undefined, 0); + $generatorJava.property(res, varName, igfs, 'dualModeMaxPendingPutsSize', null, null, 0); if ($commonUtils.isDefinedAndNotEmpty(igfs.dualModePutExecutorService)) res.line(varName + '.' + $generatorJava.setterName('dualModePutExecutorService') + '(new ' + res.importClass(igfs.dualModePutExecutorService) + '());'); - $generatorJava.property(res, varName, igfs, 'dualModePutExecutorServiceShutdown', undefined, undefined, false); + $generatorJava.property(res, varName, igfs, 'dualModePutExecutorServiceShutdown', null, null, false); res.needEmptyLine = true; @@ -1664,17 +1701,17 @@ $generatorJava.igfsMisc = function(igfs, varName, res) { if (!res) res = $generatorCommon.builder(); - $generatorJava.property(res, varName, igfs, 'blockSize', undefined, undefined, 65536); - $generatorJava.property(res, varName, igfs, 'streamBufferSize', undefined, undefined, 65536); + $generatorJava.property(res, varName, igfs, 'blockSize', null, null, 65536); + $generatorJava.property(res, varName, igfs, 'streamBufferSize', null, null, 65536); $generatorJava.property(res, varName, igfs, 'defaultMode', res.importClass('org.apache.ignite.igfs.IgfsMode'), undefined, "DUAL_ASYNC"); $generatorJava.property(res, varName, igfs, 'maxSpaceSize'); $generatorJava.property(res, varName, igfs, 'maximumTaskRangeLength'); - $generatorJava.property(res, varName, igfs, 'managementPort', undefined, undefined, 11400); + $generatorJava.property(res, varName, igfs, 'managementPort', null, null, 11400); if (igfs.pathModes && igfs.pathModes.length > 0) { res.needEmptyLine = true; - $generatorJava.declareVariable(res, true, 'pathModes', 'java.util.Map', 'java.util.HashMap', 'String', 'org.apache.ignite.igfs.IgfsMode'); + $generatorJava.declareVariable(res, 'pathModes', 'java.util.Map', 'java.util.HashMap', 'String', 'org.apache.ignite.igfs.IgfsMode'); _.forEach(igfs.pathModes, function (pair) { res.line('pathModes.put("' + pair.path + '", IgfsMode.' + pair.mode +');'); @@ -1685,11 +1722,11 @@ $generatorJava.igfsMisc = function(igfs, varName, res) { res.line(varName + '.setPathModes(pathModes);'); } - $generatorJava.property(res, varName, igfs, 'perNodeBatchSize', undefined, undefined, 100); - $generatorJava.property(res, varName, igfs, 'perNodeParallelBatchCount', undefined, undefined, 8); - $generatorJava.property(res, varName, igfs, 'prefetchBlocks', undefined, undefined, 0); - $generatorJava.property(res, varName, igfs, 'sequentialReadsBeforePrefetch', undefined, undefined, 0); - $generatorJava.property(res, varName, igfs, 'trashPurgeTimeout', undefined, undefined, 1000); + $generatorJava.property(res, varName, igfs, 'perNodeBatchSize', null, null, 100); + $generatorJava.property(res, varName, igfs, 'perNodeParallelBatchCount', null, null, 8); + $generatorJava.property(res, varName, igfs, 'prefetchBlocks', null, null, 0); + $generatorJava.property(res, varName, igfs, 'sequentialReadsBeforePrefetch', null, null, 0); + $generatorJava.property(res, varName, igfs, 'trashPurgeTimeout', null, null, 1000); res.needEmptyLine = true; http://git-wip-us.apache.org/repos/asf/ignite/blob/12d5b16d/modules/control-center-web/src/main/js/routes/generator/generator-xml.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-xml.js b/modules/control-center-web/src/main/js/routes/generator/generator-xml.js index 7c39150..f759b80 100644 --- a/modules/control-center-web/src/main/js/routes/generator/generator-xml.js +++ b/modules/control-center-web/src/main/js/routes/generator/generator-xml.js @@ -153,20 +153,12 @@ $generatorXml.beanProperty = function (res, bean, beanPropName, desc, createBean $generatorXml.listProperty(res, bean, propName, descr.setterName); break; + case 'array': $generatorXml.arrayProperty(res, bean, propName, descr); break; - case 'jdbcDialect': - if (bean[propName]) { - res.startBlock('<property name="' + propName + '">'); - res.line('<bean class="' + $generatorCommon.jdbcDialectClassName(bean[propName]) + '"/>'); - res.endBlock('</property>'); - hasData = true; - } - - break; case 'propertiesAsList': var val = bean[propName]; @@ -189,6 +181,7 @@ $generatorXml.beanProperty = function (res, bean, beanPropName, desc, createBean } break; + case 'bean': if ($commonUtils.isDefinedAndNotEmpty(bean[propName])) { res.startBlock('<property name="' + propName + '">'); @@ -199,6 +192,7 @@ $generatorXml.beanProperty = function (res, bean, beanPropName, desc, createBean } break; + default: if ($generatorXml.property(res, bean, propName, descr.setterName, descr.dflt)) hasData = true; @@ -721,20 +715,61 @@ $generatorXml.cacheStore = function(cache, res) { res = $generatorCommon.builder(); if (cache.cacheStoreFactory && cache.cacheStoreFactory.kind) { - var storeFactory = cache.cacheStoreFactory[cache.cacheStoreFactory.kind]; + var factoryKind = cache.cacheStoreFactory.kind; + + var storeFactory = cache.cacheStoreFactory[factoryKind]; if (storeFactory) { - $generatorXml.beanProperty(res, storeFactory, 'cacheStoreFactory', $generatorCommon.STORE_FACTORIES[cache.cacheStoreFactory.kind], true); - - if (storeFactory.dialect) { - if (_.findIndex(res.datasources, function (ds) { - return ds.dataSourceBean == storeFactory.dataSourceBean; - }) < 0) { - res.datasources.push({ - dataSourceBean: storeFactory.dataSourceBean, - className: $generatorCommon.DATA_SOURCES[storeFactory.dialect], - dialect: storeFactory.dialect + if (factoryKind == 'CacheJdbcPojoStoreFactory') { + res.startBlock('<property name="cacheStoreFactory">'); + res.startBlock('<bean class="org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory">'); + res.startBlock('<property name="configuration">'); + res.startBlock('<bean class="org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreConfiguration">'); + + $generatorXml.property(res, storeFactory, 'dataSourceBean'); + + res.startBlock('<property name="dialect">'); + res.line('<bean class="' + $generatorCommon.jdbcDialectClassName(storeFactory.dialect) + '"/>'); + res.endBlock('</property>'); + + var metadatas = cache.metadatas; + + if (metadatas && metadatas.length > 0) { + res.startBlock('<property name="types">'); + res.startBlock('<list>'); + + _.forEach(metadatas, function (meta) { + res.startBlock('<bean class="org.apache.ignite.cache.store.jdbc.JdbcType">'); + + $generatorXml.classNameProperty(res, meta, 'keyType'); + $generatorXml.property(res, meta, 'valueType'); + $generatorXml.property(res, meta, 'keepSerialized', null, null, false); + + res.endBlock('</bean>'); }); + + res.endBlock('</list>'); + res.endBlock('</property>'); + } + + res.endBlock('</bean>'); + res.endBlock("</property>"); + res.endBlock('</bean>'); + res.endBlock("</property>") + } + else { + $generatorXml.beanProperty(res, storeFactory, 'cacheStoreFactory', $generatorCommon.STORE_FACTORIES[factoryKind], true); + + if (storeFactory.dialect) { + if (_.findIndex(res.datasources, function (ds) { + return ds.dataSourceBean == storeFactory.dataSourceBean; + }) < 0) { + res.datasources.push({ + dataSourceBean: storeFactory.dataSourceBean, + className: $generatorCommon.DATA_SOURCES[storeFactory.dialect], + dialect: storeFactory.dialect + }); + } } } @@ -939,7 +974,7 @@ $generatorXml.metadataDatabaseFields = function (res, meta, fieldProp) { res.startBlock('<list>'); _.forEach(fields, function (field) { - res.startBlock('<bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">'); + res.startBlock('<bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">'); $generatorXml.property(res, field, 'databaseName'); @@ -997,6 +1032,7 @@ $generatorXml.metadataStore = function(meta, res) { $generatorXml.property(res, meta, 'databaseSchema'); $generatorXml.property(res, meta, 'databaseTable'); + $generatorXml.property(res, meta, 'keepSerialized'); res.needEmptyLine = true; @@ -1010,25 +1046,6 @@ $generatorXml.metadataStore = function(meta, res) { return res; }; -// Generate cache type metadata config. -$generatorXml.cacheMetadata = function(meta, res) { - if (!res) - res = $generatorCommon.builder(); - - res.emptyLineIfNeeded(); - - res.startBlock('<bean class="org.apache.ignite.cache.CacheTypeMetadata">'); - - $generatorXml.metadataGeneral(meta, res); - $generatorXml.metadataStore(meta, res); - - res.endBlock('</bean>'); - - res.needEmptyLine = true; - - return res; -}; - $generatorXml.cacheQueryMetadata = function(meta, res) { if (!res) res = $generatorCommon.builder(); @@ -1055,18 +1072,6 @@ $generatorXml.cacheMetadatas = function(metadatas, res) { if (metadatas && metadatas.length > 0) { res.emptyLineIfNeeded(); - res.startBlock('<property name="typeMetadata">'); - res.startBlock('<list>'); - - _.forEach(metadatas, function (meta) { - $generatorXml.cacheMetadata(meta, res); - }); - - res.endBlock('</list>'); - res.endBlock('</property>'); - - res.needEmptyLine = true; - res.startBlock('<property name="queryEntities">'); res.startBlock('<list>');
