www.pudn.com > code_source_compiere_erp_crm_logiciel_java.zip > AcctSchemaElement.java


/****************************************************************************** 
 * The contents of this file are subject to the   Compiere License  Version 1.1 
 * ("License"); You may not use this file except in compliance with the License 
 * You may obtain a copy of the License at http://www.compiere.org/license.html 
 * Software distributed under the License is distributed on an  "AS IS"  basis, 
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for 
 * the specific language governing rights and limitations under the License. 
 * The Original Code is                  Compiere  ERP & CRM  Business Solution 
 * The Initial Developer of the Original Code is Jorg Janke  and ComPiere, Inc. 
 * 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): ______________________________________. 
 *****************************************************************************/ 
package org.compiere.model; 
 
import java.sql.*; 
import java.util.*; 
 
import org.compiere.util.*; 
import java.io.*; 
 
/** 
 *  Account Schema Element Object 
 * 
 *  @author 	Jorg Janke 
 *  @version 	$Id: AcctSchemaElement.java,v 1.10 2003/02/14 06:43:42 jjanke Exp $ 
 */ 
public final class AcctSchemaElement implements Serializable 
{ 
	/** 
	 *  Constructor 
	 *  @param id	C_AcctSchema_Element_ID 
	 *  @param seqNo Sequence 
	 *  @param name Name 
	 *  @param segmentType	Type 
	 *  @param C_Element_ID C_Element_ID 
	 *  @param defaultValue default 
	 *  @param mandatory mandatory 
	 *  @param balanced balanced 
	 */ 
	private AcctSchemaElement (int id, int seqNo, String name, String segmentType, 
		int C_Element_ID, int defaultValue, boolean mandatory, boolean balanced) 
	{ 
		m_ID = id; 
		m_seqNo = seqNo; 
		m_name = name; 
		m_segmentType = segmentType; 
		m_C_Element_ID = C_Element_ID; 
		m_defaultValue = defaultValue; 
		m_mandatory = mandatory; 
		m_balanced = balanced; 
	}   //  AcctSchemaElement 
 
	private int     m_ID; 
	private int     m_seqNo; 
	private String  m_name; 
	private String  m_segmentType; 
	private int     m_C_Element_ID; 
	private int     m_defaultValue; 
	private boolean m_mandatory; 
	private boolean m_balanced; 
	private boolean m_active; 
 
	/** Segment             */ 
	public final static String	SEGMENT_Org		    = "OO"; 
	/** Segment             */ 
	public final static String  SEGMENT_Account	    = "AC"; 
	/** Segment             */ 
	public final static String	SEGMENT_BPartner    = "BP"; 
	/** Segment             */ 
	public final static String	SEGMENT_Product	    = "PR"; 
	/** Segment             */ 
	public final static String	SEGMENT_Activity    = "AY"; 
	/** Segment             */ 
	public final static String	SEGMENT_LocationFrom= "LF"; 
	/** Segment             */ 
	public final static String	SEGMENT_LocationTo  = "LT"; 
	/** Segment             */ 
	public final static String	SEGMENT_Campaign    = "MC"; 
	/** Segment             */ 
	public final static String	SEGMENT_TrxOrg	    = "OT"; 
	/** Segment             */ 
	public final static String	SEGMENT_Project	    = "PJ"; 
	/** Segment             */ 
	public final static String	SEGMENT_SalesRegion = "SR"; 
	/** Segment             */ 
	public final static String	SEGMENT_User1	    = "U1"; 
	/** Segment             */ 
	public final static String	SEGMENT_User2	    = "U2"; 
 
