details:   /erp/devel/pi/rev/8e35320dbb77
changeset: 8552:8e35320dbb77
user:      David Alsasua <david.alsasua <at> openbravo.com>
date:      Sat Oct 16 01:23:05 2010 +0200
summary:   Fixes DB inconsistency introduced in change set 16290ade5194

details:   /erp/devel/pi/rev/3ee69e7732d7
changeset: 8553:3ee69e7732d7
user:      David Alsasua <david.alsasua <at> openbravo.com>
date:      Sat Oct 16 01:23:53 2010 +0200
summary:   Merge

diffstat:

 src-db/database/model/triggers/C_ACTIVITY_TRG.xml            |   3 +-
 src-db/database/model/triggers/C_INVOICE_TRG2.xml            |  22 ++++---
 src-db/database/sourcedata/AD_AUXILIARINPUT.xml              |   2 +-
 src-db/database/sourcedata/AD_FIELD.xml                      |   4 +-
 src-test/org/openbravo/test/AllWebserviceTests.java          |   1 -
 src-test/org/openbravo/test/dal/DalTest.java                 |   7 ++
 src-test/org/openbravo/test/webservice/WSUpdateTest.java     |  20 ++++++-
 src/org/openbravo/base/model/Column.java                     |   1 -
 src/org/openbravo/dal/core/DalUtil.java                      |  20 +++++++
 src/org/openbravo/dal/service/OBQuery.java                   |  22 +++++++
 src/org/openbravo/erpCommon/ad_forms/TranslationHandler.java |  18 ++++-
 src/org/openbravo/service/rest/DalWebService.java            |  34 ++++++++++++
 12 files changed, 133 insertions(+), 21 deletions(-)

diffs (truncated from 310 to 300 lines):

diff -r 16290ade5194 -r 3ee69e7732d7 
src-db/database/model/triggers/C_ACTIVITY_TRG.xml
--- a/src-db/database/model/triggers/C_ACTIVITY_TRG.xml Fri Oct 15 11:59:42 
2010 +0530
+++ b/src-db/database/model/triggers/C_ACTIVITY_TRG.xml Sat Oct 16 01:23:53 
2010 +0200
@@ -1,7 +1,8 @@
 <?xml version="1.0"?>
   <database name="TRIGGER C_ACTIVITY_TRG">
     <trigger name="C_ACTIVITY_TRG" table="C_ACTIVITY" fires="before" 
