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/12/17 08:59:44 UTC

ignite git commit: IGNITE-843 Reworked java code generation for JDBC store factory.

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 <ak...@apache.org>
Authored: Thu Dec 17 15:00:36 2015 +0700
Committer: Alexey Kuznetsov <ak...@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')