This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new 7de5864  EMPIREDB-362 DataListEntry Constructor correction
7de5864 is described below

commit 7de586461e1dbbf65b4cbceb441618135e263bfd
Author: Rainer Döbele <[email protected]>
AuthorDate: Fri Feb 25 20:37:24 2022 +0100

    EMPIREDB-362 DataListEntry Constructor correction
---
 .../org/apache/empire/data/list/DataListEntry.java | 15 +++++++--
 .../empire/data/list/DataListFactoryImpl.java      | 10 ++++--
 .../apache/empire/db/validation/DBModelParser.java | 36 ++++++++++++++--------
 .../empire/dbms/oracle/OracleDBModelParser.java    |  2 +-
 .../org/apache/empire/db/AliasExpressionTest.java  |  2 +-
 .../apache/empire/db/CoalesceExpressionTest.java   |  2 +-
 .../apache/empire/db/FunctionExpressionTest.java   |  2 +-
 7 files changed, 47 insertions(+), 22 deletions(-)

diff --git 
a/empire-db/src/main/java/org/apache/empire/data/list/DataListEntry.java 
b/empire-db/src/main/java/org/apache/empire/data/list/DataListEntry.java
index a388e15..254b66c 100644
--- a/empire-db/src/main/java/org/apache/empire/data/list/DataListEntry.java
+++ b/empire-db/src/main/java/org/apache/empire/data/list/DataListEntry.java
@@ -44,12 +44,21 @@ public class DataListEntry implements RecordData, 
Serializable
     protected final DataListHead head;
     protected final Object values[];
     protected int rownum;
