teichmann@5831: package org.dive4elements.river.artifacts.model.map; ingo@3300: ingo@3300: import java.io.IOException; ingo@3300: import java.io.File; ingo@3300: import java.io.FileOutputStream; ingo@3300: import java.io.OutputStreamWriter; ingo@3300: import java.io.PrintWriter; ingo@3300: import java.util.ArrayList; ingo@3300: import java.util.List; ingo@3300: teichmann@5831: import org.dive4elements.artifacts.CallContext; ingo@3300: teichmann@5831: import org.dive4elements.river.artifacts.FLYSArtifact; teichmann@5831: import org.dive4elements.river.wsplgen.FacetCreator; ingo@3300: ingo@3300: ingo@3300: public class WSPLGENJob { ingo@3300: ingo@3300: public static final String GEL_SPERRE = "SPERRE"; ingo@3300: public static final String GEL_NOSPERRE = "NOSPERRE"; ingo@3300: ingo@3300: ingo@3300: protected FLYSArtifact artifact; ingo@3300: ingo@3300: protected CallContext callContext; ingo@3300: ingo@3300: protected WSPLGENCalculation calculation; ingo@3300: ingo@3300: protected FacetCreator facetCreator; ingo@3300: ingo@3300: protected File workingDir; ingo@3300: ingo@3300: protected String dgm; ingo@3300: protected String pro; ingo@3300: protected String wsp; ingo@3300: protected String wspTag; ingo@3300: protected String axis; ingo@3300: protected String area; ingo@3300: protected String gel; ingo@3300: protected String outFile; ingo@3300: ingo@3300: protected List lin; ingo@3300: ingo@3300: protected int out; ingo@3300: ingo@3300: protected double start; ingo@3300: protected double end; ingo@3300: protected double from; ingo@3300: protected double to; ingo@3300: protected double diff; ingo@3300: protected double dist; ingo@3300: ingo@3300: ingo@3300: ingo@3300: public WSPLGENJob( ingo@3300: FLYSArtifact flys, ingo@3300: File workingDir, ingo@3300: FacetCreator facetCreator, ingo@3300: CallContext context, ingo@3300: WSPLGENCalculation calculation) ingo@3300: { ingo@3300: this.artifact = flys; ingo@3300: this.workingDir = workingDir; ingo@3300: this.facetCreator = facetCreator; ingo@3300: this.callContext = context; ingo@3300: this.calculation = calculation; ingo@3300: ingo@3300: out = -1; ingo@3300: start = Double.NaN; ingo@3300: end = Double.NaN; ingo@3300: from = Double.NaN; ingo@3300: to = Double.NaN; ingo@3300: diff = Double.NaN; ingo@3300: dist = Double.NaN; ingo@3300: lin = new ArrayList(3); ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public File getWorkingDir() { ingo@3300: return workingDir; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public FLYSArtifact getArtifact() { ingo@3300: return artifact; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public FacetCreator getFacetCreator() { ingo@3300: return facetCreator; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public WSPLGENCalculation getCalculation() { ingo@3300: return calculation; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public CallContext getCallContext() { ingo@3300: return callContext; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setWsp(String wsp) { ingo@3300: this.wsp = wsp; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public String getWsp() { ingo@3300: return wsp; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setWspTag(String wspTag) { ingo@3300: this.wspTag = wspTag; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public String getWspTag() { ingo@3300: return wspTag; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void addLin(String lin) { ingo@3300: this.lin.add(lin); ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public List getLin() { ingo@3300: return lin; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setAxis(String axis) { ingo@3300: this.axis = axis; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public String getAxis() { ingo@3300: return axis; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setArea(String area) { ingo@3300: this.area = area; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public String getArea() { ingo@3300: return area; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setOut(int out) { ingo@3300: this.out = out; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public int getOut() { ingo@3300: return out; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setOutFile(String outFile) { ingo@3300: this.outFile = outFile; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public String getOutFile() { ingo@3300: return outFile; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setStart(double start) { ingo@3300: this.start = start; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public double getStart() { ingo@3300: return start; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setEnd(double end) { ingo@3300: this.end = end; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public double getEnd() { ingo@3300: return end; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setPro(String pro) { ingo@3300: this.pro = pro; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public String getPro() { ingo@3300: return pro; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setDgm(String dgm) { ingo@3300: this.dgm = dgm; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public String getDgm() { ingo@3300: return dgm; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setFrom(double from) { ingo@3300: this.from = from; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public double getFrom() { ingo@3300: return from; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setTo(double to) { ingo@3300: this.to = to; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public double getTo() { ingo@3300: return to; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setDiff(double diff) { ingo@3300: this.diff = diff; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public double getDiff() { ingo@3300: return diff; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setDist(double dist) { ingo@3300: this.dist = dist; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public double getDist() { ingo@3300: return dist; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setGel(String gel) { ingo@3300: if (gel == null || gel.length() == 0) { ingo@3300: return; ingo@3300: } ingo@3300: ingo@3300: if (gel.equals(GEL_SPERRE) || gel.equals(GEL_NOSPERRE)) { ingo@3300: this.gel = gel; ingo@3300: } ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public String getGel() { ingo@3300: return gel; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void toFile(File file) ingo@3300: throws IOException, IllegalArgumentException ingo@3300: { ingo@3300: PrintWriter writer = null; ingo@3300: ingo@3300: try { ingo@3300: writer = ingo@3300: new PrintWriter( ingo@3300: new OutputStreamWriter( ingo@3300: new FileOutputStream(file))); ingo@3300: ingo@3300: write(writer); ingo@3300: } ingo@3300: finally { ingo@3300: if (writer != null) { ingo@3300: writer.flush(); ingo@3300: writer.close(); ingo@3300: } ingo@3300: } ingo@3300: } ingo@3300: ingo@3300: ingo@3300: protected void write(PrintWriter writer) ingo@3300: throws IOException, IllegalArgumentException ingo@3300: { ingo@3300: writeWsp(writer); // required ingo@3300: writeWspTag(writer); // required ingo@3300: writeLin(writer); ingo@3300: writeAxis(writer); ingo@3300: writeArea(writer); ingo@3300: writeOut(writer); ingo@3300: writeOutFile(writer); ingo@3300: writeRange(writer); ingo@3300: writeDelta(writer); ingo@3300: writeGel(writer); ingo@3300: writeDist(writer); ingo@3300: writePro(writer); ingo@3300: writeDgm(writer); // required ingo@3300: } ingo@3300: ingo@3300: ingo@3300: protected void writeWsp(PrintWriter writer) ingo@3300: throws IllegalArgumentException ingo@3300: { ingo@3300: String wsp = getWsp(); ingo@3300: ingo@3300: if (wsp != null && wsp.length() > 0) { ingo@3300: writer.println("-WSP=\"" + wsp + "\""); ingo@3300: return; ingo@3300: } ingo@3300: ingo@3300: throw new IllegalArgumentException("Required WSP missing!"); ingo@3300: } ingo@3300: ingo@3300: protected void writeWspTag(PrintWriter writer) ingo@3300: throws IllegalArgumentException ingo@3300: { ingo@3300: String wspTag = getWspTag(); ingo@3300: ingo@3300: if (wspTag != null && wspTag.length() > 0) { ingo@3300: writer.println("-WSPTAG=\"" + wspTag + "\""); ingo@3300: return; ingo@3300: } ingo@3300: ingo@3300: throw new IllegalArgumentException("Required WSPTAG missing!"); ingo@3300: } ingo@3300: ingo@3300: protected void writeLin(PrintWriter writer) ingo@3300: throws IllegalArgumentException ingo@3300: { ingo@3300: List lins = getLin(); ingo@3300: ingo@3300: if (lins != null && !lins.isEmpty()) { ingo@3300: for (String lin: lins) { ingo@3300: writer.println("-LIN=\"" + lin + "\""); ingo@3300: } ingo@3300: } ingo@3300: } ingo@3300: ingo@3300: protected void writeAxis(PrintWriter writer) ingo@3300: throws IllegalArgumentException ingo@3300: { ingo@3300: String axis = getAxis(); ingo@3300: ingo@3300: if (axis != null && axis.length() > 0) { ingo@3300: writer.println("-ACHSE=\"" + axis + "\""); ingo@3300: } ingo@3300: } ingo@3300: ingo@3300: protected void writeGel(PrintWriter writer) ingo@3300: throws IllegalArgumentException ingo@3300: { ingo@3300: if (area != null && area.length() > 0) { ingo@3300: writer.println("-GEL=" + getGel()); ingo@3300: } ingo@3300: } ingo@3300: ingo@3300: protected void writeArea(PrintWriter writer) ingo@3300: throws IllegalArgumentException ingo@3300: { ingo@3300: String area = getArea(); ingo@3300: ingo@3300: if (area != null && area.length() > 0) { ingo@3300: writer.println("-GEBIET=\"" + area + "\""); ingo@3300: } ingo@3300: } ingo@3300: ingo@3300: ingo@3300: protected void writeOut(PrintWriter writer) ingo@3300: throws IllegalArgumentException ingo@3300: { ingo@3300: int out = getOut(); ingo@3300: ingo@3300: if (out >= 0) { ingo@3300: writer.println("-OUTPUT=" + String.valueOf(out)); ingo@3300: } ingo@3300: } ingo@3300: ingo@3300: protected void writeOutFile(PrintWriter writer) ingo@3300: throws IllegalArgumentException ingo@3300: { ingo@3300: String outFile = getOutFile(); ingo@3300: ingo@3300: if (outFile != null && outFile.length() > 0) { ingo@3300: writer.println("-AUSGABE=\""+ outFile + "\""); ingo@3300: } ingo@3300: } ingo@3300: ingo@3300: protected void writeRange(PrintWriter writer) ingo@3300: throws IllegalArgumentException ingo@3300: { ingo@3300: StringBuilder sb = new StringBuilder("-STRECKE="); ingo@3300: ingo@3300: double start = getStart(); ingo@3300: double end = getEnd(); ingo@3300: ingo@3300: if (Double.isNaN(start) && Double.isNaN(end)) { ingo@3300: return; ingo@3300: } ingo@3300: ingo@3300: if (! Double.isNaN(getStart())) { ingo@3300: sb.append(getStart()); ingo@3300: } ingo@3300: ingo@3300: sb.append(","); ingo@3300: ingo@3300: if (! Double.isNaN(getEnd())) { ingo@3300: sb.append(getEnd()); ingo@3300: } ingo@3300: ingo@3300: writer.println(sb.toString()); ingo@3300: } ingo@3300: ingo@3300: protected void writeDelta(PrintWriter writer) ingo@3300: throws IllegalArgumentException ingo@3300: { ingo@3300: StringBuilder sb = new StringBuilder("-DELTA="); ingo@3300: if (! Double.isNaN(from)) { ingo@3300: sb.append(from); ingo@3300: } ingo@3300: ingo@3300: sb.append(","); ingo@3300: ingo@3300: if (! Double.isNaN(to)) { ingo@3300: sb.append(to); ingo@3300: } ingo@3300: ingo@3300: sb.append(","); ingo@3300: ingo@3300: if (! Double.isNaN(diff)) { ingo@3300: sb.append(diff); ingo@3300: } ingo@3300: ingo@3300: writer.println(sb.toString()); ingo@3300: } ingo@3300: ingo@3300: protected void writeDist(PrintWriter writer) ingo@3300: throws IllegalArgumentException ingo@3300: { ingo@3300: if (! Double.isNaN(getDist())) { ingo@3300: writer.println("-DIST=" + String.valueOf(getDist())); ingo@3300: } ingo@3300: } ingo@3300: ingo@3300: protected void writePro(PrintWriter writer) ingo@3300: throws IllegalArgumentException ingo@3300: { ingo@3300: if (pro != null && pro.length() > 0) { ingo@3300: writer.println("-PRO=\"" + getPro() + "\""); ingo@3300: } ingo@3300: } ingo@3300: ingo@3300: protected void writeDgm(PrintWriter writer) ingo@3300: throws IllegalArgumentException ingo@3300: { ingo@3300: if (dgm != null && dgm.length() > 0) { ingo@3300: writer.println("-DGM=\"" + getDgm() + "\""); ingo@3300: return; ingo@3300: } ingo@3300: ingo@3300: throw new IllegalArgumentException("Required DGM missing!"); ingo@3300: } ingo@3300: } ingo@3300: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :