📄 mfieldvo.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 java.io.*;
import org.compiere.util.*;
/**
* Field Model Value Object
*
* @author Jorg Janke
* @version $Id: MFieldVO.java,v 1.14 2003/05/04 06:40:55 jjanke Exp $
*/
public class MFieldVO implements Serializable
{
/**
* Private constructor
* @param ctx context
* @param WindowNo window
* @param TabNo tab
* @param AD_Window_ID window
* @param tabReadOnly read only
*/
private MFieldVO (Properties ctx, int WindowNo, int TabNo, int AD_Window_ID, boolean tabReadOnly)
{
this.ctx = ctx;
this.WindowNo = WindowNo;
this.TabNo = TabNo;
this.AD_Window_ID = AD_Window_ID;
this.tabReadOnly = tabReadOnly;
} // MFieldVO
/** Context */
public Properties ctx = null;
/** Window No */
public int WindowNo;
/** Tab No */
public int TabNo;
/** AD_Winmdow_ID */
public int AD_Window_ID;
/** Is the Tab Read Only */
public boolean tabReadOnly = false;
/** Is Process Parameter */
public boolean isProcess = false;
// Database Fields
public String ColumnName = "";
public String Header = "";
public int displayType = 0;
public int AD_Column_ID = 0;
public int DisplayLength = 0;
public boolean IsSameLine = false;
public boolean IsDisplayed = false;
public String DisplayLogic = "";
public String DefaultValue = "";
public boolean IsMandatory = false;
public boolean IsReadOnly = false;
public boolean IsUpdateable = false;
public boolean IsHeading = false;
public boolean IsFieldOnly = false;
public boolean IsEncryptedField = false;
public boolean IsSelectionColumn = false;
public int SortNo = 0;
public int FieldLength = 0;
public String VFormat = "";
public String ValueMin = "";
public String ValueMax = "";
public String FieldGroup = "";
public boolean IsKey = false;
public boolean IsParent = false;
public String Callout = "";
public int AD_Process_ID = 0;
public String Description = "";
public String Help = "";
public String ReadOnlyLogic = "";
// Process Parameter
public boolean isRange = false;
public String DefaultValue2 = "";
/** Lookup Value Object */
public MLookupInfo lookupInfo = null;
/**
* Set Context including contained elements
* @param newCtx new context
*/
public void setCtx (Properties newCtx)
{
ctx = newCtx;
if (lookupInfo != null)
lookupInfo.ctx = newCtx;
} // setCtx
/**
* Set Field as RowID
*/
public void initRowID()
{
displayType = DisplayType.RowID;
ColumnName = "ROWID";
IsDisplayed = false;
IsMandatory = false;
IsReadOnly = true;
IsUpdateable = false;
} // initRowID
/**
* Validate Fields and create LookupInfo if required
*/
protected void initFinish()
{
// Not null fields
if (DisplayLogic == null)
DisplayLogic = "";
if (DefaultValue == null)
DefaultValue = "";
if (FieldGroup == null)
FieldGroup = "";
if (Description == null)
Description = "";
if (Help == null)
Help = "";
if (Callout == null)
Callout = "";
if (ReadOnlyLogic == null)
ReadOnlyLogic = "";
// if (IsParent)
// displayType = DisplayType.ID;
// Create Lookup, if not ID
if (DisplayType.isLookup(displayType))
{
try
{
lookupInfo = MLookupFactory.createVO (ctx, AD_Column_ID, WindowNo, displayType, isProcess);
}
catch (Exception e) // Cannot create Lookup
{
Log.error("MFieldVO.initFinish - No LookupInfo for " + ColumnName);
displayType = DisplayType.ID;
}
}
} // initFinish
/*************************************************************************/
/**
* Return the SQL statement used for the MFieldVO.create
* @param mTabVO tab value object
* @return SQL with or w/o translation
*/
protected static String getSQL (MTabVO mTabVO)
{
// IsActive is part of View
String sql = "SELECT * FROM AD_Field_v WHERE AD_Tab_ID=?"
+ " ORDER BY SeqNo";
if (!Env.isBaseLanguage(mTabVO.ctx, "AD_Tab"))
sql = "SELECT * FROM AD_Field_vt WHERE AD_Tab_ID=?"
+ " AND AD_Language='" + Env.getAD_Language(mTabVO.ctx) + "'"
+ " ORDER BY SeqNo";
return sql;
} // getSQL
/**
* Create Field Value Object
* @param ctx context
* @param WindowNo window
* @param TabNo tab
* @param AD_Window_ID window
* @param readOnly r/o
* @param rs resultset
* @return MFieldVO
*/
public static MFieldVO create (Properties ctx, int WindowNo, int TabNo, int AD_Window_ID, boolean readOnly, ResultSet rs)
{
MFieldVO vo = new MFieldVO (ctx, WindowNo, TabNo, AD_Window_ID, readOnly);
try
{
vo.ColumnName = rs.getString("ColumnName");
if (vo.ColumnName == null)
return null;
Log.trace(Log.l5_DData, "MFieldVO.create", vo.ColumnName);
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); i++)
{
String columnName = rsmd.getColumnName (i);
if (columnName.equalsIgnoreCase("Name"))
vo.Header = rs.getString (i);
else if (columnName.equalsIgnoreCase("AD_Reference_ID"))
vo.displayType = rs.getInt (i);
else if (columnName.equalsIgnoreCase("AD_Column_ID"))
vo.AD_Column_ID = rs.getInt (i);
else if (columnName.equalsIgnoreCase("DisplayLength"))
vo.DisplayLength = rs.getInt (i);
else if (columnName.equalsIgnoreCase("IsSameLine"))
vo.IsSameLine = "Y".equals(rs.getString (i));
else if (columnName.equalsIgnoreCase("IsDisplayed"))
vo.IsDisplayed = "Y".equals(rs.getString (i));
else if (columnName.equalsIgnoreCase("DisplayLogic"))
vo.DisplayLogic = rs.getString (i);
else if (columnName.equalsIgnoreCase("DefaultValue"))
vo.DefaultValue = rs.getString (i);
else if (columnName.equalsIgnoreCase("IsMandatory"))
vo.IsMandatory = "Y".equals(rs.getString (i));
else if (columnName.equalsIgnoreCase("IsReadOnly"))
vo.IsReadOnly = "Y".equals(rs.getString (i));
else if (columnName.equalsIgnoreCase("IsUpdateable"))
vo.IsUpdateable = "Y".equals(rs.getString (i));
else if (columnName.equalsIgnoreCase("IsHeading"))
vo.IsHeading = "Y".equals(rs.getString (i));
else if (columnName.equalsIgnoreCase("IsFieldOnly"))
vo.IsFieldOnly = "Y".equals(rs.getString (i));
else if (columnName.equalsIgnoreCase("IsEncryptedField"))
vo.IsEncryptedField = "Y".equals(rs.getString (i));
else if (columnName.equalsIgnoreCase("IsSelectionColumn"))
vo.IsSelectionColumn = "Y".equals(rs.getString (i));
else if (columnName.equalsIgnoreCase("SortNo"))
vo.SortNo = rs.getInt (i);
else if (columnName.equalsIgnoreCase("FieldLength"))
vo.FieldLength = rs.getInt (i);
else if (columnName.equalsIgnoreCase("VFormat"))
vo.VFormat = rs.getString (i);
else if (columnName.equalsIgnoreCase("ValueMin"))
vo.ValueMin = rs.getString (i);
else if (columnName.equalsIgnoreCase("ValueMax"))
vo.ValueMax = rs.getString (i);
else if (columnName.equalsIgnoreCase("FieldGroup"))
vo.FieldGroup = rs.getString (i);
else if (columnName.equalsIgnoreCase("IsKey"))
vo.IsKey = "Y".equals(rs.getString (i));
else if (columnName.equalsIgnoreCase("IsParent"))
vo.IsParent = "Y".equals(rs.getString (i));
else if (columnName.equalsIgnoreCase("Description"))
vo.Description = rs.getString (i);
else if (columnName.equalsIgnoreCase("Help"))
vo.Help = rs.getString (i);
else if (columnName.equalsIgnoreCase("Callout"))
vo.Callout = rs.getString (i);
else if (columnName.equalsIgnoreCase("AD_Process_ID"))
vo.AD_Process_ID = rs.getInt (i);
else if (columnName.equalsIgnoreCase("ReadOnlyLogic"))
vo.ReadOnlyLogic = rs.getString (i);
}
if (vo.Header == null)
vo.Header = vo.ColumnName;
}
catch (SQLException e)
{
Log.error("MFieldVO.create", e);
return null;
}
vo.initFinish();
return vo;
} // create
/**
* Init Field for Process Parameter
* @param ctx context
* @param WindowNo window
* @param rs result set
* @return MFieldVO
*/
public static MFieldVO createParameter (Properties ctx, int WindowNo, ResultSet rs)
{
MFieldVO vo = new MFieldVO (ctx, WindowNo, 0, 0, false);
vo.isProcess = true;
vo.IsDisplayed = true;
vo.IsReadOnly = false;
vo.IsUpdateable = true;
try
{
vo.AD_Column_ID = rs.getInt("AD_Process_Para_ID");
vo.ColumnName = rs.getString("ColumnName");
vo.Header = rs.getString("Name");
vo.Description = rs.getString("Description");
vo.Help = rs.getString("Help");
vo.displayType = rs.getInt("AD_Reference_ID");
vo.IsMandatory = rs.getString("IsMandatory").equals("Y");
vo.FieldLength = rs.getInt("FieldLength");
vo.DisplayLength = vo.FieldLength;
vo.DefaultValue = rs.getString("DefaultValue");
vo.DefaultValue2 = rs.getString("DefaultValue2");
vo.VFormat = rs.getString("VFormat");
vo.ValueMin = rs.getString("ValueMin");
vo.ValueMax = rs.getString("ValueMax");
vo.isRange = rs.getString("IsRange").equals("Y");
}
catch (SQLException e)
{
Log.error("MFieldVO.createParameter", e);
}
//
vo.initFinish();
if (vo.DefaultValue2 == null)
vo.DefaultValue2 = "";
return vo;
} // createParameter
/**
* Create range "to" Parameter Field from "from" Parameter Field
* @param voF field value object
* @return to MFieldVO
*/
public static MFieldVO createParameter (MFieldVO voF)
{
MFieldVO voT = new MFieldVO (voF.ctx, voF.WindowNo, voF.TabNo, voF.AD_Window_ID, voF.tabReadOnly);
voT.isProcess = true;
voT.IsDisplayed = true;
voT.IsReadOnly = false;
voT.IsUpdateable = true;
//
voT.AD_Column_ID = voF.AD_Column_ID; // AD_Process_Para_ID
voT.ColumnName = voF.ColumnName;
voT.Header = voF.Header;
voT.Description = voF.Description;
voT.Help = voF.Help;
voT.displayType = voF.displayType;
voT.IsMandatory = voF.IsMandatory;
voT.FieldLength = voF.FieldLength;
voT.DisplayLength = voF.FieldLength;
voT.DefaultValue = voF.DefaultValue2;
voT.VFormat = voF.VFormat;
voT.ValueMin = voF.ValueMin;
voT.ValueMax = voF.ValueMax;
voT.isRange = voF.isRange;
//
return voT;
} // createParameter
/**
* Make it a Row ID
* @param ctx context
* @param WindowNo window
* @param TabNo tab
* @param AD_Window_ID window
* @return MFieldVO
*/
public static MFieldVO createRowID (Properties ctx, int WindowNo, int TabNo, int AD_Window_ID)
{
MFieldVO vo = new MFieldVO (ctx, WindowNo, TabNo, AD_Window_ID, true);
vo.initRowID();
vo.initFinish();
return vo;
} // initRowID
/**
* Make a standard field (Created/Updated/By)
* @param ctx context
* @param WindowNo window
* @param TabNo tab
* @param AD_Window_ID window
* @param tabReadOnly rab is r/o
* @param isCreated is Created field
* @param isTimestamp is the timestamp (not by)
* @return MFieldVO
*/
public static MFieldVO createStdField (Properties ctx, int WindowNo, int TabNo, int AD_Window_ID, boolean tabReadOnly,
boolean isCreated, boolean isTimestamp)
{
MFieldVO vo = new MFieldVO (ctx, WindowNo, TabNo, AD_Window_ID, tabReadOnly);
vo.ColumnName = isCreated ? "Created" : "Updated";
if (!isTimestamp)
vo.ColumnName += "By";
vo.displayType = isTimestamp ? DisplayType.DateTime : DisplayType.Integer;
vo.IsDisplayed = false;
vo.IsMandatory = false;
vo.IsReadOnly = false;
vo.IsUpdateable = true;
vo.initFinish();
return vo;
} // initStdField
} // MFieldVO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -