📄 poinfo.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.util.*;
import java.sql.*;
import org.compiere.util.*;
/**
* Persistet Object Info.
* Provides structural information
*
* @author Jorg Janke
* @version $Id: POInfo.java,v 1.3 2003/02/22 04:27:41 jjanke Exp $
*/
public class POInfo
{
/**
* POInfo Factory
* @param ctx context
* @param AD_Table_ID AD_Table_ID
* @return POInfo
*/
public static POInfo getPOInfo (Properties ctx, int AD_Table_ID)
{
Integer key = new Integer(AD_Table_ID);
POInfo retValue = (POInfo)s_cache.get(key);
if (retValue == null)
{
retValue = new POInfo(ctx, AD_Table_ID);
if (retValue.getColumnCount() > 0)
s_cache.put(key, retValue);
}
return retValue;
} // getPOInfo
/** Cache of POInfo */
private static HashMap s_cache = new HashMap();
/*************************************************************************/
/**
* Create Persistent Info
* @param ctx context
* @param AD_Table_ID AD_ Table_ID
*/
private POInfo (Properties ctx, int AD_Table_ID)
{
m_ctx = ctx;
m_AD_Table_ID = AD_Table_ID;
loadInfo ();
} // PInfo
/** Context */
private Properties m_ctx = null;
/** Table_ID */
private int m_AD_Table_ID = 0;
/** Table Name */
private String m_TableName = null;
/** Columns */
private Column[] m_columns = null;
/**
* Load Table/Column Info
*/
private void loadInfo()
{
ArrayList list = new ArrayList(15);
boolean english = Env.isBaseLanguage(m_ctx, "AD_Table");
StringBuffer sql = new StringBuffer();
sql.append("SELECT t.TableName, c.ColumnName,c.AD_Reference_ID," // 1..3
+ "c.IsMandatory,c.IsUpdateable,c.DefaultValue," // 4..6
+ "e.Name,e.Description, c.AD_Column_ID, " // 7..9
+ "c.IsKey,c.IsParent "); // 10..11
sql.append("FROM AD_Table t, AD_Column c, AD_Element");
if (!english)
sql.append("_Trl");
sql.append(" e "
+ "WHERE t.AD_Table_ID=?"
+ " AND t.AD_Table_ID=c.AD_Table_ID"
+ " AND c.AD_Element_ID=e.AD_Element_ID");
if (!english)
sql.append(" AND e.AD_Language='").append(Env.getAD_Language(m_ctx)).append("'");
//
try
{
PreparedStatement pstmt = DB.prepareStatement(sql.toString());
pstmt.setInt(1, m_AD_Table_ID);
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
if (m_TableName == null)
m_TableName = rs.getString(1);
Column col = new Column (
rs.getInt(9), rs.getString(2), rs.getInt(3),
"Y".equals(rs.getString(4)), "Y".equals(rs.getString(5)),
rs.getString(6), rs.getString(7), rs.getString(8),
"Y".equals(rs.getString(10)), "Y".equals(rs.getString(11)) );
list.add(col);
}
rs.close();
pstmt.close();
}
catch (SQLException e)
{
Log.error("POInfo.loadInfo - " + sql.toString(), e);
}
// convert to array
m_columns = new Column[list.size()];
list.toArray(m_columns);
} // loadInfo
/**
* String representation
* @return String Representation
*/
public String toString()
{
return "POInfo[" + getTableName() + ",AD_Table_ID=" + getAD_Table_ID() + "]";
} // toString
/**
* String representation for index
* @param index column index
* @return String Representation
*/
public String toString (int index)
{
if (index < 0 || index >= m_columns.length)
return "POInfo[" + getTableName() + "-InvalidIndex]";
return "POInfo[" + getTableName() + "-" + m_columns[index].toString() + "]";
} // toString
/**
* Get Table Name
* @return Table Name
*/
public String getTableName()
{
return m_TableName;
} // getTableName
/**
* Get AD_Table_ID
* @return AD_Table_ID
*/
public int getAD_Table_ID()
{
return m_AD_Table_ID;
} // getAD_Table_ID
/*************************************************************************/
/**
* Get ColumnCount
* @return column count
*/
public int getColumnCount()
{
return m_columns.length;
} // getColumnCount
/**
* Get ColumnIndex
* @param ColumnName column name
* @return index of column with ColumnName or -1 if not found
*/
public int getColumnIndex (String ColumnName)
{
for (int i = 0; i < m_columns.length; i++)
{
if (ColumnName.equals(m_columns[i].ColumnName))
return i;
}
return -1;
} // getColumnIndex
/**
* Get Column Name
* @param index index
* @return ColumnName column name
*/
public String getColumnName (int index)
{
if (index < 0 || index >= m_columns.length)
return null;
return m_columns[index].ColumnName;
} // getColumnName
/**
* Get Column Label
* @param index index
* @return column label
*/
public String getColumnLabel (int index)
{
if (index < 0 || index >= m_columns.length)
return null;
return m_columns[index].ColumnLabel;
} // getColumnLabel
/**
* Get Column Description
* @param index index
* @returncolumn description
*/
public String getColumnDescription (int index)
{
if (index < 0 || index >= m_columns.length)
return null;
return m_columns[index].ColumnDescription;
} // getColumnDescription
/**
* Get Column Class
* @param index index
* @return Class
*/
public Class getColumnClass (int index)
{
if (index < 0 || index >= m_columns.length)
return null;
return m_columns[index].ColumnClass;
} // getColumnClass
/**
* Get Column Display Type
* @param index index
* @return DisplayType
*/
public int getColumnDisplayType (int index)
{
if (index < 0 || index >= m_columns.length)
return DisplayType.String;
return m_columns[index].DisplayType;
} // getColumnDisplayType
/**
* Get Column Default Logic
* @param index index
* @return Default Logic
*/
public String getDefaultLogic (int index)
{
if (index < 0 || index >= m_columns.length)
return null;
return m_columns[index].DefaultLogic;
} // getDefaultLogic
/**
* Is Column Mandatory
* @param index index
* @return true if column mandatory
*/
public boolean isColumnMandatory (int index)
{
if (index < 0 || index >= m_columns.length)
return false;
return m_columns[index].IsMandatory;
} // isMandatory
/**
* Is Column Updateable
* @param index index
* @return true if column updateable
*/
public boolean isColumnUpdateable (int index)
{
if (index < 0 || index >= m_columns.length)
return false;
return m_columns[index].IsUpdateable;
} // isUpdateable
/**
* Set Column Updateable
* @param index index
* @param updateable column updateable
*/
public void setColumnUpdateable (int index, boolean updateable)
{
if (index < 0 || index >= m_columns.length)
return;
m_columns[index].IsUpdateable = updateable;
} // setColumnUpdateable
/**
* Set all columns updateable
* @param updateable updateable
*/
public void setUpdateable (boolean updateable)
{
for (int i = 0; i < m_columns.length; i++)
m_columns[i].IsUpdateable = updateable;
} // setUpdateable
/**
* Is Lookup Column
* @param index index
* @return true if it is a lookup column
*/
public boolean isColumnLookup (int index)
{
if (index < 0 || index >= m_columns.length)
return false;
return DisplayType.isLookup(m_columns[index].DisplayType);
} // isColumnLookup
/**
* Get Lookup
* @param index index
* @return Lookup
*/
public Lookup getColumnLookup(int index)
{
if (!isColumnLookup(index))
return null;
//
int WindowNo = 0;
// List, Table, TableDir
Lookup lookup = null;
try
{
lookup = MLookupFactory.create (m_ctx, m_columns[index].AD_Column_ID, WindowNo, m_columns[index].DisplayType, false);
}
catch (Exception e)
{
lookup = null; // cannot create Lookup
}
return lookup;
/** @todo other lookup types */
} // getColumnLookup
/**
* Is Column Key
* @param index index
* @return true if column is the key
*/
public boolean isColumnKey (int index)
{
if (index < 0 || index >= m_columns.length)
return false;
return m_columns[index].IsKey;
} // isColumnKey
/**
* Is Column Parent
* @param index index
* @return true if column is a Parent
*/
public boolean isColumnParent (int index)
{
if (index < 0 || index >= m_columns.length)
return false;
return m_columns[index].IsParent;
} // isColumnParent
/*************************************************************************/
/**
* Column Info Vlaue Object
*/
class Column
{
/**
* Constructor
* @param ad_Column_ID Column ID
* @param columnName Dolumn name
* @param displayType Display Type
* @param isMandatory Mandatory
* @param isUpdateable Updateable
* @param defaultLogic Default Logic
* @param columnLabel Column Label
* @param columnDescription Column Description
* @param isKey true if key
* @param isParent true if parent
*/
Column (int ad_Column_ID, String columnName, int displayType,
boolean isMandatory, boolean isUpdateable, String defaultLogic,
String columnLabel, String columnDescription,
boolean isKey, boolean isParent)
{
AD_Column_ID = ad_Column_ID;
ColumnName = columnName;
DisplayType = displayType;
if (columnName.equals("AD_Language"))
ColumnClass = String.class;
else if (columnName.equals("Posted"))
ColumnClass = Boolean.class;
else
ColumnClass = org.compiere.util.DisplayType.getClass(displayType, true);
IsMandatory = isMandatory;
IsUpdateable = isUpdateable;
DefaultLogic = defaultLogic;
ColumnLabel = columnLabel;
ColumnDescription = columnDescription;
IsKey = isKey;
IsParent = isParent;
} // Column
public int AD_Column_ID;
public String ColumnName;
public int DisplayType;
public Class ColumnClass;
public boolean IsMandatory;
public String DefaultLogic;
public boolean IsUpdateable;
public String ColumnLabel;
public String ColumnDescription;
public boolean IsKey;
public boolean IsParent;
/**
* String representation
* @return info
*/
public String toString()
{
StringBuffer sb = new StringBuffer("POInfo.Column[");
sb.append(ColumnName).append(",ID=").append(AD_Column_ID)
.append(",DisplayType=").append(DisplayType)
.append(",ColumnClass=").append(ColumnClass);
sb.append("]");
return sb.toString();
} // toString
} // Column
} // POInfo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -