📄 mquery.java
字号:
return;
Restriction r = new Restriction (whereClause);
m_list.add(r);
m_newRecord = whereClause.equals(NEWRECORD);
} // addRestriction
/**
* New Record Query
* @return true if new nercord query
*/
public boolean isNewRecordQuery()
{
return m_newRecord;
} // isNewRecord
/*************************************************************************
* Create the resulting Query WHERE Clause
* @return Where Clause
*/
public String getWhereClause ()
{
return getWhereClause(false);
} // getWhereClause
/**
* Create the resulting Query WHERE Clause
* @param fullyQualified fully qualified Table.ColumnName
* @return Where Clause
*/
public String getWhereClause (boolean fullyQualified)
{
boolean qualified = fullyQualified;
if (qualified && (m_TableName == null || m_TableName.length() == 0))
qualified = false;
//
StringBuffer sb = new StringBuffer();
for (int i = 0; i < m_list.size(); i++)
{
Restriction r = (Restriction)m_list.get(i);
if (i != 0)
sb.append(r.andCondition ? " AND " : " OR ");
if (qualified)
sb.append(r.getSQL(m_TableName));
else
sb.append(r.getSQL(null));
}
return sb.toString();
} // getWhereClause
/**
* Get printable Query Info
* @return info
*/
public String getInfo ()
{
StringBuffer sb = new StringBuffer();
if (m_TableName != null)
sb.append(m_TableName).append(": ");
//
for (int i = 0; i < m_list.size(); i++)
{
Restriction r = (Restriction)m_list.get(i);
if (i != 0)
sb.append(r.andCondition ? " AND " : " OR ");
//
sb.append(r.getInfoName())
.append(r.getInfoOperator())
.append(r.getInfoDisplayAll());
}
return sb.toString();
} // getInfo
/**
* Create Query WHERE Clause.
* Not fully qualified
* @param index restriction index
* @return Where Clause or "" if not valid
*/
public String getWhereClause (int index)
{
StringBuffer sb = new StringBuffer();
if (index >= 0 && index < m_list.size())
{
Restriction r = (Restriction)m_list.get(index);
sb.append(r.getSQL(null));
}
return sb.toString();
} // getWhereClause
/**
* Get Restriction Count
* @return number of restricctions
*/
public int getRestrictionCount()
{
return m_list.size();
} // getRestrictionCount
/**
* Is Query Active
* @return true if number of restricctions > 0
*/
public boolean isActive()
{
return m_list.size() != 0;
} // isActive
/**
* Get Table Name
* @return Table Name
*/
public String getTableName ()
{
return m_TableName;
} // getTableName
/**
* Set Table Name
* @param TableName Table Name
*/
public void setTableName (String TableName)
{
m_TableName = TableName;
} // setTableName
/*************************************************************************
* Get ColumnName of index
* @param index index
* @return ColumnName
*/
public String getColumnName (int index)
{
if (index < 0 || index >= m_list.size())
return null;
Restriction r = (Restriction)m_list.get(index);
return r.ColumnName;
} // getColumnName
/**
* Set ColumnName of index
* @param index index
* @param ColumnName new column name
*/
protected void setColumnName (int index, String ColumnName)
{
if (index < 0 || index >= m_list.size())
return;
Restriction r = (Restriction)m_list.get(index);
r.ColumnName = ColumnName;
} // setColumnName
/**
* Get Operator of index
* @param index index
* @return Operator
*/
public String getOperator (int index)
{
if (index < 0 || index >= m_list.size())
return null;
Restriction r = (Restriction)m_list.get(index);
return r.Operator;
} // getOperator
/**
* Get Operator of index
* @param index index
* @return Operator
*/
public Object getCode (int index)
{
if (index < 0 || index >= m_list.size())
return null;
Restriction r = (Restriction)m_list.get(index);
return r.Code;
} // getCode
/**
* Get Restriction Display of index
* @param index index
* @return Restriction Display
*/
public String getInfoDisplay (int index)
{
if (index < 0 || index >= m_list.size())
return null;
Restriction r = (Restriction)m_list.get(index);
return r.InfoDisplay;
} // getOperator
/**
* Get TO Restriction Display of index
* @param index index
* @return Restriction Display
*/
public String getInfoDisplay_to (int index)
{
if (index < 0 || index >= m_list.size())
return null;
Restriction r = (Restriction)m_list.get(index);
return r.InfoDisplay_to;
} // getOperator
/**
* Get Info Name
* @param index index
* @return Info Name
*/
public String getInfoName(int index)
{
if (index < 0 || index >= m_list.size())
return null;
Restriction r = (Restriction)m_list.get(index);
return r.InfoName;
} // getInfoName
/**
* Get Info Operator
* @param index index
* @return info Operator
*/
public String getInfoOperator(int index)
{
if (index < 0 || index >= m_list.size())
return null;
Restriction r = (Restriction)m_list.get(index);
return r.getInfoOperator();
} // getInfoOperator
/**
* Get Display with optional To
* @param index index
* @return info display
*/
public String getInfoDisplayAll (int index)
{
if (index < 0 || index >= m_list.size())
return null;
Restriction r = (Restriction)m_list.get(index);
return r.getInfoDisplayAll();
} // getInfoDisplay
/**
* String representation
* @return info
*/
public String toString()
{
if (isActive())
return getWhereClause(true);
return "MQuery[" + m_TableName + ",Restrictions=0]";
} // toString
/**
* Get Display Name
* @param ctx context
* @return display Name
*/
public String getDisplayName(Properties ctx)
{
String keyColumn = null;
if (m_TableName != null)
keyColumn = m_TableName + "_ID";
else
keyColumn = getColumnName(0);
String retValue = Msg.translate(ctx, keyColumn);
if (retValue != null && retValue.length() > 0)
return retValue;
return m_TableName;
} // getDisplayName
/**
* Clone Query
* @return Query
*/
public MQuery deepCopy()
{
MQuery newQuery = new MQuery(m_TableName);
for (int i = 0; i < m_list.size(); i++)
newQuery.addRestriction((Restriction)m_list.get(i));
return newQuery;
} // clone
} // MQuery
/*****************************************************************************
* Query Restriction
*/
class Restriction implements Serializable
{
/**
* Restriction
* @param ColumnName ColumnName
* @param Operator Operator, e.g. = != ..
* @param Code Code, e.g 0, All%
* @param InfoName Display Name
* @param InfoDisplay Display of Code (Lookup)
*/
Restriction (String ColumnName, String Operator,
Object Code, String InfoName, String InfoDisplay)
{
this.ColumnName = ColumnName.trim();
if (InfoName != null)
this.InfoName = InfoName;
else
this.InfoName = this.ColumnName;
//
this.Operator = Operator;
// Boolean
if (Code instanceof Boolean)
this.Code = ((Boolean)Code).booleanValue() ? "Y" : "N";
else if (Code instanceof KeyNamePair)
this.Code = new Integer(((KeyNamePair)Code).getKey());
else if (Code instanceof ValueNamePair)
this.Code = ((ValueNamePair)Code).getValue();
else
this.Code = Code;
// clean code
if (this.Code instanceof String)
{
if (this.Code.toString().startsWith("'"))
this.Code = this.Code.toString().substring(1);
if (this.Code.toString().endsWith("'"))
this.Code = this.Code.toString().substring(0, this.Code.toString().length()-2);
}
if (InfoDisplay != null)
this.InfoDisplay = InfoDisplay.trim();
else if (this.Code != null)
this.InfoDisplay = this.Code.toString();
} // Restriction
/**
* Range Restriction (BETWEEN)
* @param ColumnName ColumnName
* @param Code Code, e.g 0, All%
* @param Code_to Code, e.g 0, All%
* @param InfoName Display Name
* @param InfoDisplay Display of Code (Lookup)
* @param InfoDisplay_to Display of Code (Lookup)
*/
Restriction (String ColumnName,
Object Code, Object Code_to,
String InfoName, String InfoDisplay, String InfoDisplay_to)
{
this (ColumnName, MQuery.BETWEEN, Code, InfoName, InfoDisplay);
// Code_to
this.Code_to = Code_to;
if (this.Code_to instanceof String)
{
if (this.Code_to.toString().startsWith("'"))
this.Code_to = this.Code_to.toString().substring(1);
if (this.Code_to.toString().endsWith("'"))
this.Code_to = this.Code_to.toString().substring(0, this.Code_to.toString().length()-2);
}
// InfoDisplay_to
if (InfoDisplay_to != null)
this.InfoDisplay_to = InfoDisplay_to.trim();
else if (this.Code_to != null)
this.InfoDisplay_to = this.Code_to.toString();
} // Restriction
/**
* Create Restriction with dircet WHERE clause
* @param whereClause SQL WHERE Clause
*/
Restriction (String whereClause)
{
DircetWhereClause = whereClause;
} // Restriction
/** Direct Where Clause */
protected String DircetWhereClause = null;
/** Column Name */
protected String ColumnName;
/** Name */
protected String InfoName;
/** Operator */
protected String Operator;
/** SQL Where Code */
protected Object Code;
/** Info */
protected String InfoDisplay;
/** SQL Where Code To */
protected Object Code_to;
/** Info To */
protected String InfoDisplay_to;
/** And/Or Condition */
protected boolean andCondition = true;
/**
* Return SQL construct for this restriction
* @param tableName optional table name
* @return SQL WHERE construct
*/
public String getSQL (String tableName)
{
if (DircetWhereClause != null)
return DircetWhereClause;
//
StringBuffer sb = new StringBuffer();
if (tableName != null && tableName.length() > 0)
{
// Assumes - REPLACE(INITCAP(variable),'s','X') or UPPER(variable)
int pos = ColumnName.lastIndexOf('(')+1; // including (
int end = ColumnName.indexOf(')');
// We have a Function in the ColumnName
if (pos != -1 && end != -1)
sb.append(ColumnName.substring(0, pos))
.append(tableName).append(".").append(ColumnName.substring(pos, end))
.append(ColumnName.substring(end));
else
sb.append(tableName).append(".").append(ColumnName);
}
else
sb.append(ColumnName);
//
sb.append(Operator);
if (Code instanceof String && !MQuery.IN.equals(Operator))// Update for CTI
sb.append(DB.TO_STRING(Code.toString()));
else if (Code instanceof Timestamp)
sb.append(DB.TO_DATE((Timestamp)Code));
else
sb.append(Code);
// Between
// if (Code_to != null && InfoDisplay_to != null)
if (MQuery.BETWEEN.equals(Operator))
{
sb.append(" AND ");
if (Code_to instanceof String)
sb.append(DB.TO_STRING(Code_to.toString()));
else if (Code_to instanceof Timestamp)
sb.append(DB.TO_DATE((Timestamp)Code_to));
else
sb.append(Code_to);
}
return sb.toString();
} // getSQL
/**
* Get String Representation
* @return info
*/
public String toString()
{
return getSQL(null);
} // toString
/**
* Get Info Name
* @return Info Name
*/
public String getInfoName()
{
return InfoName;
} // getInfoName
/**
* Get Info Operator
* @return info Operator
*/
public String getInfoOperator()
{
for (int i = 0; i < MQuery.OPERATORS.length; i++)
{
if (MQuery.OPERATORS[i].getValue().equals(Operator))
return MQuery.OPERATORS[i].getName();
}
return Operator;
} // getInfoOperator
/**
* Get Display with optional To
* @return info display
*/
public String getInfoDisplayAll()
{
if (InfoDisplay_to == null)
return InfoDisplay;
StringBuffer sb = new StringBuffer(InfoDisplay);
sb.append(" - ").append(InfoDisplay_to);
return sb.toString();
} // getInfoDisplay
} // Restriction
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -