AtrDocBean.java
package sk.iway.iwcm.doc;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import sk.iway.iwcm.DB;
import sk.iway.iwcm.Logger;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.common.DocTools;
/**
* Rozsiruje DocDetails o zoznam atributov, pouziva sa pri tabulkovom vypise atributov pre viacero dokumentov. Nechcel
* som to davat priamo do DocDetails, aby tam zbytocne nevysel ArrayList s atributami, ktory naviac zvycajne bude null.
*
*@Title WebJET
*@Company Interway s.r.o. (www.interway.sk)
*@Copyright Interway s.r.o. (c) 2001-2002
*@author $Author: jeeff $
*@version $Revision: 1.2 $
*@created Piatok, 2003, okt�ber 24
*@modified $Date: 2003/12/01 08:27:43 $
*/
public class AtrDocBean extends DocDetails
{
private List<AtrBean> atrList;
public List<AtrBean> getAtrList()
{
if (atrList == null)
{
atrList = new ArrayList<>();
}
return atrList;
}
public void addAtr(AtrBean atr)
{
getAtrList().add(atr);
}
/**
* Rozparsuje meno parametra, ktory je vo formate atrs_TYP_MENO, kde TYP je
* sposob vyhodnotenia (SS-substring, EQ-equal, LT-less than,GT-greater than)
* @param param
* @return
*/
private String[] parseParam(String param)
{
String[] ret = null;
StringTokenizer st = new StringTokenizer(param, "_");
if (st.countTokens()>2)
{
ret = new String[2];
//atrs_
st.nextToken();
//typ
ret[0] = st.nextToken();
//meno
ret[1] = st.nextToken();
while (st.hasMoreTokens())
{
ret[1] = ret[1] + "_" + st.nextToken();
}
}
return(ret);
}
/**
* vrati true, ak je treba tento riadok vymazat (nevyhovuje podmienke)
* @param param
* @param paramValue
* @return
*/
public boolean mustRemove(String param, String paramValue)
{
String[] paramValues = new String[1];
paramValues[0] = paramValue;
return mustRemove(param, paramValues);
}
public boolean mustRemove(String param, String[] paramValues)
{
//rozparsuj param na hodnoty
String[] apv = parseParam(param);
int i;
for (i=0; i<paramValues.length; i++)
{
paramValues[i] = DB.internationalToEnglish(paramValues[i]).toLowerCase();
// z nejakeho dovodu sa zle prenasa + v URL, takze nahradime za medzeru
paramValues[i] = paramValues[i].replace('+', ' ');
}
if (apv != null)
{
String type = apv[0].toUpperCase();
String name = DocTools.removeChars(DB.internationalToEnglish(apv[1])).replace('-', '_');
String atrValue;
double iAtrValue;
double iParamValue;
for (AtrBean atrBean : atrList)
{
String atrName = DocTools.removeChars(DB.internationalToEnglish(atrBean.getAtrName())).replace('-', '_');
Logger.debug(this,"porovnavam: "+atrName+"="+DB.internationalToEnglish(atrBean.getValue()).toLowerCase()+" vs "+name + "="+paramValues[0]+" type="+type);
if (atrName.equalsIgnoreCase(name) || name.equals(Integer.toString(atrBean.getAtrId())))
{
atrValue = DB.internationalToEnglish(atrBean.getValue()).toLowerCase();
//z nejakeho dovodu sa zle prenasa + v URL, takze nahradime za medzeru
atrValue = atrValue.replace('+', ' ');
if ("SS".equals(type))
{
//v tabulke sa musi nachadzat substring
for (i=0; i<paramValues.length; i++)
{
if (atrValue.indexOf(paramValues[i])!=-1)
{
//Logger.println(this,"MUST REMOVE: "+atrValue+" "+paramValue);
return false;
}
}
return true;
}
else if ("EQ".equals(type))
{
for (i=0; i<paramValues.length; i++)
{
if (Tools.isEmpty(paramValues[i]))
{
if (paramValues.length==1) return(false);
continue;
}
//equal - porovnanie
if (atrValue.equalsIgnoreCase(paramValues[i]))
{
//Logger.println(this,"MUST REMOVE: "+atrValue+" "+paramValue);
return(false);
}
}
return true;
}
else if ("LT".equals(type))
{
//menej ako
iAtrValue = atrBean.getValueNumber();
try
{
iParamValue = Double.parseDouble(paramValues[0].replace(',', '.'));
//zachovavam len to co je mensie rovne ako hodnota
//teda vyhadzujem to co je vacsie
if (iAtrValue > iParamValue)
{
//Logger.println(this,"MUST REMOVE: "+atrValue+" "+paramValue);
return(true);
}
}
catch (Exception ex)
{
}
}
else if ("GT".equals(type))
{
//viac ako
iAtrValue = atrBean.getValueNumber();
try
{
iParamValue = Double.parseDouble(paramValues[0].replace(',', '.'));
//zachovavam len to co je vacsie rovne ako hodnota
if (iAtrValue < iParamValue)
{
//Logger.println(this,"MUST REMOVE: "+atrValue+" "+paramValue);
return(true);
}
}
catch (Exception ex)
{
}
}
else if ("GTLT".equals(type))
{
//interval (10-20)
iAtrValue = atrBean.getValueNumber();
try
{
String paramValue = paramValues[0].replace(',', '.');
i = paramValue.indexOf('|');
if (i==-1) i = paramValue.indexOf(':');
iParamValue = Double.parseDouble(paramValue.substring(0, i));
double iParamValue2 = Double.parseDouble(paramValue.substring(i+1));
//zachovavam len to co je vacsie ako hodnota
if (iAtrValue < iParamValue || iAtrValue > iParamValue2)
{
//Logger.println(this,"MUST REMOVE: "+atrValue+" "+paramValue);
return(true);
}
}
catch (Exception ex)
{
}
}
}
}
}
//iteruj po atributoch a najdi atribut s danym menom
return(false);
}
}