insert="true" update="true" delete="false" foreach="row">
-      
<body><![CDATA[/*************************************************************************
+      <body><![CDATA[
+/*************************************************************************
 * 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
diff -r 16290ade5194 -r 3ee69e7732d7 
src-db/database/model/triggers/C_INVOICE_TRG2.xml
--- a/src-db/database/model/triggers/C_INVOICE_TRG2.xml Fri Oct 15 11:59:42 
2010 +0530
+++ b/src-db/database/model/triggers/C_INVOICE_TRG2.xml Sat Oct 16 01:23:53 
2010 +0200
@@ -34,16 +34,18 @@
 
   FOR Cur_Discounts IN
     (
-    SELECT C_DISCOUNT_ID,
-      LINE,
-      CASCADE
-    FROM C_BPARTNER_DISCOUNT
-    WHERE C_BPARTNER_ID=:NEW.C_BPARTNER_ID
-      AND ISACTIVE='Y'
-      AND(ISCUSTOMER=:NEW.ISSOTRX
-      OR ISVENDOR <> :NEW.ISSOTRX)
-      AND APPLYINORDER='N'
-    ORDER BY LINE
+    SELECT BPD.C_DISCOUNT_ID,
+      BPD.LINE,
+      BPD.CASCADE
+    FROM C_BPARTNER_DISCOUNT BPD, C_DISCOUNT D
+    WHERE BPD.C_BPARTNER_ID=:NEW.C_BPARTNER_ID
+      AND D.C_DISCOUNT_ID = BPD.C_DISCOUNT_ID
+      AND BPD.ISACTIVE='Y'
+      AND D.ISACTIVE='Y'
+      AND(BPD.ISCUSTOMER=:NEW.ISSOTRX
+      OR BPD.ISVENDOR <> :NEW.ISSOTRX)
+      AND BPD.APPLYINORDER='N'
+    ORDER BY BPD.LINE
     )
   LOOP
     Ad_Sequence_Next('C_Invoice_Discount', :NEW.AD_Client_ID, v_Key) ;
diff -r 16290ade5194 -r 3ee69e7732d7 
src-db/database/sourcedata/AD_AUXILIARINPUT.xml
--- a/src-db/database/sourcedata/AD_AUXILIARINPUT.xml   Fri Oct 15 11:59:42 
2010 +0530
+++ b/src-db/database/sourcedata/AD_AUXILIARINPUT.xml   Sat Oct 16 01:23:53 
2010 +0200
@@ -1163,7 +1163,7 @@
 <!--52AAC076AFF84DB58F19D32FBCE8F678-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--52AAC076AFF84DB58F19D32FBCE8F678-->  
<AD_TAB_ID><![CDATA[8391062D5C6A47EA94A83A304AD720BE]]></AD_TAB_ID>
 <!--52AAC076AFF84DB58F19D32FBCE8F678-->  <NAME><![CDATA[isBank]]></NAME>
-<!--52AAC076AFF84DB58F19D32FBCE8F678-->  <CODE><![cda...@sql=select CASE WHEN 
TYPE='B' THE 'Y' ELSE 'N' END FROM FIN_FINANCIAL_ACCOUNT WHERE 
FIN_FINANCIAL_ACCOUNT_ID = @FIN_FINANCIAL_ACCOUNT_ID@
+<!--52AAC076AFF84DB58F19D32FBCE8F678-->  <CODE><![cda...@sql=select CASE WHEN 
TYPE='B' THEN 'Y' ELSE 'N' END FROM FIN_FINANCIAL_ACCOUNT WHERE 
FIN_FINANCIAL_ACCOUNT_ID = @FIN_FINANCIAL_ACCOUNT_ID@
 ]]></CODE>
 <!--52AAC076AFF84DB58F19D32FBCE8F678-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--52AAC076AFF84DB58F19D32FBCE8F678--></AD_AUXILIARINPUT>
diff -r 16290ade5194 -r 3ee69e7732d7 src-db/database/sourcedata/AD_FIELD.xml
--- a/src-db/database/sourcedata/AD_FIELD.xml   Fri Oct 15 11:59:42 2010 +0530
+++ b/src-db/database/sourcedata/AD_FIELD.xml   Sat Oct 16 01:23:53 2010 +0200
@@ -199258,8 +199258,8 @@
 <!--82F2E8A160E7472CE040007F01005324-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--82F2E8A160E7472CE040007F01005324-->  <NAME><![CDATA[Location / 
Address]]></NAME>
 <!--82F2E8A160E7472CE040007F01005324-->  <DESCRIPTION><![CDATA[A specific 
place or residence.]]></DESCRIPTION>
-<!--82F2E8A160E7472CE040007F01005324-->  <HELP><![CDATA[The Location / Address 
field defines the location of an entity.]]></HELP>
-<!--82F2E8A160E7472CE040007F01005324-->  
<ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--82F2E8A160E7472CE040007F01005324-->  <HELP><![CDATA[Address/Location of 
the the Financial Account within the Enterprise.]]></HELP>
+<!--82F2E8A160E7472CE040007F01005324-->  
<ISCENTRALLYMAINTAINED><![CDATA[N]]></ISCENTRALLYMAINTAINED>
 <!--82F2E8A160E7472CE040007F01005324-->  
<AD_TAB_ID><![CDATA[2845D761A8394468BD3BA4710AA888D4]]></AD_TAB_ID>
 <!--82F2E8A160E7472CE040007F01005324-->  
<AD_COLUMN_ID><![CDATA[828EE0AE80485FA1E040007F010067C7]]></AD_COLUMN_ID>
 <!--82F2E8A160E7472CE040007F01005324-->  
<ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
diff -r 16290ade5194 -r 3ee69e7732d7 
src-test/org/openbravo/test/AllWebserviceTests.java
--- a/src-test/org/openbravo/test/AllWebserviceTests.java       Fri Oct 15 
11:59:42 2010 +0530
+++ b/src-test/org/openbravo/test/AllWebserviceTests.java       Sat Oct 16 
01:23:53 2010 +0200
@@ -22,7 +22,6 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.openbravo.test.webservice.BaseWSTest;
 import org.openbravo.test.webservice.PerformanceTest;
 import org.openbravo.test.webservice.WSReadTest;
 import org.openbravo.test.webservice.WSUpdateTest;
diff -r 16290ade5194 -r 3ee69e7732d7 
src-test/org/openbravo/test/dal/DalTest.java
--- a/src-test/org/openbravo/test/dal/DalTest.java      Fri Oct 15 11:59:42 
2010 +0530
+++ b/src-test/org/openbravo/test/dal/DalTest.java      Sat Oct 16 01:23:53 
2010 +0200
@@ -24,8 +24,10 @@
 import org.apache.log4j.Logger;
 import org.hibernate.criterion.Expression;
 import org.openbravo.base.exception.OBSecurityException;
+import org.openbravo.base.model.Property;
 import org.openbravo.base.provider.OBProvider;
 import org.openbravo.base.structure.BaseOBObject;
+import org.openbravo.dal.core.DalUtil;
 import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.core.SessionHandler;
 import org.openbravo.dal.service.OBCriteria;
@@ -356,4 +358,9 @@
     }
     OBDal.getInstance().remove(OBDal.getInstance().get(CashBook.class, 
cashBookId));
   }
+
+  public void testGetPropertyFromColumnName() {
+    final Property property = DalUtil.getProperty("AD_COLUMN", "AD_COLUMN_ID");
+    assertNotNull(property);
+  }
 }
\ No newline at end of file
diff -r 16290ade5194 -r 3ee69e7732d7 
src-test/org/openbravo/test/webservice/WSUpdateTest.java
--- a/src-test/org/openbravo/test/webservice/WSUpdateTest.java  Fri Oct 15 
11:59:42 2010 +0530
+++ b/src-test/org/openbravo/test/webservice/WSUpdateTest.java  Sat Oct 16 
01:23:53 2010 +0200
@@ -117,6 +117,20 @@
    * @throws Exception
    */
   public void testReadAddDeleteCity() throws Exception {
+    if (cityId == null) {
+      testACreateCity();
+    }
+    doTestReadAddDeleteCity(false);
+  }
+
+  public void testReadAddDeleteQueryCity() throws Exception {
+    if (cityId == null) {
+      testACreateCity();
+    }
+    doTestReadAddDeleteCity(true);
+  }
+
+  private void doTestReadAddDeleteCity(boolean doDeleteQuery) throws Exception 
{
     final String city = doTestGetRequest("/ws/dal/City/" + cityId, null, 200);
     String newCity = city.replaceAll("</name>", (System.currentTimeMillis() + 
"").substring(6)
         + "</name>");
@@ -165,7 +179,11 @@
     assertTrue(indexCity2 != -1);
 
     // delete it
-    doDirectDeleteRequest("/ws/dal/City/" + id, 200);
+    if (doDeleteQuery) {
+      doDirectDeleteRequest("/ws/dal/City?where=name='" + newName + "'", 200);
+    } else {
+      doDirectDeleteRequest("/ws/dal/City/" + id, 200);
+    }
 
     // sleep 1 seconds, so that the city is deleted
     Thread.sleep(1000);
diff -r 16290ade5194 -r 3ee69e7732d7 src/org/openbravo/base/model/Column.java
--- a/src/org/openbravo/base/model/Column.java  Fri Oct 15 11:59:42 2010 +0530
+++ b/src/org/openbravo/base/model/Column.java  Sat Oct 16 01:23:53 2010 +0200
@@ -284,7 +284,6 @@
       if (!OBPropertiesProvider.isFriendlyWarnings()) {
         log.error("No referenced column found: error >> tableName: " + 
table.getTableName()
             + " - columnName: " + getColumnName(), e);
-        e.printStackTrace();
       }
     }
   }
diff -r 16290ade5194 -r 3ee69e7732d7 src/org/openbravo/dal/core/DalUtil.java
--- a/src/org/openbravo/dal/core/DalUtil.java   Fri Oct 15 11:59:42 2010 +0530
+++ b/src/org/openbravo/dal/core/DalUtil.java   Sat Oct 16 01:23:53 2010 +0200
@@ -31,6 +31,7 @@
 import org.hibernate.proxy.HibernateProxy;
 import org.openbravo.base.exception.OBException;
 import org.openbravo.base.model.Entity;
+import org.openbravo.base.model.ModelProvider;
 import org.openbravo.base.model.Property;
 import org.openbravo.base.provider.OBProvider;
 import org.openbravo.base.structure.BaseOBObject;
@@ -106,6 +107,25 @@
   }
 
   /**
+   * Finds a property using the db column name and table name.
+   * 
+   * @param tableName
+   *          the table name, is used to find the {...@link Entity}
+   * @param dbColumnName
+   *          is used to find the {...@link Property}
+   * @return a Property or null if no property found
+   */
+  public static Property getProperty(String tableName, String dbColumnName) {
+    final Entity entity = 
ModelProvider.getInstance().getEntityByTableName(tableName);
+    for (Property property : entity.getProperties()) {
+      if (property.getColumnName().equalsIgnoreCase(dbColumnName)) {
+        return property;
+      }
+    }
+    return null;
+  }
+
+  /**
    * Translates a so-called property path to a property. The passed entity is 
the starting entity.
    * For example the property: organization.name and entity: Product will 
result in the
    * Organization.name property to be returned.
diff -r 16290ade5194 -r 3ee69e7732d7 src/org/openbravo/dal/service/OBQuery.java
--- a/src/org/openbravo/dal/service/OBQuery.java        Fri Oct 15 11:59:42 
2010 +0530
+++ b/src/org/openbravo/dal/service/OBQuery.java        Sat Oct 16 01:23:53 
2010 +0200
@@ -158,6 +158,28 @@
     return qryStr;
   }
 
+  public Query deleteQuery() {
+    final String qryStr = createQueryString();
+    String whereClause;
+    final int whereIndex = qryStr.toLowerCase().indexOf(WHERE);
+
+    if (whereIndex != -1) {
+      whereClause = qryStr.substring(whereIndex);
+    } else {
+      throw new OBException("Exception when creating delete query " + qryStr);
+    }
+
+    try {
+      final Query qry = getSession().createQuery(
+          "DELETE FROM " + getEntity().getName() + " " + whereClause);
+      setParameters(qry);
+      return qry;
+    } catch (final Exception e) {
+      throw new OBException("Exception when creating delete query " + "DELETE 
FROM "
+          + getEntity().getName() + " " + whereClause, e);
+    }
+  }
+
   /**
    * Creates a Hibernate Query object using the whereclause and extra filters 
(for readable
    * organizations etc.).
diff -r 16290ade5194 -r 3ee69e7732d7 
src/org/openbravo/erpCommon/ad_forms/TranslationHandler.java
--- a/src/org/openbravo/erpCommon/ad_forms/TranslationHandler.java      Fri Oct 
15 11:59:42 2010 +0530
+++ b/src/org/openbravo/erpCommon/ad_forms/TranslationHandler.java      Sat Oct 
16 01:23:53 2010 +0200
@@ -62,6 +62,8 @@
   private String m_curColumnName = null;
   /** Current Value */
   private StringBuffer m_curValue = null;
