diff --git a/base/src/org/compiere/model/MRefList.java b/base/src/org/compiere/model/MRefList.java index a8ac2d4ff2..44d8208e6d 100644 --- a/base/src/org/compiere/model/MRefList.java +++ b/base/src/org/compiere/model/MRefList.java @@ -16,11 +16,18 @@ *****************************************************************************/ package org.compiere.model; -import java.sql.*; -import java.util.*; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Properties; +import java.util.logging.Level; -import java.util.logging.*; -import org.compiere.util.*; +import org.compiere.util.CCache; +import org.compiere.util.CLogger; +import org.compiere.util.DB; +import org.compiere.util.Env; +import org.compiere.util.ValueNamePair; /** * Reference List Value @@ -42,37 +49,9 @@ public class MRefList extends X_AD_Ref_List */ public static MRefList get (Properties ctx, int AD_Reference_ID, String Value, String trxName) { - MRefList retValue = null; - String sql = "SELECT * FROM AD_Ref_List " - + "WHERE AD_Reference_ID=? AND Value=?"; - PreparedStatement pstmt = null; - try - { - pstmt = DB.prepareStatement (sql, trxName); - pstmt.setInt (1, AD_Reference_ID); - pstmt.setString (2, Value); - ResultSet rs = pstmt.executeQuery (); - if (rs.next ()) - retValue = new MRefList (ctx, rs, trxName); - rs.close (); - pstmt.close (); - pstmt = null; - } - catch (SQLException ex) - { - s_log.log(Level.SEVERE, sql, ex); - } - try - { - if (pstmt != null) - pstmt.close (); - } - catch (SQLException ex1) - { - } - pstmt = null; - - return retValue; + return new Query(ctx, Table_Name, "AD_Reference_ID=? AND Value=?", trxName) + .setParameters(new Object[]{AD_Reference_ID, Value}) + .first(); } // get /** @@ -98,6 +77,7 @@ public class MRefList extends X_AD_Ref_List + " INNER JOIN AD_Ref_List r ON (r.AD_Ref_List_ID=t.AD_Ref_List_ID) " + "WHERE r.AD_Reference_ID=? AND r.Value=? AND t.AD_Language=?"; PreparedStatement pstmt = null; + ResultSet rs = null; try { pstmt = DB.prepareStatement (sql, null); @@ -105,26 +85,18 @@ public class MRefList extends X_AD_Ref_List pstmt.setString(2, Value); if (!isBaseLanguage) pstmt.setString(3, AD_Language); - ResultSet rs = pstmt.executeQuery (); + rs = pstmt.executeQuery (); if (rs.next ()) retValue = rs.getString(1); - rs.close (); - pstmt.close (); - pstmt = null; } catch (SQLException ex) { s_log.log(Level.SEVERE, sql + " - " + key, ex); } - try - { - if (pstmt != null) - pstmt.close (); + finally { + DB.close(rs, pstmt); + rs = null; pstmt = null; } - catch (SQLException ex1) - { - } - pstmt = null; // Save into Cache if (retValue == null) @@ -158,6 +130,7 @@ public class MRefList extends X_AD_Ref_List + " ORDER BY t.Name" ; PreparedStatement pstmt = null; + ResultSet rs = null; ArrayList list = new ArrayList(); if (optional) list.add(new ValueNamePair("", "")); @@ -167,26 +140,21 @@ public class MRefList extends X_AD_Ref_List pstmt.setInt(1, AD_Reference_ID); if (!isBaseLanguage) pstmt.setString(2, ad_language); - ResultSet rs = pstmt.executeQuery(); + rs = pstmt.executeQuery(); while (rs.next()) list.add(new ValueNamePair(rs.getString(1), rs.getString(2))); rs.close(); pstmt.close(); pstmt = null; } - catch (Exception e) + catch (SQLException e) { s_log.log(Level.SEVERE, sql, e); } - try + finally { - if (pstmt != null) - pstmt.close(); - pstmt = null; - } - catch (Exception e) - { - pstmt = null; + DB.close(rs, pstmt); + rs = null; pstmt = null; } ValueNamePair[] retValue = new ValueNamePair[list.size()]; list.toArray(retValue); diff --git a/extend/src/test/functional/FunctionalTestSuite.java b/extend/src/test/functional/FunctionalTestSuite.java index d077ad5d75..8b7008e99d 100644 --- a/extend/src/test/functional/FunctionalTestSuite.java +++ b/extend/src/test/functional/FunctionalTestSuite.java @@ -18,6 +18,7 @@ public class FunctionalTestSuite { suite.addTestSuite(MStorageTest.class); suite.addTestSuite(MSysConfigTest.class); suite.addTestSuite(QueryTest.class); + suite.addTestSuite(MRefListTest.class); //$JUnit-END$ return suite; } diff --git a/extend/src/test/functional/MRefListTest.java b/extend/src/test/functional/MRefListTest.java new file mode 100644 index 0000000000..e9e9dee643 --- /dev/null +++ b/extend/src/test/functional/MRefListTest.java @@ -0,0 +1,42 @@ +/****************************************************************************** + * Product: XERP Core * + * Copyright (C) 2008 SC ARHIPAC SERVICE SRL. All Rights Reserved. * + *****************************************************************************/ + +package test.functional; + +import org.compiere.model.MRefList; +import org.compiere.model.X_AD_Table; +import org.compiere.util.Env; + +import test.AdempiereTestCase; + +/** + * Test MRefList class + * @author Teo Sarca, SC ARHIPAC SERVICE SRL + * + */ +public class MRefListTest extends AdempiereTestCase { + public void testGet() throws Exception { + // + // Should be found + MRefList rl = MRefList.get(getCtx(), + X_AD_Table.ACCESSLEVEL_AD_Reference_ID, + X_AD_Table.ACCESSLEVEL_Organization, + getTrxName()); + assertNotNull(rl); + assertEquals("Should be found", X_AD_Table.ACCESSLEVEL_Organization, rl.getValue()); + // + // Should not be found + rl = MRefList.get(getCtx(), 7654321, "7654321", getTrxName()); + assertNull("Should not be found", rl); + } + + public void testGetListName() throws Exception { + Env.setContext(getCtx(), Env.LANGUAGE, "en_US"); + String name = MRefList.getListName(getCtx(), + X_AD_Table.ACCESSLEVEL_AD_Reference_ID, + X_AD_Table.ACCESSLEVEL_All); + assertEquals("All", name); + } +}