-    
-    public DataListEntry(DataListHead head, int rownum, Object values[])
+
+    public DataListEntry(DataListHead head, Object values[], int rownum)
     {
         this.head = head;
-        this.rownum = rownum;
         this.values = values;
+        this.rownum = rownum;
+        // check
+        int headColumnCount = head.getColumns().length;
+        if (values.length!=headColumnCount)
+            log.warn("DataListEntry number of values {} do not match number of 
head columns {}!", values.length, headColumnCount);
+    }
+    
+    public DataListEntry(DataListHead head, Object values[])
+    {
+        this(head, values, -1);
     }
     
     @SuppressWarnings("unchecked")
diff --git 
a/empire-db/src/main/java/org/apache/empire/data/list/DataListFactoryImpl.java 
b/empire-db/src/main/java/org/apache/empire/data/list/DataListFactoryImpl.java
index 2881cd6..669f9f6 100644
--- 
a/empire-db/src/main/java/org/apache/empire/data/list/DataListFactoryImpl.java
+++ 
b/empire-db/src/main/java/org/apache/empire/data/list/DataListFactoryImpl.java
@@ -47,7 +47,7 @@ public class DataListFactoryImpl<T extends DataListEntry> 
implements DataListFac
     @SuppressWarnings("unchecked")
     protected static <T extends DataListEntry> Constructor<T> 
findEntryConstructor(Class<?> listEntryClass, Class<? extends DataListHead> 
listHeadClass)
     {
-        Constructor<?> constructor = 
ClassUtils.findMatchingConstructor(listEntryClass, -1, listHeadClass, 
int.class, Object[].class);
+        Constructor<?> constructor = 
ClassUtils.findMatchingConstructor(listEntryClass, 2, listHeadClass, 
Object[].class, int.class);
         if (constructor==null)
             throw new UnsupportedTypeException(listEntryClass);
         // found
@@ -110,7 +110,13 @@ public class DataListFactoryImpl<T extends DataListEntry> 
implements DataListFac
             if (constructor==null)
                 throw new NotSupportedException(this, "newEntry");
             // create item
-            return constructor.newInstance(head, rownum, values);
+            switch(constructor.getParameterCount())
+            {
+                case 3: return constructor.newInstance(head, values, rownum);
+                case 2: return constructor.newInstance(head, values);
+                default:
+                    throw new UnsupportedTypeException(constructor.getClass());
+            }
         }
         catch (InstantiationException e)
         {
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/validation/DBModelParser.java 
b/empire-db/src/main/java/org/apache/empire/db/validation/DBModelParser.java
index b2492ef..0c49e26 100644
--- a/empire-db/src/main/java/org/apache/empire/db/validation/DBModelParser.java
+++ b/empire-db/src/main/java/org/apache/empire/db/validation/DBModelParser.java
@@ -80,7 +80,7 @@ public class DBModelParser
     }
 
     protected final String catalog;
-    protected final String schemaPattern;
+    protected final String schema;
 
     protected final String remoteName;
     protected DBDatabase remoteDb = null;  /* will be recreated on every call 
to checkModel */
@@ -93,26 +93,36 @@ public class DBModelParser
     /**
      * Creates a new Model Checker
      * @param catalog
-     * @param schemaPattern
+     * @param schema
      */
-    public DBModelParser(String catalog, String schemaPattern)
+    public DBModelParser(String catalog, String schema)
     {
         this.catalog = catalog;
-        this.schemaPattern = schemaPattern;
+        this.schema = schema;
         // set origin
         StringBuilder b = new StringBuilder();
         if (StringUtils.isNotEmpty(catalog))
             b.append(catalog);
-        if (StringUtils.isNotEmpty(schemaPattern))
+        if (StringUtils.isNotEmpty(schema))
         {   if (b.length()>0)
                 b.append(".");
-            b.append(schemaPattern);
+            b.append(schema);
         }
         if (b.length()==0)
             b.append("[Unknown]");
         this.remoteName = b.toString();
     }
 
+    public String getCatalog()
+    {
+        return catalog;
+    }
+
+    public String getSchema()
+    {
+        return schema;
+    }
+
     public void setStandardIdentityColumnName(String 
standardIdentityColumnName)
     {
         this.standardIdentityColumnName = standardIdentityColumnName;
@@ -198,7 +208,7 @@ public class DBModelParser
         throws SQLException
     {
         tableMap.clear();
-        ResultSet dbTables = dbMeta.getTables(catalog, schemaPattern, 
tablePattern, new String[] { "TABLE", "VIEW" });
+        ResultSet dbTables = dbMeta.getTables(catalog, schema, tablePattern, 
new String[] { "TABLE", "VIEW" });
         try {
             // ResultSet dbTables = dbMeta.getTables("PATOOL", "DBO", null, 
new String[] { "TABLE", "VIEW" });
             int count = 0;
@@ -232,7 +242,7 @@ public class DBModelParser
         int count = 0;
         for (DBRowSet t : getTables())
         {
-            ResultSet dbColumns = dbMeta.getColumns(catalog, schemaPattern, 
t.getName(), null);
+            ResultSet dbColumns = dbMeta.getColumns(catalog, schema, 
t.getName(), null);
             try {
                 while (dbColumns.next())
                 {   // add the column
@@ -252,7 +262,7 @@ public class DBModelParser
     protected int collectColumns(DatabaseMetaData dbMeta, String tablePattern)
         throws SQLException
     {
-        ResultSet dbColumns = dbMeta.getColumns(catalog, schemaPattern, 
tablePattern, null);
+        ResultSet dbColumns = dbMeta.getColumns(catalog, schema, tablePattern, 
null);
         try {
             int count = 0;
             while (dbColumns.next())
@@ -289,7 +299,7 @@ public class DBModelParser
             // read pk
             DBTable t = (DBTable)rs;
             List<String> pkCols = new ArrayList<String>();
-            ResultSet primaryKeys = dbMeta.getPrimaryKeys(catalog, 
schemaPattern, t.getName());
+            ResultSet primaryKeys = dbMeta.getPrimaryKeys(catalog, schema, 
t.getName());
             try {
                 while (primaryKeys.next())
                 {
@@ -335,7 +345,7 @@ public class DBModelParser
     protected int collectForeignKeys(DatabaseMetaData dbMeta, String 
tablePattern)
         throws SQLException
     {
-        ResultSet foreignKeys = dbMeta.getImportedKeys(catalog, schemaPattern, 
tablePattern);
+        ResultSet foreignKeys = dbMeta.getImportedKeys(catalog, schema, 
tablePattern);
         try {
             int count = 0;
             while (foreignKeys.next())
@@ -442,12 +452,12 @@ public class DBModelParser
             if (timestampColumn)
                 t.setTimestampColumn(col);
             // info
-            log.info("Added table column {}.{} of type {}", t.getName(), name, 
empireType);
+            log.debug("Added table column {}.{} of type {}", t.getName(), 
name, empireType);
         }
         else if (t instanceof DBView)
         {
             col = ((RemoteView)t).addColumn(name, empireType, colSize, false);
-            log.info("Added view column {}.{} of type {}", t.getName(), name, 
empireType);
+            log.debug("Added view column {}.{} of type {}", t.getName(), name, 
empireType);
         }
         else
         {   // Unknown type
diff --git 
a/empire-db/src/main/java/org/apache/empire/dbms/oracle/OracleDBModelParser.java
 
b/empire-db/src/main/java/org/apache/empire/dbms/oracle/OracleDBModelParser.java
index 1a374d4..9e0aa24 100644
--- 
a/empire-db/src/main/java/org/apache/empire/dbms/oracle/OracleDBModelParser.java
+++ 
b/empire-db/src/main/java/org/apache/empire/dbms/oracle/OracleDBModelParser.java
@@ -35,7 +35,7 @@ public class OracleDBModelParser extends DBModelParser
      */
     public String getSchemaName()
     {
-        return schemaPattern;
+        return schema;
     }
 
     /**
diff --git 
a/empire-db/src/test/java/org/apache/empire/db/AliasExpressionTest.java 
b/empire-db/src/test/java/org/apache/empire/db/AliasExpressionTest.java
index 7085c9e..4d9aa9c 100644
--- a/empire-db/src/test/java/org/apache/empire/db/AliasExpressionTest.java
+++ b/empire-db/src/test/java/org/apache/empire/db/AliasExpressionTest.java
@@ -107,7 +107,7 @@ public class AliasExpressionTest
         Object[] values = new Object[head.getColumns().length];
         for (int i=0; i<values.length; i++)
             values[i] = head.getColumns()[i].getName();
-        DataListEntry dle = new DataListEntry(head, 0, values);
+        DataListEntry dle = new DataListEntry(head, values);
         Assert.assertEquals(dle.getString(t.C_TEXT), values[1]);
         Assert.assertEquals(dle.getString(ALIAS_1), values[0]);
         Assert.assertEquals(dle.getString(ALIAS_2), values[2]);
diff --git 
a/empire-db/src/test/java/org/apache/empire/db/CoalesceExpressionTest.java 
b/empire-db/src/test/java/org/apache/empire/db/CoalesceExpressionTest.java
index d5e2210..6cf1cd3 100644
--- a/empire-db/src/test/java/org/apache/empire/db/CoalesceExpressionTest.java
+++ b/empire-db/src/test/java/org/apache/empire/db/CoalesceExpressionTest.java
@@ -105,7 +105,7 @@ public class CoalesceExpressionTest
         Object[] values = new Object[head.getColumns().length];
         for (int i=0; i<values.length; i++)
             values[i] = head.getColumns()[i].getName();
-        DataListEntry dle = new DataListEntry(head, 0, values);
+        DataListEntry dle = new DataListEntry(head, values);
         Assert.assertEquals(dle.getString(t.C_TEXT), values[1]);
         Assert.assertEquals(dle.getString(COALESCE_1), values[0]);
         Assert.assertEquals(dle.getString(COALESCE_2), values[0]);
diff --git 
a/empire-db/src/test/java/org/apache/empire/db/FunctionExpressionTest.java 
b/empire-db/src/test/java/org/apache/empire/db/FunctionExpressionTest.java
index 179be84..b3bc2cd 100644
--- a/empire-db/src/test/java/org/apache/empire/db/FunctionExpressionTest.java
+++ b/empire-db/src/test/java/org/apache/empire/db/FunctionExpressionTest.java
@@ -133,7 +133,7 @@ public class FunctionExpressionTest
         Object[] values = new Object[head.getColumns().length];
         for (int i=0; i<values.length; i++)
             values[i] = head.getColumns()[i].getName();
-        DataListEntry dle = new DataListEntry(head, 0, values);
+        DataListEntry dle = new DataListEntry(head, values);
         Assert.assertEquals(dle.getFieldIndex(NUMBER), 0);
         Assert.assertEquals(dle.getFieldIndex(TEST_COUNT), 1);
         Assert.assertEquals(dle.getFieldIndex(TEST_2_COUNT), 2);

Reply via email to