+  /** Original Value */
+  private String m_oriValue = null;
   /** SQL */
   private StringBuffer m_sql = null;
 
@@ -104,7 +106,7 @@
       m_sql = new StringBuffer();
     } else if (qName.equals(TranslationManager.XML_VALUE_TAG)) {
       m_curColumnName = 
attributes.getValue(TranslationManager.XML_VALUE_ATTRIBUTE_COLUMN);
-
+      m_oriValue = 
attributes.getValue(TranslationManager.XML_VALUE_ATTRIBUTE_ORIGINAL);
     } else if (qName.equals(TranslationManager.XML_CONTRIB)) {
       m_AD_Language = 
attributes.getValue(TranslationManager.XML_ATTRIBUTE_LANGUAGE);
     } else
@@ -185,9 +187,17 @@
       else
         log4j.error("Update Rows=" + no + " (Should be 1) - " + 
m_sql.toString());
     } else if (qName.equals(TranslationManager.XML_VALUE_TAG)) {
-      if (m_sql.length() > 0)
-        m_sql.append(",");
-      
m_sql.append(m_curColumnName).append("=").append(TO_STRING(m_curValue.toString()));
+      String value = "";
+      if (m_curValue != null && !m_curValue.toString().equals("")) {
+        value = TO_STRING(m_curValue.toString());
+      } else if (m_oriValue != null && !m_oriValue.toString().equals("")) {
+        value = TO_STRING(m_oriValue.toString());
+      }
+      if (!value.equals("")) {
+        if (m_sql.length() > 0)
+          m_sql.append(",");
+        m_sql.append(m_curColumnName).append("=").append(value);
+      }
     } else if (qName.equals(TranslationManager.XML_CONTRIB)) {
       if (log4j.isDebugEnabled())
         log4j.debug("Contibutors:" + TO_STRING(m_curValue.toString()));
diff -r 16290ade5194 -r 3ee69e7732d7 
src/org/openbravo/service/rest/DalWebService.java
--- a/src/org/openbravo/service/rest/DalWebService.java Fri Oct 15 11:59:42 
2010 +0530
+++ b/src/org/openbravo/service/rest/DalWebService.java Sat Oct 16 01:23:53 
2010 +0200
@@ -290,6 +290,40 @@
       return;
     }
 
