package com.idega.block.reports.business;
import com.idega.block.reports.data.*;
import java.util.StringTokenizer;
import java.sql.SQLException;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company: idega multimedia
* @author <a href="mailto:aron@idega.is">aron@idega.is</a>
* @version 1.0
*/
public class ReportCondition{
private ReportItem Item;
private String sJoin="",sOperator="",sVariable="";
private String[] sOps,sVars;
private String sCondition="";
private boolean bCondition,bSelect,bField = false;
private boolean bBetween = false;
private Integer orderNumber = null;
private Integer colOrder = null;
private String sVarOne = null,sVarTwo = null;
private String sFunction = null;
private boolean bFunction = false;
public ReportCondition(ReportItem Item) {
this.Item = Item;
init();
}
public ReportCondition(int ItemId){
try {
this.Item = ((com.idega.block.reports.data.ReportItemHome)com.idega.data.IDOLookup.getHomeLegacy(ReportItem.class)).findByPrimaryKeyLegacy(ItemId);
init();
}
catch (SQLException ex) {
ex.printStackTrace();
}
}
private void init(){
if(this.Item.getField()!= null){
this.bField = true;
StringBuffer sb = new StringBuffer(this.Item.getMainTable());
sb.append(".");
sb.append(this.Item.getField());
this.sJoin = sb.toString();
this.sOps = this.Item.getOps();
}
this.bCondition = false;
this.bSelect = false;
}
public void setCondition(){
}
public ReportItem getItem(){
return this.Item;
}
public String getCondition(){
StringBuffer sb = new StringBuffer("");
if(this.bCondition && this.bField){
if(this.sOperator.equalsIgnoreCase("BETWEEN") && this.sVarOne !=null && this.sVarTwo!=null){
sb.append(this.sJoin);
sb.append(" BETWEEN '");
sb.append(this.sVarOne);
sb.append("' AND '");
sb.append(this.sVarTwo);
sb.append("'");
}
else if(this.sOperator.equalsIgnoreCase("IN")){
sb.append(this.sJoin);
sb.append(" ");
sb.append(" BETWEEN '");
sb.append(this.sVarOne);
}
/* //old
else{
int len = this.Item.getOps().length;
for (int i = 0; i < len; i++) {
sb.append(this.sJoin);
sb.append(" ");
sb.append(this.sOps[i]);
sb.append(" ");
if(sVars != null){
sb.append("'");
sb.append(this.sVars[i]);
sb.append("' ");
}
}
}
*/
}
this.sCondition = sb.toString();
if(this.Item.getConditionType().equalsIgnoreCase("I")) {
this.sCondition = this.sCondition.replace("'".charAt(0)," ".charAt(0) );
}
return this.sCondition;
}
public void setOperator(String[] sOps){
this.sOps = sOps;
}
public void setVariableOne(String sVar){
this.sVarOne = sVar;
this.bCondition = true;
}
public void setVariableTwo(String sVar){
this.sVarTwo = sVar;
this.bCondition = true;
}
public void setVariable(String sVar){
StringTokenizer st = new StringTokenizer(sVar,":");
if(st.countTokens() == 2){
this.bBetween = true;
this.sVars = new String[2];
this.sVars[0] = st.nextToken();
this.sVars[1] = st.nextToken();
}
else{
this.sVars = new String[1];
this.sVars[0] = sVar;
}
this.bCondition = true;
}
public void setVariables(String[] sVars){
this.sVars = sVars;
this.bCondition = true;
}
public String getDisplay(){
return this.getItem().getName();
}
public void setIsSelect(){
this.bSelect = true;
}
public boolean isSelect(){
return this.bSelect;
}
public void setColumnOrder(Integer order){
this.colOrder = order;
}
public Integer getColumnOrder(){
return this.colOrder;
}
public void setOrder(Integer order){
this.orderNumber = order;
}
public Integer getOrder(){
return this.orderNumber;
}
public String getOperator(){
return this.sOperator;
}
public void setOperator(String sOp){
this.sOperator = sOp;
}
public String getFunction(){
return this.sOperator;
}
public void setFunction(String sOp){
this.bFunction = true;
this.sOperator = sOp;
}
public boolean isFunction(){
return this.bFunction;
}
public String getFieldFullName(){
return this.Item.getMainTable() +"."+this.Item.getField();
}
public String getFieldFunction(){
return getFunction()+"("+getFieldFullName()+")";
}
public String getField(){
if(isFunction()) {
return getFieldFunction();
}
else {
return getFieldFullName();
}
}
}