	/** 
	 *  Factory: Return ArrayList of Account Schema Elements 
	 *  @param C_AcctSchema_ID C_AcctSchema_ID 
	 *  @return ArrayList with Elements 
	 */ 
	public static ArrayList getAcctSchemaElementList (int C_AcctSchema_ID) 
	{ 
		Log.trace(Log.l3_Util, "AcctSchamaElement.getAcctSchemaElementList - " + C_AcctSchema_ID); 
		ArrayList list = new ArrayList(); 
		// 
		String sql = "SELECT C_AcctSchema_Element_ID,SeqNo,Name,ElementType,"	//	1..4 
			+ "C_Element_ID,IsMandatory,IsBalanced, "							//	5..7 
			+ "Org_ID,C_ElementValue_ID,C_BPartner_ID,M_Product_ID,"			//	8..11 
			+ "C_Activity_ID,C_Location_ID,C_Campaign_ID,"						//	12..14 
			+ "C_Project_ID,C_SalesRegion_ID "									//	15..16 
			+ "FROM C_AcctSchema_Element " 
			+ "WHERE C_AcctSchema_ID=? AND IsActive='Y' ORDER BY SeqNo"; 
 
		try 
		{ 
			PreparedStatement pstmt = DB.prepareStatement(sql); 
			pstmt.setInt(1, C_AcctSchema_ID); 
			ResultSet rs = pstmt.executeQuery(); 
			while (rs.next()) 
			{ 
				int id = rs.getInt(1); 
				int seqNo = rs.getInt(2); 
				String name = rs.getString(3); 
				String segmentType = rs.getString(4); 
				int C_Element_ID = rs.getInt(5); 
				boolean mandatory = rs.getString(6).equals("Y"); 
				boolean balanced = rs.getString(7).equals("Y"); 
				// 
				int defaultValue = 0; 
				if (segmentType.equals(SEGMENT_Org)) 
					defaultValue = rs.getInt(8);			//	Org_ID 
				else if (segmentType.equals(SEGMENT_Account)) 
					defaultValue = rs.getInt(9);			//	C_ElementValue_ID 
				else if (segmentType.equals(SEGMENT_BPartner)) 
					defaultValue = rs.getInt(10); 
				else if (segmentType.equals(SEGMENT_Product)) 
					defaultValue = rs.getInt(11); 
				else if (segmentType.equals(SEGMENT_Activity)) 
					defaultValue = rs.getInt(12); 
				else if (segmentType.equals(SEGMENT_LocationFrom)) 
					defaultValue = rs.getInt(13);			//	C_Location_ID 
				else if (segmentType.equals(SEGMENT_LocationTo)) 
					defaultValue = rs.getInt(13);			//	C_Location_ID 
				else if (segmentType.equals(SEGMENT_Campaign)) 
					defaultValue = rs.getInt(14); 
				else if (segmentType.equals(SEGMENT_TrxOrg)) 
					defaultValue = rs.getInt(8);			//	Org_ID 
				else if (segmentType.equals(SEGMENT_Project)) 
					defaultValue = rs.getInt(15); 
				else if (segmentType.equals(SEGMENT_SalesRegion)) 
					defaultValue = rs.getInt(16); 
				else if (segmentType.equals(SEGMENT_User1)) 
					defaultValue = rs.getInt(9);			//	C_ElementValue_ID 
				else if (segmentType.equals(SEGMENT_User2)) 
					defaultValue = rs.getInt(9);			//	C_ElementValue_ID 
				// 
				Log.trace(Log.l6_Database, seqNo + " " + name + " " + segmentType + "=" + defaultValue); 
				if (mandatory && defaultValue == 0) 
					Log.error("AcctSchameElement.getAcctSchemaElementList - No default value for " + name); 
				// 
				AcctSchemaElement e = new AcctSchemaElement(id, seqNo, name, segmentType, 
					C_Element_ID, defaultValue, mandatory, balanced); 
				list.add(e); 
			} 
			rs.close(); 
			pstmt.close(); 
		} 
		catch (SQLException e) 
		{ 
			Log.error ("AcctSchemaElement.getAcctSchemaElementList", e); 
		} 
		return list; 
	}   //  getAcctSchemaElementList 
 
	/*************************************************************************/ 
 
	/** 
	 *  Get Display Name 
	 *  @return name 
	 */ 
	public String getName() 
	{ 
		return m_name; 
	}   //  getName 
 
	/** 
	 *  Get Segment Type 
	 *  @return segment type 
	 */ 
	public String getSegmentType() 
	{ 
		return m_segmentType; 
	}   //  getSegmentType 
 
	/** 
	 *  Is Segment Type 
	 *  @param st gegmant type 
	 *	@return segment type 
	 */ 
	public boolean isSegmentType (String st) 
	{ 
		return m_segmentType.equals(st); 
	}   //  isSegmentType 
 
	/** 
	 *  Get ColumnName 
	 *  @return column name 
	 */ 
	public String getColumnName() 
	{ 
		return getColumnName(m_segmentType); 
	}	//	getColumnName 
 
