Repository: ignite Updated Branches: refs/heads/ignite-843-rc2 40a0b99bb -> ffd7b2b8b
IGNITE-843 Reworked java code generation for JDBC store factory. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ffd7b2b8 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ffd7b2b8 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ffd7b2b8 Branch: refs/heads/ignite-843-rc2 Commit: ffd7b2b8b75710c6ec26d5aee54475f890b2b362 Parents: 40a0b99 Author: Alexey Kuznetsov <akuznet...@apache.org> Authored: Thu Dec 17 15:00:36 2015 +0700 Committer: Alexey Kuznetsov <akuznet...@apache.org> Committed: Thu Dec 17 15:00:36 2015 +0700 ---------------------------------------------------------------------- .../main/js/helpers/generator/generator-java.js | 130 +++++++++++-------- .../helpers/generator/generator-properties.js | 2 +- .../src/main/js/views/sql/sql.jade | 6 +- 3 files changed, 82 insertions(+), 56 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ffd7b2b8/modules/control-center-web/src/main/js/helpers/generator/generator-java.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js index d326d9b..b197e1f 100644 --- a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js +++ b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js @@ -71,8 +71,9 @@ $generatorJava.setterName = function (propName, setterName) { * @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. + * @param subClass If `true` then variable will be declared as anonymous subclass. */ -$generatorJava.declareVariable = function (res, varName, varFullType, varFullActualType, varFullGenericType1, varFullGenericType2) { +$generatorJava.declareVariable = function (res, varName, varFullType, varFullActualType, varFullGenericType1, varFullGenericType2, subClass) { res.emptyLineIfNeeded(); var varType = res.importClass(varFullType); @@ -94,7 +95,23 @@ $generatorJava.declareVariable = function (res, varName, varFullType, varFullAct varName + ' = new ' + varActualType + '<>();'); } else - res.line((varNew ? (varType + ' ') : '') + varName + ' = new ' + varType + '();'); + res.line((varNew ? (varType + ' ') : '') + varName + ' = new ' + varType + '()' + (subClass ? ' {' : ';')); + + if (!subClass) + res.needEmptyLine = true; +}; + +/** + * Add local variable declaration. + * + * @param res Resulting output with generated code. + * @param varName Variable name. + * @param varFullType Variable full class name to be added to imports. + */ +$generatorJava.declareVariableLocal = function (res, varName, varFullType) { + var varType = res.importClass(varFullType); + + res.line(varType + varName + ' = new ' + varType + '();'); res.needEmptyLine = true; }; @@ -874,6 +891,52 @@ $generatorJava.cacheQuery = function (cache, varName, res) { }; /** + * Generate cache store datasource. + * + * @param storeFactory Factory to generate data source for. + * @param res Resulting output with generated code. + */ +$generatorJava.cacheStoreDataSource = function (storeFactory, res) { + if (storeFactory.dialect) { + var dataSourceBean = storeFactory.dataSourceBean; + + var dsClsName = $generatorCommon.dataSourceClassName(storeFactory.dialect); + + $generatorJava.declareVariableLocal(res, 'dataSource', dsClsName); + + switch (storeFactory.dialect) { + case 'Generic': + res.line('dataSource.setJdbcUrl(props.getProperty("' + dataSourceBean + '.jdbc.url"));'); + + break; + + case 'DB2': + res.line('dataSource.setServerName(props.getProperty("' + dataSourceBean + '.jdbc.server_name"));'); + res.line('dataSource.setPortNumber(Integer.valueOf(props.getProperty("' + dataSourceBean + '.jdbc.port_number")));'); + res.line('dataSource.setDatabaseName(props.getProperty("' + dataSourceBean + '.jdbc.database_name"));'); + res.line('dataSource.setDriverType(Integer.valueOf(props.getProperty("' + dataSourceBean + '.jdbc.driver_type")));'); + + break; + + case 'PostgreSQL': + res.line('dataSource.setDataSourceName("' + dataSourceBean + '");'); + res.line('dataSource.setServerName(props.getProperty("' + dataSourceBean + '.jdbc.server_name"));'); + res.line('dataSource.setDatabaseName(props.getProperty("' + dataSourceBean + '.jdbc.database_name"));'); + + break; + + default: + res.line('dataSource.setURL(props.getProperty("' + dataSourceBean + '.jdbc.url"));'); + } + + res.line('dataSource.setUser(props.getProperty("' + dataSourceBean + '.jdbc.username"));'); + res.line('dataSource.setPassword(props.getProperty("' + dataSourceBean + '.jdbc.password"));'); + + res.needEmptyLine = true; + } +}; + +/** * Generate cache store group. * * @param cache Cache descriptor. @@ -896,60 +959,23 @@ $generatorJava.cacheStore = function (cache, metadatas, cacheVarName, res) { var varName = 'storeFactory' + storeFactoryDesc.suffix; - var dataSourceFound = false; - - if (storeFactory.dialect) { - var dataSourceBean = storeFactory.dataSourceBean; - - dataSourceFound = true; - - if (!_.contains(res.datasources, dataSourceBean)) { - res.datasources.push(dataSourceBean); - - var dsClsName = $generatorCommon.dataSourceClassName(storeFactory.dialect); - - res.needEmptyLine = true; - - $generatorJava.declareVariable(res, 'dataSource', dsClsName); - - switch (storeFactory.dialect) { - case 'Generic': - res.line('dataSource.setJdbcUrl(props.getProperty("' + dataSourceBean + '.jdbc.url"));'); - - break; - - case 'DB2': - res.line('dataSource.setServerName(props.getProperty("' + dataSourceBean + '.jdbc.server_name"));'); - res.line('dataSource.setPortNumber(Integer.valueOf(props.getProperty("' + dataSourceBean + '.jdbc.port_number")));'); - res.line('dataSource.setDatabaseName(props.getProperty("' + dataSourceBean + '.jdbc.database_name"));'); - res.line('dataSource.setDriverType(Integer.valueOf(props.getProperty("' + dataSourceBean + '.jdbc.driver_type")));'); - - break; - - case 'PostgreSQL': - res.line('dataSource.setDataSourceName("' + dataSourceBean + '");'); - res.line('dataSource.setServerName(props.getProperty("' + dataSourceBean + '.jdbc.server_name"));'); - res.line('dataSource.setDatabaseName(props.getProperty("' + dataSourceBean + '.jdbc.database_name"));'); - - break; - - default: - res.line('dataSource.setURL(props.getProperty("' + dataSourceBean + '.jdbc.url"));'); - } + if (factoryKind === 'CacheJdbcPojoStoreFactory') { + // Generate POJO store factory. + $generatorJava.declareVariable(res, varName, 'org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory', null, null, null, true); + res.deep++; - res.line('dataSource.setUser(props.getProperty("' + dataSourceBean + '.jdbc.username"));'); - res.line('dataSource.setPassword(props.getProperty("' + dataSourceBean + '.jdbc.password"));'); + res.line('/** {@inheritDoc} */'); + res.startBlock('@Override public CacheJdbcPojoStore<Long, Person> create() {'); - res.needEmptyLine = true; - } - } + $generatorJava.cacheStoreDataSource(storeFactory, res); - if (factoryKind === 'CacheJdbcPojoStoreFactory') { - // Generate POJO store factory. - $generatorJava.declareVariable(res, varName, 'org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory'); + res.line('setDataSource(dataSource);'); + res.line(''); + res.line('return super.create();'); + res.endBlock('};'); + res.endBlock('};'); - if (dataSourceFound) - res.line(varName + '.setDataSource(dataSource);'); + res.needEmptyLine = true; res.line(varName + '.setDialect(new ' + res.importClass($generatorCommon.jdbcDialectClassName(storeFactory.dialect)) + '());'); http://git-wip-us.apache.org/repos/asf/ignite/blob/ffd7b2b8/modules/control-center-web/src/main/js/helpers/generator/generator-properties.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-properties.js b/modules/control-center-web/src/main/js/helpers/generator/generator-properties.js index c867559..a8dfd3f 100644 --- a/modules/control-center-web/src/main/js/helpers/generator/generator-properties.js +++ b/modules/control-center-web/src/main/js/helpers/generator/generator-properties.js @@ -87,7 +87,7 @@ $generatorProperties.dataSourcesProperties = function (cluster, res) { res.line(beanId + '.jdbc.username=YOUR_USER_NAME'); res.line(beanId + '.jdbc.password=YOUR_PASSWORD'); - res.line(); + res.line(''); } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/ffd7b2b8/modules/control-center-web/src/main/js/views/sql/sql.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/views/sql/sql.jade b/modules/control-center-web/src/main/js/views/sql/sql.jade index bc4dae8..238a636 100644 --- a/modules/control-center-web/src/main/js/views/sql/sql.jade +++ b/modules/control-center-web/src/main/js/views/sql/sql.jade @@ -30,7 +30,7 @@ mixin chart-settings(mdl) .row .col-xs-4 .chart-settings-link(ng-show='paragraph.chart && paragraph.chartColumns.length > 0') - a(ng-click='$event.stopPropagation()' bs-popover data-template-url='/sql/chart-settings.html' data-placement='bottom' data-auto-close='1' data-trigger='click') + a(title='Click to show chart settings dialog' ng-click='$event.stopPropagation()' bs-popover data-template-url='/sql/chart-settings.html' data-placement='bottom' data-auto-close='1' data-trigger='click') i.fa.fa-chevron-circle-down | Chart settings div(ng-show='paragraphTimeSpanVisible(paragraph)') @@ -108,7 +108,7 @@ mixin chart-settings(mdl) .col-xs-4.col-sm-3 div(ng-show='caches.length > 0' style='padding: 5px 10px' st-table='displayedCaches' st-safe-src='caches') lable.labelField.labelFormField Caches: - i.fa.fa-database.tipField(bs-popover data-template-url='/sql/cache-metadata.html', data-placement='bottom', data-trigger='click') + i.fa.fa-database.tipField(title='Click to show cache types metadata dialog' bs-popover data-template-url='/sql/cache-metadata.html', data-placement='bottom', data-trigger='click') .input-tip input.form-control(type='text' st-search placeholder='Filter caches...') table.links @@ -132,7 +132,7 @@ mixin chart-settings(mdl) labelHide System columns: a.btn.btn-default.fa.fa-bars.tipLabel(ng-class='{"btn-info": paragraph.systemColumns}' ng-click='toggleSystemColumns(paragraph)' ng-disabled='paragraph.disabledSystemColumns' bs-tooltip data-title='Show "_KEY", "_VAL" columns') label.tipLabel Refresh rate: - button.btn.btn-default.fa.fa-clock-o.tipLabel(ng-class='{"btn-info": paragraph.rate && paragraph.rate.installed}' bs-popover data-template-url='/sql/paragraph-rate.html' data-placement='left' data-auto-close='1' data-trigger='click') {{rateAsString(paragraph)}} + button.btn.btn-default.fa.fa-clock-o.tipLabel(title='Click to show refresh rate dialog' ng-class='{"btn-info": paragraph.rate && paragraph.rate.installed}' bs-popover data-template-url='/sql/paragraph-rate.html' data-placement='left' data-auto-close='1' data-trigger='click') {{rateAsString(paragraph)}} label.tipLabel Page size: button.select-toggle.fieldButton.btn.btn-default(ng-model='paragraph.pageSize' bs-options='item for item in pageSizes' bs-select bs-tooltip data-title='Max number of rows to show in query result as one page') .col-sm-12(ng-show='paragraph.errMsg')