/*************************************************************************************
* Product: SFAndroid (Sales Force Mobile) *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* Copyright (C) 2012-2014 E.R.P. Consultores y Asociados, S.A. All Rights Reserved. *
* Contributor(s): Yamel Senih www.erpconsultoresyasociados.com *
*************************************************************************************/
package org.spinsuite.view.lookup;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.logging.Level;
import org.spinsuite.base.DB;
import org.spinsuite.util.DisplayType;
import org.spinsuite.util.Env;
import org.spinsuite.util.FilterValue;
import org.spinsuite.util.LogM;
import android.content.Context;
import android.database.Cursor;
import android.util.Log;
/**
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a>
*
*/
public class InfoTab {
/**
* *** Constructor ***
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 13:07:07
* @param ctx
* @param SFA_Tab_ID
* @param conn
*/
public InfoTab(Context ctx, int SFA_Tab_ID, DB conn){
loadInfoColumnField(ctx, SFA_Tab_ID, false, conn);
}
/**
*
* *** Constructor ***
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 17/03/2014, 23:29:52
* @param ctx
* @param SFA_Tab_ID
* @param onlySelectionColumn
* @param conn
*/
public InfoTab(Context ctx, int SFA_Tab_ID, boolean onlySelectionColumn, DB conn){
loadInfoColumnField(ctx, SFA_Tab_ID, onlySelectionColumn, conn);
}
/** Fields */
private InfoField[] m_fields = null;
/** Tab Name */
private String TabName = null;
private int SFA_Tab_ID = 0;
private int SFA_Table_ID = 0;
private String TableName = null;
private int SFA_Window_ID = 0;
private int AD_Process_ID = 0;
private String Classname = null;
private String TabDescription = null;
private String TabHelp = null;
private boolean TabIsInsertRecord = false;
private boolean TabIsReadOnly = false;
private String OrderByClause = null;
private int Parent_Column_ID = 0;
private int TabSFA_Column_ID = 0;
private int TabSeqNo = 0;
private int TabLevel = 0;
private String WhereClause = null;
private FilterValue filterValue = null;
/** Parents Fields */
private InfoField [] m_parentFields = null;
private static final int HEADER_INDEX = 17;
/**
* Get Where Clause
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:16:35
* @return
* @return String
*/
public String getWhereClause() {
return WhereClause;
}
/**
* Get Tab Level
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:16:07
* @return
* @return int
*/
public int getTabLevel() {
return TabLevel;
}
/**
* Get Tab Sequence
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:15:38
* @return
* @return int
*/
public int getTabSeqNo() {
return TabSeqNo;
}
/**
* Get Tab SFA Column Identifier
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:15:01
* @return
* @return int
*/
public int getTabSFA_Column_ID() {
return TabSFA_Column_ID;
}
/**
* Get Parent Column Identifier
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:14:19
* @return
* @return int
*/
public int getParent_Column_ID() {
return Parent_Column_ID;
}
/**
* Get Order By Clause
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:13:50
* @return
* @return String
*/
public String getOrderByClause() {
return OrderByClause;
}
/**
* Get Tab Is Read Only
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:13:20
* @return
* @return boolean
*/
public boolean getTabIsReadOnly() {
return TabIsReadOnly;
}
/**
* Is Insert Record
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:11:34
* @return
* @return boolean
*/
public boolean getTabIsInsertRecord() {
return TabIsInsertRecord;
}
/**
* Get Tab Help
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:10:59
* @return
* @return String
*/
public String getTabHelp() {
return TabHelp;
}
/**
* Get Tab Description
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:10:04
* @return
* @return String
*/
public String getTabDescription() {
return TabDescription;
}
/**
* Get Class Name
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:09:28
* @return
* @return String
*/
public String getClassname() {
return Classname;
}
/**
* Get Process Identifier
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:08:45
* @return
* @return int
*/
public int getAD_Process_ID() {
return AD_Process_ID;
}
/**
* Get Window Identifier
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:08:15
* @return
* @return int
*/
public int getSFA_Window_ID() {
return SFA_Window_ID;
}
/**
* Get Table Identifier
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:07:41
* @return
* @return int
*/
public int getSFA_Table_ID(){
return SFA_Table_ID;
}
/**
* Get Tab Identifier
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:07:00
* @return
* @return int
*/
public int getSFA_Tab_ID(){
return SFA_Tab_ID;
}
/**
* Get Tab Name
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 18:06:30
* @return
* @return String
*/
public String getTabName(){
return TabName;
}
/**
* Load Info Fields
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 17/03/2014, 23:27:15
* @param ctx
* @param SFA_Tab_ID
* @param onlySelection
* @param p_Conn
* @return void
*/
private void loadInfoColumnField(Context ctx, int SFA_Tab_ID, boolean onlySelection,DB p_Conn){
// Is Mandatory
if(SFA_Tab_ID == 0)
return;
//
String language = Env.getAD_Language(ctx);
boolean isBaseLanguage = Env.isBaseLanguage(ctx);
StringBuffer sql = new StringBuffer();
// if Base Language
if(isBaseLanguage){
sql.append("SELECT t.Name, t.SFA_Tab_ID, t.SFA_Table_ID,t.SFA_Window_ID, t.AD_Process_ID, tb.TableName, " +
"t.Classname,t.Description, t.Help, t.IsInsertRecord, t.IsReadOnly, t.OrderByClause, " +
"t.Parent_Column_ID,t.SFA_Column_ID, t.SeqNo, t.TabLevel, t.WhereClause, c.AD_Element_ID, " +
"CASE WHEN f.AD_Reference_ID IS NOT NULL THEN f.AD_Reference_ID ELSE C.AD_Reference_ID END AD_Reference_ID, " +
"CASE WHEN f.AD_Reference_Value_ID IS NOT NULL THEN f.AD_Reference_Value_ID ELSE c.AD_Reference_Value_ID END AD_Reference_Value_ID, " +
"CASE WHEN f.AD_Val_Rule_ID IS NOT NULL THEN f.AD_Val_Rule_ID ELSE c.AD_Val_Rule_ID END AD_Val_Rule_ID, " +
"c.Callout, c.ColumnName, c.ColumnSQL, c.DefaultValue, c.EntityType, c.FieldLength, " +
"c.FormatPattern, c.IsAlwaysUpdateable, c.IsCentrallyMaintained, c.IsEncrypted, c.IsIdentifier, c.IsKey, " +
"CASE WHEN f.IsMandatory = 'Y' THEN f.IsMandatory ELSE c.IsMandatory END IsMandatory, " +
"c.IsParent, c.IsSelectionColumn, c.IsUpdateable, c.SelectionSeqNo, " +
"c.SeqNo, c.SFA_Column_ID, c.SFA_Table_ID, c.ValueMax, c.ValueMin, c.VFormat, " +
// Fields
"f.Name, f.Description, f.Help, f.AD_FieldGroup_ID, f.DisplayLogic, f.IsActive, f.IsDisplayed, " +
"f.IsReadOnly, f.IsSameLine, f.SeqNo, f.SFA_Field_ID " +
// From
"FROM SFA_Tab t " +
"INNER JOIN SFA_Table tb ON(tb.SFA_Table_ID = t.SFA_Table_ID) " +
"INNER JOIN SFA_Field f ON(f.SFA_Tab_ID = t.SFA_Tab_ID) " +
"INNER JOIN SFA_Column c ON(c.SFA_Column_ID = f.SFA_Column_ID) ");
} else {
sql.append("SELECT tt.Name, t.SFA_Tab_ID, t.SFA_Table_ID,t.SFA_Window_ID, t.AD_Process_ID, tb.TableName, " +
"t.Classname,tt.Description, tt.Help, t.IsInsertRecord, t.IsReadOnly, t.OrderByClause, " +
"t.Parent_Column_ID,t.SFA_Column_ID,t.SeqNo, t.TabLevel, t.WhereClause, c.AD_Element_ID, " +
"CASE WHEN f.AD_Reference_ID IS NOT NULL THEN f.AD_Reference_ID ELSE C.AD_Reference_ID END AD_Reference_ID, " +
"CASE WHEN f.AD_Reference_Value_ID IS NOT NULL THEN f.AD_Reference_Value_ID ELSE c.AD_Reference_Value_ID END AD_Reference_Value_ID, " +
"CASE WHEN f.AD_Val_Rule_ID IS NOT NULL THEN f.AD_Val_Rule_ID ELSE c.AD_Val_Rule_ID END AD_Val_Rule_ID, " +
"c.Callout, c.ColumnName, c.ColumnSQL, c.DefaultValue, c.EntityType, c.FieldLength, " +
"c.FormatPattern, c.IsAlwaysUpdateable, c.IsCentrallyMaintained, c.IsEncrypted, c.IsIdentifier, c.IsKey, " +
"CASE WHEN f.IsMandatory = 'Y' THEN f.IsMandatory ELSE c.IsMandatory END IsMandatory, " +
"c.IsParent, c.IsSelectionColumn, c.IsUpdateable, c.SelectionSeqNo, " +
"c.SeqNo, c.SFA_Column_ID, c.SFA_Table_ID, c.ValueMax, c.ValueMin, c.VFormat, " +
// Fields
"ft.Name, ft.Description, ft.Help, f.AD_FieldGroup_ID, f.DisplayLogic, f.IsActive, f.IsDisplayed, " +
"f.IsReadOnly, f.IsSameLine, f.SeqNo, f.SFA_Field_ID " +
// From
"FROM SFA_Tab t " +
"INNER JOIN SFA_Table tb ON(tb.SFA_Table_ID = t.SFA_Table_ID) " +
"INNER JOIN SFA_Tab_Trl tt ON(tt.SFA_Tab_ID = t.SFA_Tab_ID AND tt.AD_Language = '").append(language).append("') " +
"INNER JOIN SFA_Field f ON(f.SFA_Tab_ID = t.SFA_Tab_ID) " +
"INNER JOIN SFA_Field_Trl ft ON(ft.SFA_Field_ID = f.SFA_Field_ID AND ft.AD_Language = '").append(language).append("') " +
"INNER JOIN SFA_Column c ON(c.SFA_Column_ID = f.SFA_Column_ID) ");
}
// Where
sql.append("WHERE t.IsActive = 'Y' ")
.append("AND f.IsActive = 'Y' ")
.append("AND t.SFA_Tab_ID = ").append(SFA_Tab_ID).append(" ");
// Only Selection Columns
if(onlySelection)
sql.append("AND c.IsSelectionColumn = 'Y' ");
// Order By
sql.append("ORDER BY f.SeqNo");
LogM.log(ctx, getClass(), Level.FINE, "SQL TableInfo SQL:" + sql);
ArrayList<InfoField> columns = new ArrayList<InfoField>();
DB conn = null;
if(p_Conn != null)
conn = p_Conn;
else
conn = new DB(ctx);
if(!conn.isOpen())
conn.openDB(DB.READ_ONLY);
Cursor rs = null;
rs = conn.querySQL(sql.toString(), null);
if(rs.moveToFirst()){
int i = 0;
//
TabName = rs.getString(i++);
this.SFA_Tab_ID = rs.getInt(i++);
SFA_Table_ID = rs.getInt(i++);
SFA_Window_ID = rs.getInt(i++);
AD_Process_ID = rs.getInt(i++);
TableName = rs.getString(i++);
Classname = rs.getString(i++);
TabDescription = rs.getString(i++);
TabHelp = rs.getString(i++);
TabIsInsertRecord = rs.getString(i++).equals("Y");
TabIsReadOnly = rs.getString(i++).equals("Y");
OrderByClause = rs.getString(i++);
Parent_Column_ID = rs.getInt(i++);
TabSFA_Column_ID = rs.getInt(i++);
TabSeqNo = rs.getInt(i++);
TabLevel = rs.getInt(i++);
WhereClause = rs.getString(i++);
//
do{
InfoField iFieldColumn = new InfoField();
String booleanValue = null;
iFieldColumn.AD_Element_ID = rs.getInt(i++);
iFieldColumn.DisplayType = rs.getInt(i++);
iFieldColumn.AD_Reference_Value_ID = rs.getInt(i++);
iFieldColumn.AD_Val_Rule_ID = rs.getInt(i++);
iFieldColumn.Callout = rs.getString(i++);
iFieldColumn.ColumnName = rs.getString(i++);
iFieldColumn.ColumnSQL = rs.getString(i++);
iFieldColumn.DefaultValue = rs.getString(i++);
iFieldColumn.EntityType = rs.getString(i++);
iFieldColumn.FieldLength = rs.getInt(i++);
iFieldColumn.FormatPattern = rs.getString(i++);
booleanValue = rs.getString(i++);
iFieldColumn.IsAlwaysUpdateable = (booleanValue != null && booleanValue.equals("Y"));
booleanValue = rs.getString(i++);
iFieldColumn.IsCentrallyMaintained = (booleanValue != null && booleanValue.equals("Y"));
booleanValue = rs.getString(i++);
iFieldColumn.IsEncrypted= (booleanValue != null && booleanValue.equals("Y"));
booleanValue = rs.getString(i++);
iFieldColumn.IsIdentifier= (booleanValue != null && booleanValue.equals("Y"));
booleanValue = rs.getString(i++);
iFieldColumn.IsKey= (booleanValue != null && booleanValue.equals("Y"));
booleanValue = rs.getString(i++);
iFieldColumn.IsMandatory= (booleanValue != null && booleanValue.equals("Y"));
booleanValue = rs.getString(i++);
iFieldColumn.IsParent= (booleanValue != null && booleanValue.equals("Y"));
booleanValue = rs.getString(i++);
iFieldColumn.IsSelectionColumn = (booleanValue != null && booleanValue.equals("Y"));
booleanValue = rs.getString(i++);
iFieldColumn.IsUpdateable = (booleanValue != null && booleanValue.equals("Y"));
iFieldColumn.SelectionSeqNo = rs.getInt(i++);
iFieldColumn.SeqNo = rs.getInt(i++);
iFieldColumn.SFA_Column_ID= rs.getInt(i++);
iFieldColumn.SFA_Table_ID= rs.getInt(i++);
iFieldColumn.ValueMax = rs.getString(i++);
iFieldColumn.ValueMin = rs.getString(i++);
iFieldColumn.VFormat = rs.getString(i++);
// Fields
iFieldColumn.Name = rs.getString(i++);
iFieldColumn.Description = rs.getString(i++);
iFieldColumn.Help = rs.getString(i++);
iFieldColumn.AD_FieldGroup_ID = rs.getInt(i++);
iFieldColumn.DisplayLogic = rs.getString(i++);
booleanValue = rs.getString(i++);
iFieldColumn.IsActive = (booleanValue != null && booleanValue.equals("Y"));
booleanValue = rs.getString(i++);
iFieldColumn.IsDisplayed = (booleanValue != null && booleanValue.equals("Y"));
booleanValue = rs.getString(i++);
iFieldColumn.IsReadOnly = (booleanValue != null && booleanValue.equals("Y"));
booleanValue = rs.getString(i++);
iFieldColumn.IsSameLine = (booleanValue != null && booleanValue.equals("Y"));
iFieldColumn.FieldSeqNo = rs.getInt(i++);
iFieldColumn.SFA_Field_ID = rs.getInt(i++);
// Add Field
columns.add(iFieldColumn);
// Set index
i = HEADER_INDEX;
}while(rs.moveToNext());
}
// Close DB
if(p_Conn == null)
conn.closeDB(rs);
// Convert Array
m_fields = new InfoField[columns.size()];
columns.toArray(m_fields);
Log.d("Size ", "- " + m_fields.length);
}
/**
* Return Field Array
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 21/02/2014, 16:25:29
* @return
* @return VOInfoField[]
*/
public InfoField[] getFields(){
return m_fields;
}
/**
* Get Table Name
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 24/02/2014, 20:47:27
* @return
* @return String
*/
public String getTableName(){
return TableName;
}
/**
* Get Key Column Name
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 16/03/2014, 12:04:31
* @return
* @return String
*/
public String getTableKeyName(){
return TableName + "_ID";
}
/**
* Get AD_Element
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:36:22
* @param index
* @return
* @return int
*/
public int getAD_Element_ID(int index) {
if(m_fields == null || index <= 0)
return 0;
return m_fields[index].AD_Element_ID;
}
/**
* Get Display Type
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:37:35
* @param index
* @return
* @return int
*/
public int getDisplayType(int index) {
if(m_fields == null || index <= 0)
return 0;
return m_fields[index].DisplayType;
}
/**
* Get Reference Value
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:39:00
* @param index
* @return
* @return int
*/
public int getAD_Reference_Value_ID(int index) {
if(m_fields == null || index <= 0)
return 0;
return m_fields[index].AD_Reference_Value_ID;
}
/**
* Get Validation
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:39:11
* @param index
* @return
* @return int
*/
public int AD_Val_Rule_ID(int index) {
if(m_fields == null || index <= 0)
return 0;
return m_fields[index].AD_Val_Rule_ID;
}
/**
* Get Call Out
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:39:21
* @param index
* @return
* @return String
*/
public String getCallout(int index) {
if(m_fields == null || index <= 0)
return null;
return m_fields[index].Callout;
}
/**
* Get Column Name
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:41:37
* @param index
* @return
* @return String
*/
public String getColumnName(int index) {
if(m_fields == null || index <= 0)
return null;
return m_fields[index].ColumnName;
}
/**
* Get Column SQL
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:41:56
* @param index
* @return
* @return String
*/
public String getColumnSQL(int index) {
if(m_fields == null || index <= 0)
return null;
return m_fields[index].ColumnSQL;
}
public String getDefaultValue(int index) {
if(m_fields == null || index <= 0)
return null;
return m_fields[index].DefaultValue;
}
/**
* Get Entity Type
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:42:05
* @param index
* @return
* @return String
*/
public String getEntityType(int index) {
if(m_fields == null || index <= 0)
return null;
return m_fields[index].EntityType;
}
/**
* Get Field Lenght
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:42:12
* @param index
* @return
* @return int
*/
public int getFieldLength(int index) {
if(m_fields == null || index <= 0)
return 0;
return m_fields[index].FieldLength;
}
/**
* Get Formatt Pattern
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:45:52
* @param index
* @return
* @return String
*/
public String getFormatPattern(int index) {
if(m_fields == null || index <= 0)
return null;
return m_fields[index].FormatPattern;
}
/**
* Get Always Updateable
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:46:03
* @param index
* @return
* @return boolean
*/
public boolean isAlwaysUpdateable(int index) {
if(m_fields == null || index <= 0)
return false;
return m_fields[index].IsAlwaysUpdateable;
}
/**
* Is Centrally Maintained
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:46:18
* @param index
* @return
* @return boolean
*/
public boolean isCentrallyMaintained(int index) {
if(m_fields == null || index <= 0)
return false;
return m_fields[index].IsCentrallyMaintained;
}
/**
* Is Encrypted
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:46:33
* @param index
* @return
* @return boolean
*/
public boolean isEncrypted(int index) {
if(m_fields == null || index <= 0)
return false;
return m_fields[index].IsEncrypted;
}
/**
* Is Identifier
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:46:40
* @param index
* @return
* @return boolean
*/
public boolean isIdentifier(int index) {
if(m_fields == null || index <= 0)
return false;
return m_fields[index].IsIdentifier;
}
/**
* Is Selection Column
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:52:58
* @param index
* @return
* @return boolean
*/
public boolean isSelectionColumn(int index) {
if(m_fields == null || index <= 0)
return false;
return m_fields[index].IsSelectionColumn;
}
/**
* Is Key
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:53:08
* @param index
* @return
* @return boolean
*/
public boolean isKey(int index) {
if(m_fields == null || index <= 0)
return false;
return m_fields[index].IsKey;
}
/**
* Is Mandatory
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:53:14
* @param index
* @return
* @return boolean
*/
public boolean isMandatory(int index) {
if(m_fields == null || index <= 0)
return false;
return m_fields[index].IsMandatory;
}
/**
* Is Parent Link Column
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:53:20
* @param index
* @return
* @return boolean
*/
public boolean isParent(int index) {
if(m_fields == null || index <= 0)
return false;
return m_fields[index].IsParent;
}
/**
* Is Updateable
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:53:34
* @param index
* @return
* @return boolean
*/
public boolean isUpdateable(int index) {
if(m_fields == null || index <= 0)
return false;
return m_fields[index].IsUpdateable;
}
/**
* Is Active
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:53:44
* @param index
* @return
* @return boolean
*/
public boolean isActive(int index) {
if(m_fields == null || index <= 0)
return false;
return m_fields[index].IsActive;
}
/**
* Is Displayed
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:53:53
* @param index
* @return
* @return boolean
*/
public boolean isDisplayed(int index) {
if(m_fields == null || index <= 0)
return false;
return m_fields[index].IsDisplayed;
}
/**
* Is Read Only
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:54:03
* @param index
* @return
* @return boolean
*/
public boolean isReadOnly(int index) {
if(m_fields == null || index <= 0)
return false;
return m_fields[index].IsReadOnly;
}
/**
* Is Same Line
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:54:11
* @param index
* @return
* @return boolean
*/
public boolean isSameLine(int index) {
if(m_fields == null || index <= 0)
return false;
return m_fields[index].IsSameLine;
}
/**
* Get Selection Column Sequence
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:54:20
* @param index
* @return
* @return int
*/
public int getSelectionSeqNo(int index) {
if(m_fields == null || index <= 0)
return 0;
return m_fields[index].SelectionSeqNo;
}
/**
* Get Sequence
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:54:30
* @param index
* @return
* @return int
*/
public int getSeqNo(int index) {
if(m_fields == null || index <= 0)
return 0;
return m_fields[index].SeqNo;
}
/**
* Get SFA Column Identifier
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:54:36
* @param index
* @return
* @return int
*/
public int getSFA_Column_ID(int index) {
if(m_fields == null || index <= 0)
return 0;
return m_fields[index].SFA_Column_ID;
}
/**
* Get SFA Table Identifier
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:54:57
* @param index
* @return
* @return int
*/
public int getSFA_Table_ID(int index) {
if(m_fields == null || index <= 0)
return 0;
return m_fields[index].SFA_Table_ID;
}
/**
* Get Max Value
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:55:15
* @param index
* @return
* @return String
*/
public String getValueMax(int index) {
if(m_fields == null || index <= 0)
return null;
return m_fields[index].ValueMax;
}
/**
* Get Min Value
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:55:30
* @param index
* @return
* @return String
*/
public String getValueMin(int index) {
if(m_fields == null || index <= 0)
return null;
return m_fields[index].ValueMin;
}
/**
* Get View Formatt
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:55:48
* @param index
* @return
* @return String
*/
public String getVFormat(int index) {
if(m_fields == null || index <= 0)
return null;
return m_fields[index].VFormat;
}
/**
* Get Name
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:55:57
* @param index
* @return
* @return String
*/
public String getName(int index) {
if(m_fields == null || index <= 0)
return null;
return m_fields[index].Name;
}
/**
* Get Description
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:59:31
* @param index
* @return
* @return String
*/
public String getDescription(int index) {
if(m_fields == null || index <= 0)
return null;
return m_fields[index].Description;
}
/**
* Get Help
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:59:40
* @param index
* @return
* @return String
*/
public String getHelp(int index) {
if(m_fields == null || index <= 0)
return null;
return m_fields[index].Help;
}
/**
* Get Field Group Identifier
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 12:59:53
* @param index
* @return
* @return int
*/
public int getAD_FieldGroup_ID(int index) {
if(m_fields == null || index <= 0)
return 0;
return m_fields[index].AD_FieldGroup_ID;
}
/**
* Get Display Type
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 13:00:10
* @param index
* @return
* @return String
*/
public String getDisplayLogic(int index) {
if(m_fields == null || index <= 0)
return null;
return m_fields[index].DisplayLogic;
}
/**
* Get Field Sequence
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 13:00:19
* @param index
* @return
* @return int
*/
public int getFieldSeqNo(int index) {
if(m_fields == null || index <= 0)
return 0;
return m_fields[index].FieldSeqNo;
}
/**
* Get SFA Field Identifier
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 13:00:30
* @param index
* @return
* @return int
*/
public int getSFA_Field_ID(int index) {
if(m_fields == null || index <= 0)
return 0;
return m_fields[index].SFA_Field_ID;
}
/**
* Get Lenght
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 13:18:38
* @return
* @return int
*/
public int getLength(){
if(m_fields == null)
return 0;
return m_fields.length;
}
/**
* Get Field
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 22/02/2014, 13:22:52
* @param index
* @return
* @return VOInfoField
*/
public InfoField getField(int index){
if(m_fields == null || index <= 0)
return null;
return m_fields[index];
}
/**
* Get field from column identifier
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 13/03/2014, 18:11:04
* @param SFA_Column_ID
* @return
* @return VOInfoField
*/
public InfoField getFieldFromColumn(int SFA_Column_ID){
if(m_fields == null || SFA_Column_ID <= 0)
return null;
// Get from column
for(InfoField field : m_fields){
if(field.SFA_Column_ID == SFA_Column_ID)
return field;
}
return null;
}
/**
* Get Parent fields
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 13/03/2014, 17:39:23
* @param reQuery
* @return
* @return VOInfoField[]
*/
public InfoField [] getParentField(boolean reQuery){
if(reQuery
|| m_parentFields == null) {
ArrayList<InfoField> parentFields = new ArrayList<InfoField>();
// Loop
for(InfoField field : m_fields){
if(field.IsParent)
parentFields.add(field);
}
m_parentFields = new InfoField[parentFields.size()];
parentFields.toArray(m_parentFields);
}
// Return cache
return m_parentFields;
}
/**
* Get Criteria
* @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 01/04/2014, 20:53:10
* @param ctx
* @param m_WindowNo
* @param m_Parent_TabNo
* @return
* @return FilterValue
*/
public FilterValue getCriteria(Context ctx, int m_WindowNo, int m_Parent_TabNo){
// Cache
if(filterValue != null)
return filterValue;
// Load
InfoField [] parentFields = null;
// Is Parent by Tab
if(getParent_Column_ID() != 0)
parentFields = new InfoField[]{getFieldFromColumn(getParent_Column_ID())};
else
parentFields = getParentField(false);
//
StringBuffer sqlWhere = new StringBuffer();
//
filterValue = new FilterValue();
for(InfoField field : parentFields){
if(sqlWhere.length() > 0)
sqlWhere.append(" AND ");
// Add Criteria Column Filter
sqlWhere.append(field.ColumnName).append(" = ?");
// Add Value
filterValue.addValue(DisplayType.getContextValue(ctx,
m_WindowNo, m_Parent_TabNo, field));
}
// Set Where
filterValue.setWhereClause(sqlWhere.toString());
return filterValue;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "InfoTab [m_fields=" + Arrays.toString(m_fields) + ", TabName="
+ TabName + ", SFA_Tab_ID=" + SFA_Tab_ID + ", SFA_Table_ID="
+ SFA_Table_ID + ", TableName=" + TableName
+ ", SFA_Window_ID=" + SFA_Window_ID + ", AD_Process_ID="
+ AD_Process_ID + ", Classname=" + Classname
+ ", TabDescription=" + TabDescription + ", TabHelp=" + TabHelp
+ ", TabIsInsertRecord=" + TabIsInsertRecord
+ ", TabIsReadOnly=" + TabIsReadOnly + ", OrderByClause="
+ OrderByClause + ", Parent_Column_ID=" + Parent_Column_ID
+ ", TabSFA_Column_ID=" + TabSFA_Column_ID + ", TabSeqNo="
+ TabSeqNo + ", TabLevel=" + TabLevel + ", WhereClause="
+ WhereClause + ", filterValue=" + filterValue
+ ", m_parentFields=" + Arrays.toString(m_parentFields) + "]";
}
}