package com.openedit.hittracker;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.openedit.data.PropertyDetail;
abstract public class Term {
protected String fieldId;
protected PropertyDetail fieldDetail;
protected String fieldOperation;
protected String fieldValue;
protected Object[] fieldValues;
public Object[] getValues()
{
// if( fieldValues == null && fieldValue != null)
// {
// return new Object[] { getValue() };
// }
return fieldValues;
}
public void setValues(Object[] inValues)
{
fieldValues = inValues;
}
protected Map fieldParameters;
public Map getParameters()
{
if (fieldParameters == null)
{
fieldParameters = new HashMap();
}
return fieldParameters;
}
public void setParameters(Map inParameters)
{
fieldParameters = inParameters;
}
public String getId()
{
if( fieldId == null && getDetail() != null)
{
return getDetail().getId();
}
return fieldId;
}
public void setId(String inId)
{
fieldId = inId;
}
public String getOperation()
{
return fieldOperation;
}
public void setOperation(String inOperation)
{
fieldOperation = inOperation;
}
public String getValue()
{
return fieldValue;
}
public void setValue(String inValue)
{
fieldValue = inValue;
}
abstract public String toQuery();
public Element toXml()
{
Element term = DocumentHelper.createElement("term");
term.addAttribute("id", getDetail().getId());
term.addAttribute("val", getValue());
term.addAttribute("op", getOperation());
for (Iterator iterator = getParameters().keySet().iterator(); iterator.hasNext();)
{
String key = (String) iterator.next();
term.addAttribute(key, getParameter(key));
}
// if (getParameter("op") != null)
// term.addAttribute("realop", getParameter("op"));
return term;
}
public PropertyDetail getDetail()
{
return fieldDetail;
}
public void setDetail(PropertyDetail inDetail)
{
fieldDetail = inDetail;
//fieldId = inDetail.getId() + "_" + System.currentTimeMillis();
}
public void setFieldParameters(Map fieldParameters)
{
this.fieldParameters = fieldParameters;
}
public String getParameter(String inKey)
{
String val = (String) getParameters().get(inKey);
if( val == null && "op".equals(inKey))
{
val = getOperation();
}
return val;
}
public void addParameter(String inKey, String value)
{
getParameters().put(inKey, value);
}
public String toString()
{
return getId() + " = '" + getValue() + "'";
}
}