ingo@1793: package de.intevation.flys.artifacts.model;
ingo@1793: 
ingo@1793: import java.util.ArrayList;
ingo@1793: import java.util.List;
ingo@1793: 
ingo@1793: 
ingo@1793: public class MapserverStyle {
ingo@1793: 
ingo@1793:     public static class Clazz {
ingo@1876:         protected List<ClazzItem> items;
ingo@1876:         protected String    name;
ingo@1876: 
ingo@1876:         public Clazz(String name) {
ingo@1876:             this.name  = name;
ingo@1876:             this.items = new ArrayList<ClazzItem>();
ingo@1876:         }
ingo@1876: 
ingo@1876:         public void addItem(ClazzItem item) {
ingo@1876:             if (item != null) {
ingo@1876:                 items.add(item);
ingo@1876:             }
ingo@1876:         }
ingo@1876: 
ingo@1876:         @Override
ingo@1876:         public String toString() {
ingo@1876:             StringBuilder sb = new StringBuilder();
ingo@1876:             sb.append("CLASS\n");
ingo@1876:             sb.append("NAME \"" + name + "\"\n");
ingo@1876: 
ingo@1876:             for (ClazzItem item: items) {
ingo@1876:                 item.toString(sb);
ingo@1876:             }
ingo@1876: 
ingo@2616:             sb.append("END\n");
ingo@1876: 
ingo@1876:             return sb.toString();
ingo@1876:         }
ingo@1876:     }
ingo@1876: 
ingo@1876:     public interface ClazzItem {
ingo@1876:         void toString(StringBuilder sb);
ingo@1876:     }
ingo@1876: 
ingo@1876:     public static class Style implements ClazzItem {
ingo@1878:         protected String color;
ingo@1793:         protected String outlinecolor;
ingo@1816:         protected String symbol;
ingo@1793:         protected int    size;
ingo@1793: 
ingo@1878:         public void setColor(String color) {
ingo@1878:             this.color = color;
ingo@1878:         }
ingo@1878: 
ingo@1793:         public void setOutlineColor(String outlinecolor) {
ingo@1793:             this.outlinecolor = outlinecolor;
ingo@1793:         }
ingo@1793: 
ingo@1793:         public void setSize(int size) {
ingo@1793:             this.size = size;
ingo@1793:         }
ingo@1793: 
ingo@1816:         public void setSymbol(String symbol) {
ingo@1816:             if (symbol != null && symbol.length() > 0) {
ingo@1816:                 this.symbol = symbol;
ingo@1816:             }
ingo@1816:         }
ingo@1816: 
ingo@1876:         public void toString(StringBuilder sb) {
ingo@1793:             sb.append("STYLE\n");
ingo@1877:             sb.append("WIDTH " + String.valueOf(size) + "\n");
ingo@2616: 
ingo@2616:             if (outlinecolor != null) {
ingo@2616:                 sb.append("OUTLINECOLOR " + outlinecolor + "\n");
ingo@2616:             }
ingo@1816: 
ingo@1878:             if (color != null) {
ingo@1878:                 sb.append("COLOR " + color + "\n");
ingo@1878:             }
ingo@1878: 
ingo@1816:             if (symbol != null) {
ingo@1816:                 sb.append("SYMBOL '" + symbol + "'\n");
ingo@1816:             }
ingo@1816: 
ingo@1793:             sb.append("END\n");
ingo@1876:         }
ingo@1876:     } // end of Style
ingo@1793: 
ingo@1876:     public static class Label implements ClazzItem {
ingo@1876:         protected String color;
ingo@1876:         protected int    size;
ingo@1876: 
ingo@1876:         public void setColor(String color) {
ingo@1876:             this.color = color;
ingo@1793:         }
ingo@1876: 
ingo@1876:         public void setSize(int size) {
ingo@1876:             this.size = size;
ingo@1876:         }
ingo@1876: 
ingo@1876:         @Override
ingo@1876:         public void toString(StringBuilder sb) {
ingo@1876:             sb.append("LABEL\n");
ingo@1876:             sb.append("ANGLE auto\n");
ingo@1876:             sb.append("SIZE " + String.valueOf(size) + "\n");
ingo@1876:             sb.append("COLOR " + color + "\n");
ingo@1876:             sb.append("TYPE truetype\n");
ingo@1876:             sb.append("FONT DefaultFont\n");
ingo@1876:             sb.append("POSITION ur\n");
ingo@1876:             sb.append("OFFSET 2 2\n");
ingo@1876:             sb.append("END\n");
ingo@1876:         }
ingo@1876:     }
ingo@1793: 
ingo@2616:     public static class Expression implements ClazzItem {
ingo@2616:         protected String value;
ingo@2616: 
ingo@2616:         public Expression(String value) {
ingo@2616:             this.value = value;
ingo@2616:         }
ingo@2616: 
ingo@2616:         @Override
ingo@2616:         public void toString(StringBuilder sb) {
ingo@2616:             sb.append("EXPRESSION " + value);
ingo@2616:             sb.append("\n");
ingo@2616:         }
ingo@2616:     }
ingo@2616: 
ingo@1793: 
ingo@1793:     protected List<Clazz> classes;
ingo@1793: 
ingo@1793: 
ingo@1793:     public MapserverStyle() {
ingo@1793:         classes = new ArrayList<Clazz>();
ingo@1793:     }
ingo@1793: 
ingo@1793:     public void addClazz(Clazz clazz) {
ingo@1793:         if (clazz != null) {
ingo@1793:             classes.add(clazz);
ingo@1793:         }
ingo@1793:     }
ingo@1793: 
ingo@1793:     public String toString() {
ingo@1793:         StringBuilder sb = new StringBuilder();
ingo@1793: 
ingo@1793:         for (Clazz clazz: classes) {
ingo@1793:             sb.append(clazz.toString());
ingo@1793:         }
ingo@1793: 
ingo@1793:         return sb.toString();
ingo@1793:     }
ingo@1793: }
ingo@1793: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :