package org.genedb.query; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * Basic, abstract implementation of Query, designed to be extended. * * @author art */ public abstract class AbstractQuery implements QueryI { private String name; private List<Param> params; private boolean inHistory; private String type; // private StorageMethod storageMethod; private Detailer summaryDetailer; private Detailer fineDetailer; private String simpleDescription; private String help; public String getSimpleDescription() { return this.simpleDescription; } protected void setSimpleDescription(String simpleDescription) { this.simpleDescription = simpleDescription; } protected String getHelp() { return this.help; } protected void setHelp(String help) { this.help = help; } protected void setName(String name) { this.name = name; } public String getName() { return name; } public String getResultType() { return type; } public boolean isStoredInHistory() { return inHistory; } public String getQueryAsString() { // TODO Deal with query context perhaps StringBuffer ret = new StringBuffer(); ret.append(name); //ret.append(queryContext); ret.append("{"); for (Param param : params) { ret.append("{"); ret.append(param.getName()); ret.append("="); ret.append(param.getValue()); ret.append("}"); } ret.append("}"); return ret.toString(); } public void setFineDetailer(Detailer fineDetailer) { this.fineDetailer = fineDetailer; } public void setSummaryDetailer(Detailer summaryDetailer) { this.summaryDetailer = summaryDetailer; } protected Detailer getFineDetailer() { return fineDetailer; } protected Detailer getSummaryDetailer() { return summaryDetailer; } List<Param> EMPTY_PARAMS_LIST = Collections.unmodifiableList(new ArrayList<Param>()); public List<Param> getParameters() { if (this.params == null) { return EMPTY_PARAMS_LIST; } return this.params; } //public abstract void writeSpringBean(PrintWriter pw); public boolean isComplete() { for (Param param : params) { if (!param.isSet()) { return false; } } return true; } }