📄 mtabvo.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.*;
/**
* Model Tab Value Object
*
* @author Jorg Janke
* @version $Id: MTabVO.java,v 1.14 2002/09/14 05:27:40 jjanke Exp $
*/
public class MTabVO implements Serializable
{
/**
* Private constructor - must use Factory
*/
private MTabVO()
{
} // MTabVO
/** Context - replicated */
public Properties ctx;
/** Window No - replicated */
public int WindowNo;
/** AD Window - replicated */
public int AD_Window_ID;
/** Tab No (not AD_Tab_ID) */
public int TabNo;
// Database Fields
public int AD_Tab_ID;
public String Name = "";
public String Description = "";
public String Help = "";
public boolean IsSingleRow = false;
public boolean IsReadOnly = false;
public boolean HasTree = false;
public int AD_Table_ID;
/** Primary Parent Column */
public int AD_Column_ID = 0;
public String TableName;
public boolean IsView = false;
public String AccessLevel;
public boolean IsSecurityEnabled = false;
public boolean IsDeleteable = false;
public boolean IsHighVolume = false;
public int AD_Process_ID = 0;
public String CommitWarning;
public String WhereClause;
public String OrderByClause;
public int TabLevel = 0;
public int AD_Image_ID = 0;
//
public boolean IsSortTab = false;
public int AD_ColumnSortOrder_ID = 0;
public int AD_ColumnSortYesNo_ID = 0;
// Derived
public boolean onlyCurrentRows = true;
public int onlyCurrentDays = 1;
/** Fields contain MFieldVO entities */
public ArrayList Fields = null;
/**
* Set Context including contained elements
* @param newCtx new context
*/
public void setCtx (Properties newCtx)
{
ctx = newCtx;
for (int i = 0; i < Fields.size() ; i++)
{
MFieldVO field = (MFieldVO)Fields.get(i);
field.setCtx(newCtx);
}
} // setCtx
/**
* Return the SQL statement used for the MTabVO.create
* @param mWindowVO WindowVO
* @return SQL SELECT String
*/
protected static String getSQL (MWindowVO mWindowVO)
{
// View only returns IsActive='Y'
String sql = "SELECT * FROM AD_Tab_v WHERE AD_Window_ID=?"
+ " ORDER BY SeqNo";
if (!Env.isBaseLanguage(mWindowVO.ctx, "AD_Window"))
sql = "SELECT * FROM AD_Tab_vt WHERE AD_Window_ID=?"
+ " AND AD_Language='" + Env.getAD_Language(mWindowVO.ctx) + "'"
+ " ORDER BY SeqNo";
return sql;
} // getSQL
/*************************************************************************/
/**
* Create MTabVO
*
* @param wVO value object
* @param TabNo tab no
* @param rs ResultSet from AD_Tab_v
* @param isRO true if window is r/o
* @param onlyCurrentRows if true query is limited to not processed records
* @return TabVO
*/
public static MTabVO create(MWindowVO wVO, int TabNo, ResultSet rs, boolean isRO, boolean onlyCurrentRows)
{
Log.trace(Log.l3_Util, "MTabVO.create #" + TabNo);
MTabVO vo = new MTabVO ();
vo.ctx = wVO.ctx;
vo.WindowNo = wVO.WindowNo;
vo.AD_Window_ID = wVO.AD_Window_ID;
vo.TabNo = TabNo;
//
if (!getTabDetails(vo, rs))
return null;
if (isRO)
{
Log.trace(Log.l6_Database, "MTabVO.create", "Tab is ReadOnly");
vo.IsReadOnly = true;
}
vo.onlyCurrentRows = onlyCurrentRows;
// Create Fields
if (vo.IsSortTab)
{
vo.Fields = new ArrayList(); // dummy
}
else
{
createFields (vo);
if (vo.Fields == null || vo.Fields.size() == 0)
{
Log.error("MTabVO.create - No Fields");
return null;
}
}
return vo;
} // create
/**
* Create MTabVO
*
* @param ctx context
* @param WindowNo window
* @param AD_Table_ID table
* @return TabVO
*/
public static MTabVO create(Properties ctx, int WindowNo, int AD_Table_ID)
{
Log.trace(Log.l3_Util, "MTabVO.create");
MTabVO vo = new MTabVO ();
vo.ctx = ctx;
vo.WindowNo = WindowNo;
vo.AD_Window_ID = 0;
vo.TabNo = 0;
//
boolean resultOK = false;
String sql = "SELECT * FROM AD_Tab_v WHERE AD_Table_ID=?";
if (!Env.isBaseLanguage(ctx, "AD_Tab"))
sql = "SELECT * FROM AD_Tab_vt WHERE AD_Table_ID=?"
+ " AND AD_Language='" + Env.getAD_Language(ctx) + "'";
try
{
PreparedStatement pstmt = DB.prepareStatement(sql);
pstmt.setInt(1, AD_Table_ID);
ResultSet rs = pstmt.executeQuery();
//
if (rs.next())
resultOK = getTabDetails(vo, rs);
else
Log.trace(Log.l6_Database, "MTabVO.create", "No Tab for AD_Table_ID=" + AD_Table_ID);
//
rs.close();
pstmt.close();
}
catch (SQLException e)
{
Log.error("MTabVO.create(1)", e);
}
if (!resultOK)
return null;
// Create Fields
if (vo.IsSortTab)
{
vo.Fields = new ArrayList(); // dummy
}
else
{
createFields (vo);
if (vo.Fields == null || vo.Fields.size() == 0)
{
Log.error("MTabVO.create - No Fields");
return null;
}
}
return vo;
} // create
/**
* Get Tab Details
* @param vo Tab value object
* @param rs ResultSet from AD_Tab_v
* @return true if read ok
*/
private static boolean getTabDetails (MTabVO vo, ResultSet rs)
{
try
{
vo.AD_Tab_ID = rs.getInt("AD_Tab_ID");
Env.setContext(vo.ctx, vo.WindowNo, vo.TabNo, "AD_Tab_ID", String.valueOf(vo.AD_Tab_ID));
vo.Name = rs.getString("Name");
Env.setContext(vo.ctx, vo.WindowNo, vo.TabNo, "Name", vo.Name);
// Translation Tab
boolean showTrl = Env.getContext(vo.ctx, "#ShowTrl").equals("Y") && Env.isMultiLingualDocument(vo.ctx);
if (!showTrl && rs.getString("IsTranslationTab").equals("Y"))
{
Log.trace(Log.l5_DData, "MTabVO.getTabDetails", "NoTranslationTab - AD_Tab_ID=" + vo.AD_Tab_ID + " " + vo.Name);
return false;
}
// Accounting Info Tab
boolean showAcct = Env.getContext(vo.ctx, "#ShowAcct").equals("Y");
if (!showAcct && rs.getString("IsInfoTab").equals("Y"))
{
Log.trace(Log.l5_DData, "MTabVO.getTabDetails", "NoAcctTab - AD_Tab_ID=" + vo.AD_Tab_ID + " " + vo.Name);
return false;
}
// Access
vo.AccessLevel = rs.getString("AccessLevel");
if (!Access.canViewInsert(vo.ctx, vo.AccessLevel, false)) // No Access
{
Log.trace(Log.l5_DData, "MTabVO.getTabDetails", "NoAccess - AD_Tab_ID=" + vo.AD_Tab_ID + " " +vo. Name);
return false;
}
Env.setContext(vo.ctx, vo.WindowNo, vo.TabNo, "AccessLevel", vo.AccessLevel);
//
vo.Description = rs.getString("Description");
if (vo.Description == null)
vo.Description = "";
vo.Help = rs.getString("Help");
if (vo.Help == null)
vo.Help = "";
if (rs.getString("IsSingleRow").equals("Y"))
vo.IsSingleRow = true;
if (rs.getString("IsReadOnly").equals("Y"))
vo.IsReadOnly = true;
if (rs.getString("HasTree").equals("Y"))
vo.HasTree = true;
vo.AD_Table_ID = rs.getInt("AD_Table_ID");
vo.TableName = rs.getString("TableName");
if (rs.getString("IsView").equals("Y"))
vo.IsView = true;
vo.AD_Column_ID = rs.getInt("AD_Column_ID"); // Primary Parent Column
if (rs.getString("IsSecurityEnabled").equals("Y"))
vo.IsSecurityEnabled = true;
if (rs.getString("IsDeleteable").equals("Y"))
vo.IsDeleteable = true;
if (rs.getString("IsHighVolume").equals("Y"))
vo.IsHighVolume = true;
vo.CommitWarning = rs.getString("CommitWarning");
if (vo.CommitWarning == null)
vo.CommitWarning = "";
vo.WhereClause = rs.getString("WhereClause");
if (vo.WhereClause == null)
vo.WhereClause = "";
vo.OrderByClause = rs.getString("OrderByClause");
if (vo.OrderByClause == null)
vo.OrderByClause = "";
vo.AD_Process_ID = rs.getInt("AD_Process_ID");
if (rs.wasNull())
vo.AD_Process_ID = 0;
vo.AD_Image_ID = rs.getInt("AD_Image_ID");
if (rs.wasNull())
vo.AD_Image_ID = 0;
//
vo.TabLevel = rs.getInt("TabLevel");
if (rs.wasNull())
vo.TabLevel = 0;
//
vo.IsSortTab = rs.getString("IsSortTab").equals("Y");
if (vo.IsSortTab)
{
vo.AD_ColumnSortOrder_ID = rs.getInt("AD_ColumnSortOrder_ID");
vo.AD_ColumnSortYesNo_ID = rs.getInt("AD_ColumnSortYesNo_ID");
}
}
catch (SQLException ex)
{
Log.error("MTabVO.getTabDetails", ex);
return false;
}
return true;
} // getTabDetails
/*************************************************************************/
/**
* Create Tab Fields
* @param mTabVO tab value object
* @return true if fields were created
*/
private static boolean createFields (MTabVO mTabVO)
{
mTabVO.Fields = new ArrayList();
String sql = MFieldVO.getSQL(mTabVO);
try
{
PreparedStatement pstmt = DB.prepareStatement(sql);
pstmt.setInt(1, mTabVO.AD_Tab_ID);
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
MFieldVO voF = MFieldVO.create (mTabVO.ctx, mTabVO.WindowNo, mTabVO.TabNo, mTabVO.AD_Window_ID, mTabVO.IsReadOnly, rs);
if (voF != null)
mTabVO.Fields.add(voF);
}
rs.close();
pstmt.close();
}
catch (Exception e)
{
Log.error("MTabVO.createFields", e);
return false;
}
return mTabVO.Fields.size() != 0;
} // createFields
} // MTabVO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -