details:   https://code.openbravo.com/erp/devel/pi/rev/c97041fdd8fe
changeset: 14751:c97041fdd8fe
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Mon Nov 28 15:32:42 2011 +0100
summary:   related to bug 19195: Better log when export trl query fails

details:   https://code.openbravo.com/erp/devel/pi/rev/dd72bcec5a07
changeset: 14752:dd72bcec5a07
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Mon Nov 28 15:34:16 2011 +0100
summary:   fxed bug 19195: Widget menu entries translations are not exported

  Changed OBKMO_WidgetClassMenu_Trl.AD_Language column refrence from String to
  Table. Being String caused it to be identified as a tranlation text instead of
  FK to language table.

details:   https://code.openbravo.com/erp/devel/pi/rev/323950c8eb31
changeset: 14753:323950c8eb31
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Mon Nov 28 16:34:20 2011 +0100
summary:   fixed bug 19156: Translation in Query Widget Columns is not 
exportable

  Adding an additional level when looking for ad_module_id column in *trl
  tables

diffstat:

 modules/org.openbravo.client.myob/src-db/database/sourcedata/AD_COLUMN.xml |   
3 +-
 src/org/openbravo/erpCommon/ad_forms/TranslationManager.java               |  
42 ++++++---
 src/org/openbravo/erpCommon/ad_forms/Translation_data.xsql                 |  
35 +++++++-
 3 files changed, 60 insertions(+), 20 deletions(-)

diffs (180 lines):

diff -r 5170deb9c581 -r 323950c8eb31 
modules/org.openbravo.client.myob/src-db/database/sourcedata/AD_COLUMN.xml
--- 
a/modules/org.openbravo.client.myob/src-db/database/sourcedata/AD_COLUMN.xml    
    Mon Nov 28 13:57:46 2011 +0100
+++ 
b/modules/org.openbravo.client.myob/src-db/database/sourcedata/AD_COLUMN.xml    
    Mon Nov 28 16:34:20 2011 +0100
@@ -254,7 +254,8 @@
 <!--4246D6A142A14DD0A9272C784D1EEBD0-->  <HELP><![CDATA[The Language 
identifies the language to use for display]]></HELP>
 <!--4246D6A142A14DD0A9272C784D1EEBD0-->  
<COLUMNNAME><![CDATA[AD_Language]]></COLUMNNAME>
 <!--4246D6A142A14DD0A9272C784D1EEBD0-->  
<AD_TABLE_ID><![CDATA[09C543CF4D854CB4A706E8EF1591F042]]></AD_TABLE_ID>
-<!--4246D6A142A14DD0A9272C784D1EEBD0-->  
<AD_REFERENCE_ID><![CDATA[10]]></AD_REFERENCE_ID>
+<!--4246D6A142A14DD0A9272C784D1EEBD0-->  
<AD_REFERENCE_ID><![CDATA[18]]></AD_REFERENCE_ID>
+<!--4246D6A142A14DD0A9272C784D1EEBD0-->  
<AD_REFERENCE_VALUE_ID><![CDATA[106]]></AD_REFERENCE_VALUE_ID>
 <!--4246D6A142A14DD0A9272C784D1EEBD0-->  
<FIELDLENGTH><![CDATA[6]]></FIELDLENGTH>
 <!--4246D6A142A14DD0A9272C784D1EEBD0-->  <ISKEY><![CDATA[N]]></ISKEY>
 <!--4246D6A142A14DD0A9272C784D1EEBD0-->  <ISPARENT><![CDATA[N]]></ISPARENT>
diff -r 5170deb9c581 -r 323950c8eb31 
src/org/openbravo/erpCommon/ad_forms/TranslationManager.java
--- a/src/org/openbravo/erpCommon/ad_forms/TranslationManager.java      Mon Nov 
28 13:57:46 2011 +0100
+++ b/src/org/openbravo/erpCommon/ad_forms/TranslationManager.java      Mon Nov 
28 16:34:20 2011 +0100
@@ -10,7 +10,7 @@
  * Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
  * created by ComPiere are Copyright (C) ComPiere, Inc.;   All Rights Reserved.
  * Contributor(s): Openbravo SLU
