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/02/02 09:12:03 UTC

[2/2] incubator-ignite git commit: # IGNITE-32: fixed XML generation.

# IGNITE-32: fixed XML generation.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/2fe9dd1b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2fe9dd1b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2fe9dd1b

Branch: refs/heads/ignite-32
Commit: 2fe9dd1bef7f49e565ccf9dc89b7fb39105a0aa9
Parents: f907780
Author: AKuznetsov <ak...@gridgain.com>
Authored: Mon Feb 2 15:12:00 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Mon Feb 2 15:12:00 2015 +0700

----------------------------------------------------------------------
 modules/schema-load/pom.xml                     |  1 -
 .../ignite/schema/generator/XmlGenerator.java   | 40 +++++++++++---------
 .../ignite/schema/model/PojoDescriptor.java     | 35 +++++++++++++++++
 .../apache/ignite/schema/parser/DbIndex.java    | 39 -------------------
 .../apache/ignite/schema/parser/DbTable.java    |  7 ++++
 .../parser/dialect/JdbcMetadataDialect.java     | 10 +++++
 .../parser/dialect/OracleMetadataDialect.java   |  7 ++--
 7 files changed, 79 insertions(+), 60 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2fe9dd1b/modules/schema-load/pom.xml
----------------------------------------------------------------------
diff --git a/modules/schema-load/pom.xml b/modules/schema-load/pom.xml
index 8c5087c..06cd2b3 100644
--- a/modules/schema-load/pom.xml
+++ b/modules/schema-load/pom.xml
@@ -40,7 +40,6 @@
             <groupId>org.apache.ignite</groupId>
             <artifactId>ignite-core</artifactId>
             <version>${ignite.version}</version>
-            <scope>test</scope>
         </dependency>
 
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2fe9dd1b/modules/schema-load/src/main/java/org/apache/ignite/schema/generator/XmlGenerator.java
----------------------------------------------------------------------
diff --git a/modules/schema-load/src/main/java/org/apache/ignite/schema/generator/XmlGenerator.java b/modules/schema-load/src/main/java/org/apache/ignite/schema/generator/XmlGenerator.java
index b56ed51..f38d884 100644
--- a/modules/schema-load/src/main/java/org/apache/ignite/schema/generator/XmlGenerator.java
+++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/generator/XmlGenerator.java
@@ -17,8 +17,9 @@
 
 package org.apache.ignite.schema.generator;
 
+import org.apache.ignite.cache.query.*;
+import org.apache.ignite.lang.*;
 import org.apache.ignite.schema.model.*;
-import org.apache.ignite.schema.parser.*;
 import org.apache.ignite.schema.ui.*;
 import org.w3c.dom.*;
 
