details:   /erp/devel/pi/rev/d61bca59af84
changeset: 8448:d61bca59af84
user:      Martin Taal <martin.taal <at> openbravo.com>
date:      Sat Sep 25 11:26:10 2010 +0200
summary:   Fixes issue 14636: Support database views defined in the AD in the 
Data Access Layer, Fixes issue 9640: Table Validation on View

details:   /erp/devel/pi/rev/508c1e4e6b7a
changeset: 8449:508c1e4e6b7a
user:      Martin Taal <martin.taal <at> openbravo.com>
date:      Sat Sep 25 11:27:17 2010 +0200
summary:   Fixes source warning

diffstat:

 src-test/org/openbravo/test/AllAntTaskTests.java |   2 +
 src-test/org/openbravo/test/dal/ViewTest.java    |  52 ++++++++++++++++++++++++
 src/org/openbravo/base/model/Column.java         |   5 +-
 src/org/openbravo/base/model/ModelProvider.java  |  19 ++++----
 4 files changed, 65 insertions(+), 13 deletions(-)

diffs (149 lines):

diff -r d6f404defcf2 -r 508c1e4e6b7a 
src-test/org/openbravo/test/AllAntTaskTests.java
--- a/src-test/org/openbravo/test/AllAntTaskTests.java  Fri Sep 24 15:33:32 
2010 +0200
+++ b/src-test/org/openbravo/test/AllAntTaskTests.java  Sat Sep 25 11:27:17 
2010 +0200
@@ -40,6 +40,7 @@
 import org.openbravo.test.dal.OBContextTest;
 import org.openbravo.test.dal.ReadByNameTest;
 import org.openbravo.test.dal.ValidationTest;
+import org.openbravo.test.dal.ViewTest;
 import org.openbravo.test.expression.EvaluationTest;
 import org.openbravo.test.model.ClassLoaderTest;
 import org.openbravo.test.model.OneToManyTest;
@@ -98,6 +99,7 @@
     suite.addTestSuite(DalStoredProcedureTest.class);
     suite.addTestSuite(ReadByNameTest.class);
     suite.addTestSuite(AdminContextTest.class);
+    suite.addTestSuite(ViewTest.class);
 
     // expression
     suite.addTestSuite(EvaluationTest.class);
diff -r d6f404defcf2 -r 508c1e4e6b7a 
src-test/org/openbravo/test/dal/ViewTest.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src-test/org/openbravo/test/dal/ViewTest.java     Sat Sep 25 11:27:17 
2010 +0200
@@ -0,0 +1,52 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html 
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License. 
+ * The Original Code is Openbravo ERP. 
+ * The Initial Developer of the Original Code is Openbravo SLU 
+ * All portions are Copyright (C) 2010 Openbravo SLU 
+ * All Rights Reserved. 
+ * Contributor(s):  ______________________________________.
+ ************************************************************************
+ */
+
+package org.openbravo.test.dal;
+
+import org.openbravo.base.model.Entity;
+import org.openbravo.base.model.ModelProvider;
+import org.openbravo.base.structure.BaseOBObject;
+import org.openbravo.dal.service.OBDal;
+import org.openbravo.test.base.BaseTest;
+
+/**
+ * Test if views work properly
+ * 
+ * @author mtaal
+ */
+public class ViewTest extends BaseTest {
+
+  /**
+   * Iterates over all views
+   */
+  public void testViews() {
+    setBigBazaarAdminContext();
+    int cnt = 0;
+    for (Entity entity : ModelProvider.getInstance().getModel()) {
+      if (entity.isView()) {
+        for (BaseOBObject bob : 
OBDal.getInstance().createQuery(entity.getName(), "").list()) {
+          assertTrue(bob.getEntity() == entity);
+          cnt++;
+        }
+      }
+    }
+    assertTrue(cnt > 0);
+    System.err.println(cnt);
+  }
+}
\ No newline at end of file
diff -r d6f404defcf2 -r 508c1e4e6b7a src/org/openbravo/base/model/Column.java
--- a/src/org/openbravo/base/model/Column.java  Fri Sep 24 15:33:32 2010 +0200
+++ b/src/org/openbravo/base/model/Column.java  Sat Sep 25 11:27:17 2010 +0200
@@ -217,7 +217,6 @@
     return getDomainType() instanceof PrimitiveDomainType;
   }
 
-  @SuppressWarnings("unchecked")
   public Class<?> getPrimitiveType() {
     if (isPrimitiveType()) {
       return ((PrimitiveDomainType) getDomainType()).getPrimitiveType();
@@ -249,9 +248,7 @@
       // note calls isSuperActive(), if it would call isActive there is a 
danger
       // for infinite looping, see issue:
       // https://issues.openbravo.com/view.php?id=8632
-      if (thatColumn != null
-          && (!thatColumn.isSuperActive() || !thatColumn.getTable().isActive() 
|| thatColumn
-              .getTable().isView())) {
+      if (thatColumn != null && (!thatColumn.isSuperActive() || 
!thatColumn.getTable().isActive())) {
         log.error("Column " + this + " refers to a non active table or column 
or to a view"
             + thatColumn);
       }
diff -r d6f404defcf2 -r 508c1e4e6b7a 
src/org/openbravo/base/model/ModelProvider.java
--- a/src/org/openbravo/base/model/ModelProvider.java   Fri Sep 24 15:33:32 
2010 +0200
+++ b/src/org/openbravo/base/model/ModelProvider.java   Sat Sep 25 11:27:17 
2010 +0200
@@ -181,9 +181,6 @@
       // this map stores the mapped tables
       tablesByTableName = new HashMap<String, Table>();
       for (final Table t : tables) {
-        if (t.isView()) {
-          continue;
-        }
         // tables are stored case insensitive!
         tablesByTableName.put(t.getTableName().toLowerCase(), t);
       }
@@ -242,7 +239,8 @@
       for (final Entity e : model) {
         for (final Property p : e.getProperties()) {
           p.initializeName();
-          if (p.getColumnName() != null) {
+          // don't do mandatory value setting for views
+          if (!e.isView() && p.getColumnName() != null) {
             final Boolean mandatory = 
colMandatories.get(createColumnMandatoryKey(e.getTableName(),
                 p.getColumnName()));
             if (mandatory != null) {
@@ -385,9 +383,10 @@
           log.debug("Setting targetEntity and reference Property for " + 
thisProp);
           final Column thatColumn = c.getReferenceType();
           if (thatColumn == null) {
-            log.error("Property "
-                + thisProp
-                + " is mapped incorrectly, there is no reference column for 
it, removing from the mapping");
+            log
+                .error("Property "
+                    + thisProp
+                    + " is mapped incorrectly, there is no reference column 
for it, removing from the mapping");
             thisProp.getEntity().getProperties().remove(thisProp);
             if (thisProp.getEntity().getIdProperties().remove(thisProp)) {
               Check.fail("Incorrect mapping for property " + thisProp
@@ -429,9 +428,11 @@
       // }
 
       if (t.getPrimaryKeyColumns().size() == 0) {
+        // note, after this issue is solved:
+        // https://issues.openbravo.com/view.php?id=14696
+        // then also log.warn for views
         if (!t.isView()) {
-          // don't log the views, these are ignored anyway
-          log.warn("Ignoring table " + t.getName() + " because it has no 
primary key columns");
+          log.warn("Ignoring table/view " + t.getName() + " because it has no 
primary key columns");
         }
         toRemove.add(t);
         continue;

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to