- * Contributions are Copyright (C) 2001-2010 Openbravo S.L.U.
+ * Contributions are Copyright (C) 2001-2011 Openbravo S.L.U.
  
******************************************************************************/
 package org.openbravo.erpCommon.ad_forms;
 
@@ -34,6 +34,7 @@
 
 import org.apache.commons.betwixt.io.BeanReader;
 import org.apache.commons.betwixt.io.BeanWriter;
+import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.openbravo.base.session.OBPropertiesProvider;
 import org.openbravo.database.ConnectionProvider;
@@ -369,6 +370,7 @@
       String rootDirectory, String moduleId, String moduleLanguage, String 
javaPackage, boolean trl) {
 
     Statement st = null;
+    StringBuffer sql = null;
     try {
       String trlTable = table;
       if (trl && !table.endsWith("_TRL"))
@@ -388,7 +390,7 @@
       }
 
       // Prepare query to retrieve translated rows
-      final StringBuffer sql = new StringBuffer("SELECT ");
+      sql = new StringBuffer("SELECT ");
       if (trl)
         sql.append("t.IsTranslated,");
       else
@@ -418,23 +420,35 @@
       sql.append(" AND o.AD_Client_ID='0' ");
 
       if (!exportReferenceData) {
-        String strParentTable = null;
         String tempTrlTableName = trlTable;
-        if (!tempTrlTableName.toLowerCase().endsWith("_trl"))
+        if (!tempTrlTableName.toLowerCase().endsWith("_trl")) {
           tempTrlTableName = tempTrlTableName + "_Trl";
+        }
         final TranslationData[] parentTable = TranslationData.parentTable(cp, 
tempTrlTableName);
-        if (parentTable.length > 0) {
-          strParentTable = parentTable[0].tablename;
-        }
-        if (strParentTable == null) {
+
+        if (parentTable.length == 0) {
           sql.append(" AND ").append(" 
o.ad_module_id='").append(moduleId).append("'");
         } else {
           /** Search for ad_module_id in the parent table */
-          sql.append(" AND ");
-          sql.append(" exists ( select 1 from 
").append(strParentTable).append(" p ");
-          sql.append("   where p.").append(strParentTable + "_ID").append("=")
-              .append("o." + strParentTable + "_ID");
-          sql.append("   and p.ad_module_id='").append(moduleId).append("')");
+          if (StringUtils.isEmpty(parentTable[0].grandparent)) {
+            String strParentTable = parentTable[0].tablename;
+            sql.append(" AND ");
+            sql.append(" exists ( select 1 from 
").append(strParentTable).append(" p ");
+            sql.append("   where p.").append(strParentTable + 
"_ID").append("=")
+                .append("o." + strParentTable + "_ID");
+            sql.append("   and 
p.ad_module_id='").append(moduleId).append("')");
+          } else {
+            String strParentTable = parentTable[0].tablename;
+            String strGandParentTable = parentTable[0].grandparent;
+
+            sql.append(" AND ");
+            sql.append(" exists ( select 1 from 
").append(strGandParentTable).append(" gp, ")
+                .append(strParentTable).append(" p");
+            sql.append("   where p.").append(strParentTable + 
"_ID").append("=")
+                .append("o." + strParentTable + "_ID");
+            sql.append("   and p." + strGandParentTable + "_ID = gp." + 
strGandParentTable + "_ID");
+            sql.append("   and 
gp.ad_module_id='").append(moduleId).append("')");
+          }
         }
       }
       if (exportReferenceData && !exportAll) {
@@ -563,7 +577,7 @@
       transformer.transform(source, new StreamResult(osw));
       osw.close();
     } catch (final Exception e) {
-      log4j.error("Error exporting translation for table " + table, e);
+      log4j.error("Error exporting translation for table " + table + "\n" + 
sql, e);
     } finally {
       try {
         if (st != null)
diff -r 5170deb9c581 -r 323950c8eb31 
src/org/openbravo/erpCommon/ad_forms/Translation_data.xsql
--- a/src/org/openbravo/erpCommon/ad_forms/Translation_data.xsql        Mon Nov 
28 13:57:46 2011 +0100
+++ b/src/org/openbravo/erpCommon/ad_forms/Translation_data.xsql        Mon Nov 
28 16:34:20 2011 +0100
@@ -12,7 +12,7 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2001-2010 Openbravo SLU 
+ * All portions are Copyright (C) 2001-2011 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -27,7 +27,7 @@
     <SqlMethodComment></SqlMethodComment>
     <Sql>
       select '1' AS C, '' AS AD_MODULE_ID, '' AS VALUE, '' AS TABLENAME,
-             '' AS ISINDEVELOPMENT, '' AS AD_Table_ID, '' as AD_Language
+             '' AS ISINDEVELOPMENT, '' AS AD_Table_ID, '' as AD_Language, '' 
AS grandParent
       from dual 
     </Sql>
   </SqlMethod>
@@ -119,24 +119,49 @@
               and lower(t2.tablename)||'_id' = lower(c.columnname)
               and lower(t1.tablename) || '_trl' = lower(t.tablename)
               and exists (select 1 from ad_column where ad_table_id = 
t2.ad_table_id and lower(columnname) = 'ad_module_id')
+           union
+           select 1
+              from ad_table t1, ad_column c, ad_table t2, ad_column c2, 
ad_table t3, ad_column c3
+            where t2.ad_table_id = c2.ad_table_id
+              and t1.ad_table_id = c.ad_table_id
+              and c.isparent='Y'
+              and c2.isparent='Y'
+              and lower(t3.tablename)||'_id' = lower(c2.columnname)
+              and lower(t2.tablename)||'_id' = lower(c.columnname)
+              and lower(t1.tablename) || '_trl' = lower(t.tablename)
+              and exists (select 1 from ad_column where ad_table_id = 
t3.ad_table_id and lower(columnname) = 'ad_module_id')
+              and not exists (select 1 from ad_column where ad_table_id = 
t2.ad_table_id and lower(columnname) = 'ad_module_id')
            )
       </Sql>
   </SqlMethod> 
   
   <SqlMethod name="parentTable" type="preparedStatement" return="multiple">    
 
       <Sql>
-      select distinct t2.tablename as tablename
-       from ad_table t, ad_table t1, ad_column c, ad_table t2, ad_column c2
+      select t2.tablename as tablename, null as grandParent
+       from ad_table t, ad_table t1, ad_column c, ad_table t2
       where t1.ad_table_id = c.ad_table_id
         and c.isparent='Y'
         and lower(t2.tablename)||'_id' = lower(c.columnname)
         and lower(t1.tablename) || '_trl' = lower(t.tablename)
         and exists (select 1 from ad_column where ad_table_id = t2.ad_table_id 
and lower(columnname) = 'ad_module_id')
-        and lower(t.tablename) like '%trl'
         and not exists (select 1 from ad_column where ad_table_id = 
t1.ad_table_id and lower(columnname) = 'ad_module_id')
         and lower(t.tablename) = lower(?)
+      union
+      select t2.tablename, t3.tablename
+        from ad_table t, ad_table t1, ad_column c, ad_table t2, ad_column c2, 
ad_table t3
+       where t2.ad_table_id = c2.ad_table_id
+         and t1.ad_table_id = c.ad_table_id
+         and c.isparent='Y'
+         and c2.isparent='Y'
+         and lower(t3.tablename)||'_id' = lower(c2.columnname)
+         and lower(t2.tablename)||'_id' = lower(c.columnname)
+         and lower(t1.tablename) || '_trl' = lower(t.tablename)
+         and exists (select 1 from ad_column where ad_table_id = 
t3.ad_table_id and lower(columnname) = 'ad_module_id')
+         and not exists (select 1 from ad_column where ad_table_id = 
t2.ad_table_id and lower(columnname) = 'ad_module_id')
+         and lower(t.tablename) = lower(?)
       </Sql>
       <Parameter name="tablename"/>
+      <Parameter name="tablename"/>
   </SqlMethod> 
   
   <SqlMethod name="referenceDataTrl" type="preparedStatement" 
return="multiple">     

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to