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