@@ -68,10 +69,10 @@ public class XmlGenerator {
      * @param parent Parent XML node.
      * @param clazz Bean class.
      */
-    private static Element addBean(Document doc, Node parent, String clazz) {
+    private static Element addBean(Document doc, Node parent, Class<?> clazz) {
         Element elem = doc.createElement("bean");
 
-        elem.setAttribute("class", clazz);
+        elem.setAttribute("class", clazz.getName());
 
         parent.appendChild(elem);
 
@@ -174,7 +175,7 @@ public class XmlGenerator {
             Element list = addElement(doc, prop, "list");
 
             for (PojoField field : fields) {
-                Element item = addBean(doc, list, "org.apache.ignite.cache.query.CacheQueryTableColumnMetadata");
+                Element item = addBean(doc, list, CacheQueryTableColumnMetadata.class);
 
                 addProperty(doc, item, "dbName", field.dbName());
                 addProperty(doc, item, "dbType", String.valueOf(field.dbType()));
@@ -192,7 +193,9 @@ public class XmlGenerator {
      * @param pojo POJO descriptor.
      */
     private static void addTableMetadata(Document doc, Node parent, PojoDescriptor pojo, boolean includeKeys) {
-        Element bean = addBean(doc, parent, "org.apache.ignite.cache.query.CacheQueryTableMetadata");
+        Element tblMeta = addProperty(doc, parent, "tableMetadata", null);
+
+        Element bean = addBean(doc, tblMeta, CacheQueryTableMetadata.class);
 
         addProperty(doc, bean, "schema", pojo.schema());
 
@@ -210,28 +213,29 @@ public class XmlGenerator {
      * @param parent Parent XML node.
      * @param groups Map with indexes.
      */
-    private static void addGroups(Document doc, Node parent, Map<String, LinkedHashMap<String, DbIndex>> groups) {
+    private static void addGroups(Document doc, Node parent,
+        Map<String, Map<String, IgniteBiTuple<String, Boolean>>> groups) {
         if (!groups.isEmpty()) {
             Element prop = addProperty(doc, parent, "groups", null);
 
             Element map = addElement(doc, prop, "map");
 
-            for (Map.Entry<String, LinkedHashMap<String, DbIndex>> group : groups.entrySet()) {
+            for (Map.Entry<String, Map<String, IgniteBiTuple<String, Boolean>>> group : groups.entrySet()) {
                 Element entry1 = addElement(doc, map, "entry", "key", group.getKey());
 
                 Element val1 = addElement(doc, entry1, "map");
 
-                LinkedHashMap<String, DbIndex> fields = group.getValue();
+                Map<String, IgniteBiTuple<String, Boolean>> fields = group.getValue();
 
-                for (Map.Entry<String, DbIndex> field : fields.entrySet()) {
+                for (Map.Entry<String, IgniteBiTuple<String, Boolean>> field : fields.entrySet()) {
                     Element entry2 = addElement(doc, val1, "entry", "key", field.getKey());
 
-                    Element val2 = addBean(doc, entry2, "org.apache.ignite.lang.IgniteBiTuple");
+                    Element val2 = addBean(doc, entry2, IgniteBiTuple.class);
 
-                    DbIndex idx = field.getValue();
+                    IgniteBiTuple<String, Boolean> idx = field.getValue();
 
-                    addElement(doc, val2, "constructor-arg", null, null, "value", idx.name());
-                    addElement(doc, val2, "constructor-arg", null, null, "value", String.valueOf(idx.descending()));
+                    addElement(doc, val2, "constructor-arg", null, null, "value", idx.get1());
+                    addElement(doc, val2, "constructor-arg", null, null, "value", String.valueOf(idx.get2()));
                 }
             }
         }
@@ -245,8 +249,9 @@ public class XmlGenerator {
      * @param pkg Package fo types.
      * @param pojo POJO descriptor.
      */
-    private static void addTypeMetadata(Document doc, Node parent, String pkg, PojoDescriptor pojo, boolean includeKeys) {
-        Element bean = addBean(doc, parent, "org.apache.ignite.cache.query.CacheQueryTypeMetadata");
+    private static void addTypeMetadata(Document doc, Node parent, String pkg, PojoDescriptor pojo,
+        boolean includeKeys) {
+        Element bean = addBean(doc, parent, CacheQueryTypeMetadata.class);
 
         addProperty(doc, bean, "type", pkg + "." + pojo.valueClassName());
 
@@ -260,7 +265,7 @@ public class XmlGenerator {
 
         addFields(doc, bean, "descendingFields", pojo.descendingFields());
 
-//        addGroups(doc, bean, typeMeta.getGroups());
+        addGroups(doc, bean, pojo.groups());
     }
 
     /**
@@ -271,7 +276,8 @@ public class XmlGenerator {
      * @param out File to output result.
      * @param askOverwrite Callback to ask user to confirm file overwrite.
      */
-    public static void generate(String pkg, PojoDescriptor pojo, boolean includeKeys, File out, ConfirmCallable askOverwrite) {
+    public static void generate(String pkg, PojoDescriptor pojo, boolean includeKeys, File out,
+        ConfirmCallable askOverwrite) {
         generate(pkg, Collections.singleton(pojo), includeKeys, out, askOverwrite);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2fe9dd1b/modules/schema-load/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/schema-load/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java b/modules/schema-load/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java
index be69cc6..6b0f785 100644
--- a/modules/schema-load/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java
+++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java
@@ -20,6 +20,7 @@ package org.apache.ignite.schema.model;
 import javafx.beans.property.*;
 import javafx.beans.value.*;
 import javafx.collections.*;
+import org.apache.ignite.lang.*;
 import org.apache.ignite.schema.parser.*;
 
 import java.math.*;
@@ -64,6 +65,9 @@ public class PojoDescriptor {
     /** Java class fields. */
     private final ObservableList<PojoField> fields;
 
+    /** Fields map for quick access. */
+    private final Map<String, PojoField> fieldsMap;
+
     /**
      * Constructor of POJO descriptor.
      *
@@ -116,6 +120,8 @@ public class PojoDescriptor {
 
         List<PojoField> flds = new ArrayList<>(cols.size());
 
+        fieldsMap = new HashMap<>(cols.size());
+
         for (DbColumn col : cols) {
             PojoField fld = new PojoField(col.name(), col.type(),
                 toJavaFieldName(col.name()), toJavaType(col.type(), col.nullable()).getName(),
@@ -124,6 +130,8 @@ public class PojoDescriptor {
             fld.owner(this);
 
             flds.add(fld);
+
+            fieldsMap.put(col.name(), fld);
         }
 
         fields = FXCollections.observableList(flds);
@@ -429,4 +437,31 @@ public class PojoDescriptor {
                 return Object.class;
         }
     }
+
+    /**
+     * Gets indexes groups.
+     */
+    public Map<String, Map<String, IgniteBiTuple<String, Boolean>>> groups() {
+        Map<String, Map<String, Boolean>> idxs = tbl.indexes();
+
+        Map<String, Map<String, IgniteBiTuple<String, Boolean>>> groups = new LinkedHashMap<>(idxs.size());
+
+        for (Map.Entry<String, Map<String, Boolean>> idx : idxs.entrySet()) {
+            String idxName = idx.getKey();
+
+            Map<String, Boolean> idxCols = idx.getValue();
+
+            Map<String, IgniteBiTuple<String, Boolean>> grp = new LinkedHashMap<>();
+
+            groups.put(idxName, grp);
+
+            for (Map.Entry<String, Boolean> idxCol : idxCols.entrySet()) {
+                PojoField fld = fieldsMap.get(idxCol.getKey());
+
+                grp.put(fld.javaName(), new IgniteBiTuple<>(fld.javaTypeName(), idxCol.getValue()));
+            }
+        }
+
+        return groups;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2fe9dd1b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/DbIndex.java
----------------------------------------------------------------------
diff --git a/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/DbIndex.java b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/DbIndex.java
deleted file mode 100644
index e94d1dc..0000000
--- a/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/DbIndex.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.schema.parser;
-
-/**
- * TODO: Add class description.
- */
-public class DbIndex {
-    private final String name;
-    private final boolean desc;
-
-    public DbIndex(String name, boolean desc) {
-        this.name = name;
-        this.desc = desc;
-    }
-
-    public String name() {
-        return name;
-    }
-
-    public boolean descending() {
-        return desc;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2fe9dd1b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/DbTable.java
----------------------------------------------------------------------
diff --git a/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/DbTable.java b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/DbTable.java
index 218d07b..35c7d91 100644
--- a/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/DbTable.java
+++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/DbTable.java
@@ -95,4 +95,11 @@ public class DbTable {
     public Set<String> descendingColumns() {
         return descCols;
     }
+
+    /**
+     * @return Indexes.
+     */
+    public Map<String, Map<String, Boolean>> indexes() {
+        return idxs;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2fe9dd1b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java
----------------------------------------------------------------------
diff --git a/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java
index b0b47e9..4e34f35 100644
--- a/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java
+++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java
@@ -91,10 +91,20 @@ public class JdbcMetadataDialect extends DatabaseMetadataDialect {
                                 if (idxName == null || colName == null)
                                     continue;
 
+                                Map<String, Boolean> idx = idxs.get(idxName);
+
+                                if (idx == null) {
+                                    idx = new LinkedHashMap<>();
+
+                                    idxs.put(idxName, idx);
+                                }
+
                                 String askOrDesc = idxRs.getString("ASC_OR_DESC");
 
                                 Boolean desc = askOrDesc != null ? "D".equals(askOrDesc) : null;
 
+                                idx.put(colName, desc);
+
                                 if (desc != null) {
                                     if (desc)
                                         descCols.add(colName);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2fe9dd1b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java
----------------------------------------------------------------------
diff --git a/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java
index 222d1b6..304c911 100644
--- a/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java
+++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java
@@ -101,7 +101,7 @@ public class OracleMetadataDialect extends DatabaseMetadataDialect {
         try (Statement stmt = conn.createStatement()) {
             Collection<DbColumn> cols = new ArrayList<>();
 
-            try(ResultSet colsRs = stmt.executeQuery(String.format(SQL_COLUMNS, "TEST"))) {
+            try (ResultSet colsRs = stmt.executeQuery(String.format(SQL_COLUMNS, "TEST"))) {
                 String prevSchema = "";
                 String prevTbl = "";
 
@@ -133,8 +133,9 @@ public class OracleMetadataDialect extends DatabaseMetadataDialect {
                 }
 
                 if (!cols.isEmpty())
-                    tbls.add(new DbTable(prevSchema, prevTbl, cols, Collections.<String>emptySet(),
-                        Collections.<String>emptySet(), null));
+                    tbls.add(new DbTable(prevSchema, prevTbl, cols,
+                        Collections.<String>emptySet(), Collections.<String>emptySet(),
+                        Collections.<String, Map<String, Boolean>>emptyMap()));
             }
         }