	/** 
	 *  Get Column Name of segment type 
	 * 	@param segmentType segment type 
	 *  @return column name 
	 */ 
	public static String getColumnName(String segmentType) 
	{ 
		if (segmentType.equals(SEGMENT_Org)) 
			return "AD_Org_ID"; 
		else if (segmentType.equals(SEGMENT_Account)) 
			return "Account_ID"; 
		else if (segmentType.equals(SEGMENT_BPartner)) 
			return "C_BPartner_ID"; 
		else if (segmentType.equals(SEGMENT_Product)) 
			return "M_Product_ID"; 
		else if (segmentType.equals(SEGMENT_Activity)) 
			return "C_Activity_ID"; 
		else if (segmentType.equals(SEGMENT_LocationFrom)) 
			return "C_LocFrom_ID"; 
		else if (segmentType.equals(SEGMENT_LocationTo)) 
			return "C_LocTo_ID"; 
		else if (segmentType.equals(SEGMENT_Campaign)) 
			return "C_Campaign_ID"; 
		else if (segmentType.equals(SEGMENT_TrxOrg)) 
			return "Org_ID"; 
		else if (segmentType.equals(SEGMENT_Project)) 
			return "C_Project_ID"; 
		else if (segmentType.equals(SEGMENT_SalesRegion)) 
			return "C_SalesRegion_ID"; 
		else if (segmentType.equals(SEGMENT_User1)) 
			return "User1_ID"; 
		else if (segmentType.equals(SEGMENT_User2)) 
			return "User2_ID"; 
		// 
		return ""; 
	}   //  getColumnName 
 
	/** 
	 *  Get Value Query for Segment Type 
	 * 	@param segmentType segment type 
	 *  @return query "SELECT Value,Name FROM Table WHERE ID=" 
	 */ 
	public static String getValueQuery (String segmentType) 
	{ 
		if (segmentType.equals(SEGMENT_Org)) 
			return "SELECT Value,Name FROM AD_Org WHERE AD_Org_ID="; 
		else if (segmentType.equals(SEGMENT_Account)) 
			return "SELECT Value,Name FROM C_ElementValue WHERE C_ElementValue_ID="; 
		else if (segmentType.equals(SEGMENT_BPartner)) 
			return "SELECT Value,Name FROM C_BPartner WHERE C_BPartner_ID="; 
		else if (segmentType.equals(SEGMENT_Product)) 
			return "SELECT Value,Name FROM M_Product WHERE M_Product_ID="; 
		else if (segmentType.equals(SEGMENT_Activity)) 
			return "SELECT Value,Name FROM C_Activity WHERE C_Activity_ID="; 
		else if (segmentType.equals(SEGMENT_LocationFrom)) 
			return "SELECT City,Address1 FROM C_Location WHERE C_Location_ID="; 
		else if (segmentType.equals(SEGMENT_LocationTo)) 
			return "SELECT City,Address1 FROM C_Location WHERE C_Location_ID="; 
		else if (segmentType.equals(SEGMENT_Campaign)) 
			return "SELECT Value,Name FROM C_Campaign WHERE C_Campaign_ID="; 
		else if (segmentType.equals(SEGMENT_TrxOrg)) 
			return "SELECT Value,Name FROM AD_Org WHERE AD_Org_ID="; 
		else if (segmentType.equals(SEGMENT_Project)) 
			return "SELECT Value,Name FROM C_Project WHERE C_Project_ID="; 
		else if (segmentType.equals(SEGMENT_SalesRegion)) 
			return "SELECT Value,Name FROM C_SalesRegion WHERE C_SalesRegion_ID"; 
		else if (segmentType.equals(SEGMENT_User1)) 
			return "SELECT Value,Name FROM C_ElementValue WHERE C_ElementValue_ID="; 
		else if (segmentType.equals(SEGMENT_User2)) 
			return "SELECT Value,Name FROM C_ElementValue WHERE C_ElementValue_ID="; 
		// 
		return ""; 
	}   //  getColumnName 
 
 
	/** 
	 * 	Get ID 
	 *  @return ID 
	 */ 
	public int getID() 
	{ 
		return m_ID; 
	} 
	public int getC_Element_ID() 
	{ 
		return m_C_Element_ID; 
	} 
	public int getDefaultValue() 
	{ 
		return m_defaultValue; 
	} 
	public boolean isMandatory() 
	{ 
		return m_mandatory; 
	} 
	public boolean isBalanced() 
	{ 
		return m_balanced; 
	} 
	public int getSeqNo() 
	{ 
		return m_seqNo; 
	} 
 
 
	/** 
	 *  String representation 
	 *  @return info 
	 */ 
	public String toString() 
	{ 
		return "AcctSchemaElement[" + m_name + " (" + m_segmentType + ") Pos=" + m_seqNo + "]"; 
	}   //  toString 
 
}   //  AcctSchemaElement