package net.codjo.dataprocess.common.model;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.StringTokenizer;
import static net.codjo.dataprocess.common.DataProcessConstants.BSH_TYPE_WITH_RESULT;
import static net.codjo.dataprocess.common.DataProcessConstants.JAVA_TYPE_WITH_RESULT;
import static net.codjo.dataprocess.common.DataProcessConstants.SQL_QUERY_TYPE_WITH_RESULT;
import static net.codjo.dataprocess.common.DataProcessConstants.STORED_PROC_TYPE_WITH_RESULT;
/**
*
*/
public class TreatmentModel {
private String id;
private String type;
private String title;
private String comment;
private String target;
private ResultTable resultTable;
private String guiTarget;
private ArgList arguments;
public TreatmentModel() {
}
public TreatmentModel(TreatmentModel treatmentModel) {
title = treatmentModel.getTitle();
type = treatmentModel.getType();
target = treatmentModel.getTarget();
guiTarget = treatmentModel.getGuiTarget();
id = treatmentModel.getId();
comment = treatmentModel.getComment();
resultTable = treatmentModel.getResultTable();
arguments = new ArgList(treatmentModel.getArguments());
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setType(String type) {
this.type = type;
}
public String getType() {
return type;
}
public void setTarget(String target) {
this.target = target;
}
public String getTarget() {
if (target != null) {
return target.trim();
}
else {
return target;
}
}
public void setGuiTarget(String guiTarget) {
this.guiTarget = guiTarget;
}
public String getGuiTarget() {
if (guiTarget != null) {
return guiTarget.trim();
}
else {
return guiTarget;
}
}
public void setArguments(ArgList arguments) {
this.arguments = arguments;
}
public ArgList getArguments() {
if (arguments == null) {
arguments = new ArgList();
}
return arguments;
}
public void setComment(String comment) {
this.comment = comment;
}
public String getComment() {
return comment;
}
public void setTitle(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setResultTable(ResultTable resultTable) {
this.resultTable = resultTable;
}
public ResultTable getResultTable() {
return resultTable;
}
public boolean isReturnResult() {
return SQL_QUERY_TYPE_WITH_RESULT.equals(type) || STORED_PROC_TYPE_WITH_RESULT.equals(type)
|| JAVA_TYPE_WITH_RESULT.equals(type) || BSH_TYPE_WITH_RESULT.equals(type);
}
public List<String> getTargetGuiClassParameters() {
List<String> parameters = null;
if (guiTarget != null) {
if (guiTarget.indexOf('(') != -1) {
parameters = stringToList(guiTarget.substring(guiTarget.indexOf('(')
+ 1, guiTarget.length() - 1));
}
}
return parameters;
}
private static List<String> stringToList(String parameters) {
List<String> parametersList = new ArrayList<String>();
StringTokenizer stringTokenizer = new StringTokenizer(parameters, ",");
while (stringTokenizer.hasMoreTokens()) {
String token = stringTokenizer.nextToken().trim();
parametersList.add(token);
}
return parametersList;
}
public String getTargetGuiClassName() {
if (guiTarget != null) {
if (guiTarget.indexOf('(') != -1) {
return guiTarget.substring(0, guiTarget.indexOf('(')).trim();
}
}
return "";
}
public boolean isConfigurable(List<String> exclude) {
for (ArgModel argModel : getArguments().getArgs()) {
if (argModel.isGlobalValue() && !exclude.contains(argModel.getValue())) {
return true;
}
}
return false;
}
public static Comparator<TreatmentModel> getIdComparator() {
return new TreatmentModelIdComparator();
}
private static class TreatmentModelIdComparator implements Comparator<TreatmentModel> {
public int compare(TreatmentModel tm1, TreatmentModel tm2) {
return tm1.getId().compareToIgnoreCase(tm2.getId());
}
}
@Override
public String toString() {
StringBuilder str = new StringBuilder();
str.append("\nid : ").append(id);
str.append("\ntitle : ").append(title);
str.append("\ntype : ").append(type);
str.append("\ntarget : ").append(target);
str.append("\nguiTarget : ").append(guiTarget);
str.append("\ncomment : ").append(comment);
str.append("\nresultTable : ").append(resultTable);
str.append("\narguments : ").append(arguments).append('\n');
return str.toString();
}
}