From d3107ced161b9ce7aa2dc0ad72b99c8237061b8c Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 7 Apr 2015 20:25:35 -0500 Subject: [PATCH 01/13] IDEMPIERE-2566 Print Format labels wrong after opening Report Wizard --- .../WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java index 5a91698147..9bd50ab6dc 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java @@ -1172,9 +1172,6 @@ public class ZkReportViewer extends Window implements EventListener, ITab /*IDEMPIERE -379*/ private void cmd_Wizard() { - int AD_PrintFormat_ID = m_reportEngine.getPrintFormat().get_ID(); - - Env.setContext(m_ctx, "AD_PrintFormat_ID", AD_PrintFormat_ID); ADForm form = ADForm.openForm(SystemIDs.FORM_REPORT_WIZARD); WReportCustomization av = (WReportCustomization) form.getICustomForm(); av.setReportEngine(m_reportEngine); From 1cac3f646ffa5aad02d86b872d5fd6df97259f0f Mon Sep 17 00:00:00 2001 From: hieplq Date: Sat, 4 Apr 2015 13:37:51 +0700 Subject: [PATCH 02/13] IDEMPIERE-2544:to more warning compiler hidden good warning leak resource --- .../compiere/process/ReplicationLocal.java | 3 +- .../impexp/OFXFileBankStatementLoader.java | 8 +++ .../src/org/compiere/print/ReportEngine.java | 2 + .../compiere/process/FactReconciliation.java | 42 +++++++-------- .../src/org/compiere/tools/Strip.java | 53 ++++++++----------- .../src/org/adempiere/pipo2/PackIn.java | 29 +++++----- .../webui/panel/action/CSVImportAction.java | 21 ++++++-- 7 files changed, 86 insertions(+), 72 deletions(-) diff --git a/org.adempiere.base.process/src/org/compiere/process/ReplicationLocal.java b/org.adempiere.base.process/src/org/compiere/process/ReplicationLocal.java index eadb2aff64..7e76fa705e 100644 --- a/org.adempiere.base.process/src/org/compiere/process/ReplicationLocal.java +++ b/org.adempiere.base.process/src/org/compiere/process/ReplicationLocal.java @@ -353,8 +353,9 @@ public class ReplicationLocal extends SvrProcess // no keys - search for parents if (list.size() == 0) { - DB.close(rs); + DB.close(rs, pstmt); rs = null; + pstmt = null; sql = "SELECT ColumnName FROM AD_Column " + "WHERE AD_Table_ID=?" + " AND IsParent='Y'"; diff --git a/org.adempiere.base/src/org/compiere/impexp/OFXFileBankStatementLoader.java b/org.adempiere.base/src/org/compiere/impexp/OFXFileBankStatementLoader.java index bc444d6d98..7f2b1aedf4 100644 --- a/org.adempiere.base/src/org/compiere/impexp/OFXFileBankStatementLoader.java +++ b/org.adempiere.base/src/org/compiere/impexp/OFXFileBankStatementLoader.java @@ -17,6 +17,7 @@ package org.compiere.impexp; import java.io.FileInputStream; +import java.io.IOException; import org.compiere.model.MBankStatementLoader; import org.xml.sax.SAXException; @@ -71,6 +72,13 @@ public final class OFXFileBankStatementLoader extends OFXBankStatementHandler im { m_errorMessage = new StringBuffer("ErrorReadingData"); m_errorDescription = new StringBuffer(); + }finally{ + if (m_stream != null) + try { + m_stream.close(); + } catch (IOException e) { + e.printStackTrace(); + } } return result; diff --git a/org.adempiere.base/src/org/compiere/print/ReportEngine.java b/org.adempiere.base/src/org/compiere/print/ReportEngine.java index 4599ebeaf7..6dd25c27be 100644 --- a/org.adempiere.base/src/org/compiere/print/ReportEngine.java +++ b/org.adempiere.base/src/org/compiere/print/ReportEngine.java @@ -1625,6 +1625,8 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) .append("FROM C_DocType dt, C_Order o ") .append("WHERE o.C_DocTypeTarget_ID=dt.C_DocType_ID") .append(" AND o.C_Order_ID=?"); + DB.close(rs, pstmt); + rs = null; pstmt = null; pstmt = DB.prepareStatement(sql.toString(), null); pstmt.setInt(1, C_Order_ID); rs = pstmt.executeQuery(); diff --git a/org.adempiere.base/src/org/compiere/process/FactReconciliation.java b/org.adempiere.base/src/org/compiere/process/FactReconciliation.java index f465ec7013..9e28d559c6 100644 --- a/org.adempiere.base/src/org/compiere/process/FactReconciliation.java +++ b/org.adempiere.base/src/org/compiere/process/FactReconciliation.java @@ -2,7 +2,6 @@ package org.compiere.process; import java.math.BigDecimal; import java.sql.PreparedStatement; -import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.util.logging.Level; @@ -51,9 +50,7 @@ public class FactReconciliation extends SvrProcess */ protected String doIt() { - PreparedStatement pstmt = null; - ResultSet rs = null; String sql = "INSERT into T_Reconciliation " + "(AD_Client_ID, AD_Org_ID, Created, CreatedBy, Updated, UpdatedBy, " + @@ -69,8 +66,6 @@ public class FactReconciliation extends SvrProcess try { - - pstmt = DB.prepareStatement(sql, get_TrxName()); pstmt.setInt(1, getAD_PInstance_ID()); pstmt.setInt(2, p_Account_ID); @@ -88,25 +83,26 @@ public class FactReconciliation extends SvrProcess " AND r.AD_PInstance_ID = t.AD_PInstance_ID) = 0 " + "AND t.AD_PInstance_ID = ?"; - pstmt = DB.prepareStatement(sql, get_TrxName()); - pstmt.setInt(1, getAD_PInstance_ID()); - count = pstmt.executeUpdate(); - result = Msg.getMsg(getCtx(), "@Deleted@") + ": " + count; + DB.close(pstmt); + pstmt = null; + pstmt = DB.prepareStatement(sql, get_TrxName()); + pstmt.setInt(1, getAD_PInstance_ID()); + count = pstmt.executeUpdate(); + result = Msg.getMsg(getCtx(), "@Deleted@") + ": " + count; + + if (log.isLoggable(Level.FINE))log.log(Level.FINE, result); - if (log.isLoggable(Level.FINE))log.log(Level.FINE, result); - - - } - catch (SQLException e) - { - log.log(Level.SEVERE, sql, e); - return e.getLocalizedMessage(); - } - finally - { - DB.close(rs, pstmt); - rs = null; pstmt = null; - } + } + catch (SQLException e) + { + log.log(Level.SEVERE, sql, e); + return e.getLocalizedMessage(); + } + finally + { + DB.close(pstmt); + pstmt = null; + } if (log.isLoggable(Level.FINE)) log.fine((System.currentTimeMillis() - m_start) + " ms"); return ""; diff --git a/org.adempiere.base/src/org/compiere/tools/Strip.java b/org.adempiere.base/src/org/compiere/tools/Strip.java index e15dcdb932..8449b2abca 100644 --- a/org.adempiere.base/src/org/compiere/tools/Strip.java +++ b/org.adempiere.base/src/org/compiere/tools/Strip.java @@ -18,7 +18,6 @@ package org.compiere.tools; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; @@ -165,32 +164,15 @@ public class Strip private boolean copy (File infile, File outfile) { FileInputStream fis = null; - try - { - fis = new FileInputStream(infile); - } - catch (FileNotFoundException fnfe) - { - System.err.println(fnfe); - return false; - } - // FileOutputStream fos = null; - try - { - fos = new FileOutputStream(outfile, false); // no append - } - catch (FileNotFoundException fnfe) - { - System.err.println(fnfe); - return false; - } - - int noIn = 0; - int noOut = 0; - int noLines = 1; - try - { + try{ + fis = new FileInputStream(infile); + fos = new FileOutputStream(outfile, false); // no append + + int noIn = 0; + int noOut = 0; + int noLines = 1; + int c; while ((c = fis.read()) != -1) { @@ -203,15 +185,24 @@ public class Strip if (c == 13) // cr noLines++; } - fis.close(); - fos.close(); - } - catch (IOException ioe) + System.out.println(" read: " + noIn + ", written: " + noOut + " - lines: " + noLines); + }catch (IOException ioe) { System.err.println(ioe); return false; + }finally{ + if (fos != null) + try { + fos.close(); + } catch (IOException e) { + } + if (fis != null) + try { + fis.close(); + } catch (IOException e) { + } + } - System.out.println(" read: " + noIn + ", written: " + noOut + " - lines: " + noLines); return true; } // stripIt diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java index 0a1b1f7bc2..d19c0a5542 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java @@ -233,20 +233,25 @@ public class PackIn { ZipFile zf = new ZipFile(m_packageDirectory+File.separator+"blobs"+File.separator+fileName); Enumeration e = zf.entries(); ArrayList files = new ArrayList(); - while (e.hasMoreElements()) { - ZipEntry ze = (ZipEntry) e.nextElement(); - File file = new File(m_packageDirectory + File.separator + ze.getName()); - FileOutputStream fout = new FileOutputStream(file); - InputStream in = zf.getInputStream(ze); - for (int c = in.read(); c != -1; c = in.read()) { - fout.write(c); + File[] retValue = null; + try{ + while (e.hasMoreElements()) { + ZipEntry ze = (ZipEntry) e.nextElement(); + File file = new File(m_packageDirectory + File.separator + ze.getName()); + FileOutputStream fout = new FileOutputStream(file); + InputStream in = zf.getInputStream(ze); + for (int c = in.read(); c != -1; c = in.read()) { + fout.write(c); + } + in.close(); + fout.close(); + files.add(file); } - in.close(); - fout.close(); - files.add(file); + retValue = new File[files.size()]; + files.toArray(retValue); + }catch (Exception ex){ + zf.close(); } - File[] retValue = new File[files.size()]; - files.toArray(retValue); return retValue; } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/action/CSVImportAction.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/action/CSVImportAction.java index 952e7b812f..42ec95ff9b 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/action/CSVImportAction.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/action/CSVImportAction.java @@ -378,12 +378,23 @@ public class CSVImportAction implements EventListener } catch (IOException e) { throw new AdempiereException(e); } finally { - try { - reader.close(); - in.close(); - if (bw != null) + if (in != null) + try { + in.close(); + } catch (IOException e) { + } + + if (bw != null) + try { bw.close(); - } catch (IOException e) {} + } catch (IOException e) { + } + + if (reader != null) + try { + reader.close(); + } catch (IOException e) { + } } return is; } From 8ff9b52d2c070a726c4c0e1500d2efbd5aa7c149 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 7 Apr 2015 21:06:24 -0500 Subject: [PATCH 03/13] IDEMPIERE-2447 Migration script from packin adding unnecessary updates / fix issue -> Unknown column reference type=null --- .../src/org/adempiere/pipo2/PoFiller.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PoFiller.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PoFiller.java index 1f7136d27a..60fcb6ff04 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PoFiller.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PoFiller.java @@ -204,11 +204,13 @@ public class PoFiller{ { Element orgElement = element.properties.get("AD_Org_ID"); String sAD_Org_ID = orgElement != null ? orgElement.contents.toString() : null; - if (sAD_Org_ID != null && sAD_Org_ID.equals("0") && po.getAD_Org_ID() != 0) - po.setAD_Org_ID(0); - else if (sAD_Org_ID != null && sAD_Org_ID.equals("@AD_Org_ID@")) + if (sAD_Org_ID != null && sAD_Org_ID.equals("0")) { + if (po.getAD_Org_ID() != 0) { + po.setAD_Org_ID(0); + } + } else if (sAD_Org_ID != null && sAD_Org_ID.equals("@AD_Org_ID@")) { po.setAD_Org_ID(Env.getAD_Org_ID(ctx.ctx)); - else { + } else { if (setTableReference("AD_Client_ID") >= 0) setTableReference("AD_Org_ID"); } From f1f732d7ae7e6bc5db222106c94e84e232bcdb50 Mon Sep 17 00:00:00 2001 From: tsvikruha Date: Tue, 7 Apr 2015 21:19:48 -0500 Subject: [PATCH 04/13] IDEMPIERE-2238 Printformat header not translated (report) --- .../src/org/compiere/print/layout/LayoutEngine.java | 2 +- .../WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java b/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java index 300bfb287e..0008f0985a 100644 --- a/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java +++ b/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java @@ -265,7 +265,7 @@ public class LayoutEngine implements Pageable, Printable, Doc m_printFont = MPrintFont.get (format.getAD_PrintFont_ID()); // Print Context - Env.setContext(m_printCtx, Page.CONTEXT_REPORTNAME, m_format.getName()); + Env.setContext(m_printCtx, Page.CONTEXT_REPORTNAME, m_format.get_Translation(MPrintFormat.COLUMNNAME_Name)); Env.setContext(m_printCtx, Page.CONTEXT_HEADER, Env.getHeader(m_printCtx, 0)); Env.setContext(m_printCtx, Env.LANGUAGE, m_format.getLanguage().getAD_Language()); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java index 9bd50ab6dc..95b1b339ec 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java @@ -213,7 +213,8 @@ public class ZkReportViewer extends Window implements EventListener, ITab } m_isCanExport = MRole.getDefault().isCanExport(m_AD_Table_ID); - setTitle(Util.cleanAmp(Msg.getMsg(Env.getCtx(), "Report") + ": " + m_reportEngine.getName())); + setTitle(Util.cleanAmp(Msg.getMsg(Env.getCtx(), "Report") + ": " + + m_reportEngine.getPrintFormat().get_Translation(MPrintFormat.COLUMNNAME_Name))); addEventListener(ON_RENDER_REPORT_EVENT, this); } From da2fd9fffb6d1670191ef36ba68879633f84a9d4 Mon Sep 17 00:00:00 2001 From: hieplq Date: Wed, 8 Apr 2015 02:11:46 +0700 Subject: [PATCH 05/13] IDEMPIERE-2565:NPE when run init client without input city of country has "Allow Cities out of List" = false --- org.adempiere.base/src/org/compiere/model/MLocation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/model/MLocation.java b/org.adempiere.base/src/org/compiere/model/MLocation.java index 4590abdf22..fdfba19127 100644 --- a/org.adempiere.base/src/org/compiere/model/MLocation.java +++ b/org.adempiere.base/src/org/compiere/model/MLocation.java @@ -439,7 +439,7 @@ public class MLocation extends X_C_Location implements Comparator public boolean isAddressLinesReverse() { // Local - if (getC_Country_ID() == MCountry.getDefault(getCtx()).getC_Country_ID()) + if (MCountry.getDefault(getCtx()) != null && getC_Country_ID() == MCountry.getDefault(getCtx()).getC_Country_ID()) return getCountry().isAddressLinesLocalReverse(); return getCountry().isAddressLinesReverse(); } // isAddressLinesReverse From 267fe358df58539317b2d68a9b3292ade90720d3 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 8 Apr 2015 10:15:57 -0500 Subject: [PATCH 06/13] IDEMPIERE-2565 - found transaction not rolled back when initial client setup was failing with an exception --- .../adempiere/process/InitialClientSetup.java | 54 ++++++++++--------- .../src/org/compiere/model/MLocation.java | 2 +- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/org.adempiere.base.process/src/org/adempiere/process/InitialClientSetup.java b/org.adempiere.base.process/src/org/adempiere/process/InitialClientSetup.java index 9b9f791358..66741cf624 100644 --- a/org.adempiere.base.process/src/org/adempiere/process/InitialClientSetup.java +++ b/org.adempiere.base.process/src/org/adempiere/process/InitialClientSetup.java @@ -257,34 +257,38 @@ public class InitialClientSetup extends SvrProcess // Process MSetup ms = new MSetup(Env.getCtx(), WINDOW_THIS_PROCESS); + try { + if (! ms.createClient(p_ClientName, p_OrgValue, p_OrgName, p_AdminUserName, p_NormalUserName + , p_Phone, p_Phone2, p_Fax, p_EMail, p_TaxID, p_AdminUserEmail, p_NormalUserEmail)) { + ms.rollback(); + throw new AdempiereException("Create client failed"); + } + + addLog(ms.getInfo()); - if (! ms.createClient(p_ClientName, p_OrgValue, p_OrgName, p_AdminUserName, p_NormalUserName - , p_Phone, p_Phone2, p_Fax, p_EMail, p_TaxID, p_AdminUserEmail, p_NormalUserEmail)) { + // Generate Accounting + MCurrency currency = MCurrency.get(getCtx(), p_C_Currency_ID); + KeyNamePair currency_kp = new KeyNamePair(p_C_Currency_ID, currency.getDescription()); + if (!ms.createAccounting(currency_kp, + p_IsUseProductDimension, p_IsUseBPDimension, p_IsUseProjectDimension, p_IsUseCampaignDimension, p_IsUseSalesRegionDimension, p_IsUseActivityDimension, + coaFile, p_UseDefaultCoA, p_InactivateDefaults)) { + ms.rollback(); + throw new AdempiereException("@AccountSetupError@"); + } + + // Generate Entities + if (!ms.createEntities(p_C_Country_ID, p_CityName, p_C_Region_ID, p_C_Currency_ID, p_Postal, p_Address1)) { + ms.rollback(); + throw new AdempiereException("@AccountSetupError@"); + } + addLog(ms.getInfo()); + + // Create Print Documents + PrintUtil.setupPrintForm(ms.getAD_Client_ID()); + } catch (Exception e) { ms.rollback(); - throw new AdempiereException("Create client failed"); + throw e; } - - addLog(ms.getInfo()); - - // Generate Accounting - MCurrency currency = MCurrency.get(getCtx(), p_C_Currency_ID); - KeyNamePair currency_kp = new KeyNamePair(p_C_Currency_ID, currency.getDescription()); - if (!ms.createAccounting(currency_kp, - p_IsUseProductDimension, p_IsUseBPDimension, p_IsUseProjectDimension, p_IsUseCampaignDimension, p_IsUseSalesRegionDimension, p_IsUseActivityDimension, - coaFile, p_UseDefaultCoA, p_InactivateDefaults)) { - ms.rollback(); - throw new AdempiereException("@AccountSetupError@"); - } - - // Generate Entities - if (!ms.createEntities(p_C_Country_ID, p_CityName, p_C_Region_ID, p_C_Currency_ID, p_Postal, p_Address1)) { - ms.rollback(); - throw new AdempiereException("@AccountSetupError@"); - } - addLog(ms.getInfo()); - - // Create Print Documents - PrintUtil.setupPrintForm(ms.getAD_Client_ID()); return "@OK@"; } diff --git a/org.adempiere.base/src/org/compiere/model/MLocation.java b/org.adempiere.base/src/org/compiere/model/MLocation.java index fdfba19127..f24c2c1bae 100644 --- a/org.adempiere.base/src/org/compiere/model/MLocation.java +++ b/org.adempiere.base/src/org/compiere/model/MLocation.java @@ -465,7 +465,7 @@ public class MLocation extends X_C_Location implements Comparator if (c == null) return "CountryNotFound"; - boolean local = getC_Country_ID() == MCountry.getDefault(getCtx()).getC_Country_ID(); + boolean local = MCountry.getDefault(getCtx()) != null && getC_Country_ID() == MCountry.getDefault(getCtx()).getC_Country_ID(); String inStr = local ? c.getDisplaySequenceLocal() : c.getDisplaySequence(); StringBuilder outStr = new StringBuilder(); From 32ee03af05cd24eb0ffb35586e0b46dba7d01a9b Mon Sep 17 00:00:00 2001 From: Murilo Habermann Torquato Date: Thu, 19 Mar 2015 14:52:50 -0300 Subject: [PATCH 07/13] ModelValidationEngine - old style validator needed to osgi events work and FireFacts OSGI event is not sent --- .../src/org/compiere/model/ModelValidationEngine.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/ModelValidationEngine.java b/org.adempiere.base/src/org/compiere/model/ModelValidationEngine.java index e5986554e7..a092a71cd6 100644 --- a/org.adempiere.base/src/org/compiere/model/ModelValidationEngine.java +++ b/org.adempiere.base/src/org/compiere/model/ModelValidationEngine.java @@ -338,7 +338,7 @@ public class ModelValidationEngine */ public String fireModelChange (PO po, int changeType) { - if (po == null || m_modelChangeListeners.size() == 0) + if (po == null ) return null; String propertyName = po.get_TableName() + "*"; @@ -502,7 +502,7 @@ public class ModelValidationEngine */ public String fireDocValidate (PO po, int docTiming) { - if (po == null || m_docValidateListeners.size() == 0) + if (po == null) return null; String propertyName = po.get_TableName() + "*"; @@ -688,7 +688,7 @@ public class ModelValidationEngine */ public String fireFactsValidate (MAcctSchema schema, List facts, PO po) { - if (schema == null || facts == null || po == null || m_factsValidateListeners.size() == 0) + if (schema == null || facts == null || po == null) return null; String propertyName = po.get_TableName() + "*"; @@ -715,6 +715,7 @@ public class ModelValidationEngine FactsEventData eventData = new FactsEventData(schema, facts, po); Event event = EventManager.newEvent(IEventTopics.ACCT_FACTS_VALIDATE, new EventProperty(EventManager.EVENT_DATA, eventData), new EventProperty("tableName", po.get_TableName())); + EventManager.getInstance().sendEvent(event); @SuppressWarnings("unchecked") List errors = (List) event.getProperty(IEventManager.EVENT_ERROR_MESSAGES); if (errors != null && !errors.isEmpty()) @@ -769,8 +770,6 @@ public class ModelValidationEngine */ public void fireImportValidate (ImportProcess process, PO importModel, PO targetModel, int timing) { - if (m_impValidateListeners.size() == 0) - return; String propertyName = process.getImportTableName() + "*"; ArrayList list = m_impValidateListeners.get(propertyName); From 416129d89dea276ffdca1b41fda26cb496d05131 Mon Sep 17 00:00:00 2001 From: hieplq Date: Wed, 1 Apr 2015 17:56:06 +0700 Subject: [PATCH 08/13] IDEMPIERE-2552:sometime has NPE in CLogErrorBuffer --- org.adempiere.base/src/org/compiere/util/CLogErrorBuffer.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/org.adempiere.base/src/org/compiere/util/CLogErrorBuffer.java b/org.adempiere.base/src/org/compiere/util/CLogErrorBuffer.java index 8b66040750..8d5a140a05 100644 --- a/org.adempiere.base/src/org/compiere/util/CLogErrorBuffer.java +++ b/org.adempiere.base/src/org/compiere/util/CLogErrorBuffer.java @@ -188,6 +188,8 @@ public class CLogErrorBuffer extends Handler loggerName = ""; //String className = record.getSourceClassName(); // physical class String methodName = record.getSourceMethodName(); // + if (methodName == null) + methodName = ""; if (DB.isConnected(false) && !methodName.equals("saveError") && !methodName.equals("get_Value") From 155d591aa9298847bc4fab9107844b02e870b77f Mon Sep 17 00:00:00 2001 From: Nicolas Micoud Date: Wed, 8 Apr 2015 14:58:56 -0500 Subject: [PATCH 09/13] IDEMPIERE-2235 Report wizard : ability to change the print format name (integrated by Carlos Ruiz, PO.java didn't pass) --- .../webui/apps/form/WReportCustomization.java | 93 ++++++++++++++++--- .../webui/window/ZkReportViewer.java | 6 +- 2 files changed, 81 insertions(+), 18 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WReportCustomization.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WReportCustomization.java index cf28bd4715..92963a405e 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WReportCustomization.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WReportCustomization.java @@ -17,9 +17,11 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.StringWriter; import java.util.ArrayList; +import java.util.List; import java.util.Properties; import java.util.logging.Level; +import org.adempiere.model.GenericPO; import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Button; import org.adempiere.webui.component.ConfirmPanel; @@ -32,6 +34,7 @@ import org.adempiere.webui.component.Tabbox; import org.adempiere.webui.component.Tabpanels; import org.adempiere.webui.component.Tabs; import org.adempiere.webui.component.Window; +import org.adempiere.webui.editor.WStringEditor; import org.adempiere.webui.panel.ADForm; import org.adempiere.webui.panel.CustomForm; import org.adempiere.webui.panel.IFormController; @@ -46,6 +49,7 @@ import org.adempiere.webui.theme.ThemeManager; import org.adempiere.webui.window.FDialog; import org.adempiere.webui.window.ZkReportViewer; import org.compiere.model.MRole; +import org.compiere.model.Query; import org.compiere.print.MPrintFormat; import org.compiere.print.MPrintFormatItem; import org.compiere.print.ReportEngine; @@ -54,6 +58,7 @@ import org.compiere.util.Env; import org.compiere.util.Msg; import org.compiere.util.Util; import org.zkoss.util.media.AMedia; +import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; @@ -86,7 +91,8 @@ public class WReportCustomization implements IFormController,EventListener pfi ; private Auxheader headerPanel=new Auxheader(); - private Listbox comboReport = new Listbox(); + private WStringEditor name = new WStringEditor(); + private String tempName = ""; private Button newPrintFormat; private Label selectAll; private Label deselectAll; @@ -168,12 +174,20 @@ public class WReportCustomization implements IFormController,EventListener list = new Query(m_ctx, "AD_PrintFormat_Trl", "AD_PrintFormat_ID = ?", null) + .setParameters(fm.getAD_PrintFormat_ID()) + .list(); + for (GenericPO trl : list) { + trl.set_ValueOfColumn("Name", (String) name.getValue()); + trl.saveEx(); + + String key = fm.getTranslationKey("Name", trl.get_ValueAsString("AD_Language")); + fm.removeTrlFromCache(key); + } + } + @Override public ADForm getForm() { return form; @@ -551,9 +614,11 @@ public class WReportCustomization implements IFormController,EventListener, ITab @Override public void onEvent(Event event) throws Exception { if (DialogEvents.ON_WINDOW_CLOSE.equals(event.getName())) { - if(m_reportEngine.getPrintFormat().get_ID()!=Env.getContextAsInt(m_ctx, "AD_PrintFormat_ID")){ - fillComboReport (m_reportEngine.getPrintFormat().get_ID()); - } - cmd_report(); + fillComboReport (m_reportEngine.getPrintFormat().get_ID()); + cmd_report(); } } }); From 2fb07c0bb8dce11935f2030b92e993f9edbc9577 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 8 Apr 2015 15:31:51 -0500 Subject: [PATCH 10/13] IDEMPIERE-2235 Report wizard : ability to change the print format name - peer review --- org.adempiere.base/src/org/compiere/model/PO.java | 12 +++++++++--- .../webui/apps/form/WReportCustomization.java | 3 +-- .../org/adempiere/webui/window/ZkReportViewer.java | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/PO.java b/org.adempiere.base/src/org/compiere/model/PO.java index 0a0487b330..83bb9c1e3d 100644 --- a/org.adempiere.base/src/org/compiere/model/PO.java +++ b/org.adempiere.base/src/org/compiere/model/PO.java @@ -107,7 +107,7 @@ public abstract class PO /** * */ - private static final long serialVersionUID = -2731993630208549493L; + private static final long serialVersionUID = 8237905660667141657L; public static final String LOCAL_TRX_PREFIX = "POSave"; @@ -1882,16 +1882,22 @@ public abstract class PO /** Cache */ private static CCache trl_cache = new CCache("po_trl", 5); + public String get_Translation (String columnName, String AD_Language) + { + return get_Translation(columnName, AD_Language, false); + } + /** * Get Translation of column (if needed). * It checks if the base language is used or the column is not translated. * If there is no translation then it fallback to original value. * @param columnName * @param AD_Language + * @boolean reload * @return translated string * @throws IllegalArgumentException if columnName or AD_Language is null or model has multiple PK */ - public String get_Translation (String columnName, String AD_Language) + public String get_Translation (String columnName, String AD_Language, boolean reload) { // // Check if columnName, AD_Language is valid or table support translation (has 1 PK) => error @@ -1907,7 +1913,7 @@ public abstract class PO String key = get_TableName() + "." + columnName + "|" + get_ID() + "|" + AD_Language; String retValue = null; - if (trl_cache.containsKey(key)) { + if (! reload && trl_cache.containsKey(key)) { retValue = trl_cache.get(key); return retValue; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WReportCustomization.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WReportCustomization.java index 92963a405e..34ceaea40d 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WReportCustomization.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WReportCustomization.java @@ -422,8 +422,7 @@ public class WReportCustomization implements IFormController,EventListener, ITab { MPrintFormat printFormat = new MPrintFormat (Env.getCtx(), rs, null); - KeyNamePair pp = new KeyNamePair(printFormat.get_ID(), printFormat.get_Translation(MPrintFormat.COLUMNNAME_Name)); + KeyNamePair pp = new KeyNamePair(printFormat.get_ID(), printFormat.get_Translation(MPrintFormat.COLUMNNAME_Name, Env.getAD_Language(Env.getCtx()), true)); Listitem li = comboReport.appendItem(pp.getName(), pp.getKey()); if (rs.getInt(1) == AD_PrintFormat_ID) { From c2c4bd8215413bbac3eaa354746d03e72d65370c Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 8 Apr 2015 15:32:07 -0500 Subject: [PATCH 11/13] IDEMPIERE-1135 Report wizard not clearing order items --- .../src/org/adempiere/webui/panel/WRC3SortCriteriaPanel.java | 2 +- .../org/adempiere/webui/panel/WRC4GroupingCriteriaPanel.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WRC3SortCriteriaPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WRC3SortCriteriaPanel.java index d630ec55fc..280de9e188 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WRC3SortCriteriaPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WRC3SortCriteriaPanel.java @@ -175,7 +175,7 @@ public class WRC3SortCriteriaPanel extends WRCTabPanel implements EventListener noItems =new ArrayList(); for(int i=0 ; i< m_pfi.size();i++){ MPrintFormatItem item = m_pfi.get(i); - if(item!=null && item.isPrinted()){ + if(item!=null){ if(item.isOrderBy()){ yesItems.add(item); }else{ diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WRC4GroupingCriteriaPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WRC4GroupingCriteriaPanel.java index d9632c197b..50dd7de396 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WRC4GroupingCriteriaPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WRC4GroupingCriteriaPanel.java @@ -49,7 +49,7 @@ public class WRC4GroupingCriteriaPanel extends WRCTabPanel implements EventListe public void refresh() { orderfield = new ArrayList(); for(int i=0 ; i < m_pfi.size(); i++){ - if(m_pfi.get(i) != null && m_pfi.get(i).isOrderBy() && m_pfi.get(i).isPrinted()){ + if(m_pfi.get(i) != null && m_pfi.get(i).isOrderBy()){ orderfield.add(m_pfi.get(i)); } } From 9fee5d028ef239e974b9a81b0d2abc9ffc9a7c50 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 8 Apr 2015 16:01:59 -0500 Subject: [PATCH 12/13] IDEMPIERE-2531 Archive Viewer open EnterQuery tab instead of ViewResult / IDEMPIERE-556 / IDEMPIERE-724 --- .../src/org/adempiere/webui/WArchive.java | 2 +- .../webui/apps/form/WArchiveViewer.java | 32 +++++++++++++------ 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/WArchive.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/WArchive.java index 6fe382662f..b2a9d0d1bb 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/WArchive.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/WArchive.java @@ -133,7 +133,7 @@ public class WArchive implements EventListener if (allReports > 0) { m_reportsAll = new Menuitem(Msg.getMsg(Env.getCtx(), "ArchivedReportsAll") - + " (" + reportCount + ")"); + + " (" + allReports + ")"); m_reportsAll.addEventListener(Events.ON_CLICK, this); m_popup.appendChild(m_reportsAll); } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WArchiveViewer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WArchiveViewer.java index 90ff3c91b4..e81a27ca52 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WArchiveViewer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WArchiveViewer.java @@ -64,6 +64,7 @@ import org.compiere.util.KeyNamePair; import org.compiere.util.Msg; import org.compiere.util.Util; import org.zkoss.util.media.AMedia; +import org.zkoss.zk.ui.Page; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; @@ -133,15 +134,25 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis { log.info(""); - form = new CustomForm(); - try { - dynInit(); - jbInit(); - } - catch(Exception e) - { - log.log(Level.SEVERE, "init", e); - } + form = new CustomForm() { + private static final long serialVersionUID = 7226661630651936293L; + + @Override + public void onPageAttached(Page newpage, Page oldpage) { + super.onPageAttached(newpage, oldpage); + if (newpage != null) + try { + dynInit(); + jbInit(); + } + catch(Exception e) + { + log.log(Level.SEVERE, "init", e); + } + + } + + }; m_WindowNo = form.getWindowNo(); } @@ -511,6 +522,9 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis */ private void updateQDisplay() { + if (!showQuery) + return; + boolean reports = reportField.isChecked(); if (log.isLoggable(Level.CONFIG)) log.config("Reports=" + reports); From 35abd70d8adaf4ea54cd8bbd3b4f70dd392f9f4e Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 8 Apr 2015 16:18:34 -0500 Subject: [PATCH 13/13] IDEMPIERE-2570 Form reports stacking on same page when issued for several records --- .../src/org/compiere/print/layout/LayoutEngine.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java b/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java index 0008f0985a..af6d9fcbdf 100644 --- a/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java +++ b/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java @@ -1009,6 +1009,9 @@ public class LayoutEngine implements Pageable, Printable, Doc { if (log.isLoggable(Level.INFO)) log.info("Row=" + row); m_data.setRowIndex(row); + if (row > 0) + newPage(true, false); // break page per record when the report is a form + boolean somethingPrinted = true; // prevent NL of nothing printed and supress null // for every item for (int i = 0; i < m_format.getItemCount(); i++)