+    if (segments.length == 1) {
+      final String entityName = segments[0];
+
+      try {
+        ModelProvider.getInstance().getEntity(entityName);
+      } catch (final CheckException ce) {
+        throw new ResourceNotFoundException("Resource " + entityName + " not 
found", ce);
+      }
+
+      final String where = request.getParameter(PARAMETER_WHERE);
+      String whereOrderByClause = "";
+      if (where != null) {
+        whereOrderByClause += where;
+      }
+
+      try {
+        final OBQuery<BaseOBObject> obq = 
OBDal.getInstance().createQuery(entityName,
+            whereOrderByClause);
+
+        Object o = obq.deleteQuery().executeUpdate();
+
+        final String resultXml = 
WebServiceUtil.getInstance().createResultXMLWithLogWarning(
+            "Action performed successfully", "Removed business objects " + o, 
null);
+        response.setContentType("text/xml;charset=UTF-8");
+        final Writer w = response.getWriter();
+        w.write(resultXml);
+        w.close();

------------------------------------------------------------------------------
Download new Adobe(R) Flash(R) Builder(TM) 4
The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly 
Flex(R) Builder(TM)) enable the development of rich applications that run
across multiple browsers and platforms. Download your free trials today!
http://p.sf.net/sfu/adobe-dev2dev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to