package com.yoursway.commons.excelexport; import java.io.IOException; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; import com.yoursway.utils.XmlWriter; public class BorderSet { public static final BorderSet DEFAULT = new BorderSet(createDefaultBorders()); private List<Border> borders; private BorderSet(List<Border> borders) { this.borders = borders; } private static List<Border> createDefaultBorders() { int length = Edge.values().length; List<Border> result = new ArrayList<Border>(length); for (int i = 0; i < length; i++) result.add(Border.NONE); return result; } public BorderSet with(Border border, EnumSet<Edge> edges) { List<Border> newBorders = new ArrayList<Border>(borders); for (Edge edge : edges) newBorders.set(edge.ordinal(), border); return new BorderSet(newBorders); } public void encode(XmlWriter xml) throws IOException { for (Edge edge : Edge.values()) { xml.start(edge.xmlName()); borders.get(edge.ordinal()).encode(xml); xml.end(); } } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((borders == null) ? 0 : borders.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; BorderSet other = (BorderSet) obj; if (borders == null) { if (other.borders != null) return false; } else if (!borders.equals(other.borders)) return false; return true; } }