package sushi.application.pages.eventrepository.model;
import sushi.application.pages.eventrepository.ProcessPanel;
import sushi.process.SushiProcess;
import sushi.process.SushiProcessInstance;
/**
* This class filters {@link SushiProcess}es in the {@link ProcessPanel}.
* @author micha
*/
public class ProcessFilter extends AbstractFilter {
private static final long serialVersionUID = 1L;
/**
* Constructor for the class, which filters {@link SushiProcess}es in the {@link ProcessPanel}.
*/
public ProcessFilter(){
super();
}
/**
* Constructor for the class, which filters {@link SushiProcess}es in the {@link ProcessPanel}.
* @param processFilterCriteria
* @param processFilterCondition
* @param filterValue
*/
public ProcessFilter(String processFilterCriteria, String processFilterCondition, String filterValue){
super(processFilterCriteria, processFilterCondition, filterValue);
}
public boolean match(SushiProcess process) {
if(filterCriteria == null || filterCondition == null || filterValue == null){
return true;
}
if(filterCriteria.equals("ID")){
try{
if(filterCondition.equals("<")){
if(process.getID() < Integer.parseInt(filterValue)) return true;
} else if(filterCondition.equals(">")){
if(process.getID() < Integer.parseInt(filterValue)) return true;
} else {
if(process.getID() == Integer.parseInt(filterValue)) return true;
}
}
catch(NumberFormatException e){
return false;
}
} else if(filterCriteria.equals("Name")){
return (process.getName().equals(filterValue));
} else if(filterCriteria.equals("Process Instance")){
try{
int processInstanceID = Integer.parseInt(filterValue);
boolean match = true;
if(filterCondition.equals("<")){
for(SushiProcessInstance instance : process.getProcessInstances()){
match = instance.getID() < processInstanceID ? true : false;
}
return match;
} else if(filterCondition.equals(">")){
for(SushiProcessInstance instance : process.getProcessInstances()){
match = instance.getID() > processInstanceID ? true : false;
}
return match;
} else {
for(SushiProcessInstance instance : process.getProcessInstances()){
match = instance.getID() == processInstanceID ? true : false;
}
return match;
}
}
catch(NumberFormatException e){
return false;
}
} else if(filterCriteria.equals("Correlation Attribute")){
// return SushiProcess.getCorrelationAttributesForProcess(process).contains(filterValue);
return process.getCorrelationAttributes().contains(filterValue);
}
return false;
}
}