| | |
| | | * |
| | | * @author Ulysses |
| | | * @version 0.1 |
| | | * @since 2006/5/18 ¤U¤È 03:45:15 |
| | | * @since 2006/5/18 �U�� 03:45:15 |
| | | */ |
| | | public class ComplexShapeElement extends Element implements ComplexElement, GeometryConverter |
| | | { |
| | | public class ComplexShapeElement extends Element implements ComplexElement, GeometryConverter { |
| | | private static final Logger logger = Logger.getLogger(ComplexShapeElement.class); |
| | | |
| | | ArrayList<Element> list = new ArrayList<Element>(); |
| | | |
| | | public ComplexShapeElement(byte[] raw) |
| | | { |
| | | ComplexShapeElement(byte[] raw) { |
| | | super(raw); |
| | | } |
| | | |
| | | public int size() |
| | | { |
| | | public int size() { |
| | | return list.size(); |
| | | } |
| | | |
| | | public boolean isEmpty() |
| | | { |
| | | public boolean isEmpty() { |
| | | return list.isEmpty(); |
| | | } |
| | | |
| | | public boolean contains(Object o) |
| | | { |
| | | public boolean contains(Object o) { |
| | | return list.contains(o); |
| | | } |
| | | |
| | | public Iterator iterator() |
| | | { |
| | | public Iterator iterator() { |
| | | return list.iterator(); |
| | | } |
| | | |
| | | public Object[] toArray() |
| | | { |
| | | public Object[] toArray() { |
| | | return list.toArray(); |
| | | } |
| | | |
| | | public <T> T[] toArray(T[] ts) |
| | | { |
| | | public <T> T[] toArray(T[] ts) { |
| | | return list.toArray(ts); |
| | | } |
| | | |
| | | public boolean add(Element element) |
| | | { |
| | | public boolean add(Element element) { |
| | | return list.add(element); |
| | | } |
| | | |
| | | public boolean remove(Object o) |
| | | { |
| | | public boolean remove(Object o) { |
| | | return list.remove(o); |
| | | } |
| | | |
| | | public boolean containsAll(Collection<?> objects) |
| | | { |
| | | public boolean containsAll(Collection<?> objects) { |
| | | return list.containsAll(objects); |
| | | } |
| | | |
| | | public boolean addAll(Collection<? extends Element> elements) |
| | | { |
| | | public boolean addAll(Collection<? extends Element> elements) { |
| | | return list.addAll(elements); |
| | | } |
| | | |
| | | public boolean addAll(int i, Collection<? extends Element> elements) |
| | | { |
| | | public boolean addAll(int i, Collection<? extends Element> elements) { |
| | | return list.addAll(i, elements); |
| | | } |
| | | |
| | | public boolean removeAll(Collection<?> objects) |
| | | { |
| | | public boolean removeAll(Collection<?> objects) { |
| | | return list.removeAll(objects); |
| | | } |
| | | |
| | | public boolean retainAll(Collection<?> objects) |
| | | { |
| | | public boolean retainAll(Collection<?> objects) { |
| | | return list.retainAll(objects); |
| | | } |
| | | |
| | | public void clear() |
| | | { |
| | | public void clear() { |
| | | list.clear(); |
| | | } |
| | | |
| | | public Element get(int index) |
| | | { |
| | | public Element get(int index) { |
| | | return list.get(index); |
| | | } |
| | | |
| | | public Element set(int i, Element element) |
| | | { |
| | | public Element set(int i, Element element) { |
| | | return list.set(i, element); |
| | | } |
| | | |
| | | public void add(int i, Element element) |
| | | { |
| | | public void add(int i, Element element) { |
| | | list.add(i, element); |
| | | } |
| | | |
| | | public Element remove(int index) |
| | | { |
| | | public Element remove(int index) { |
| | | return list.remove(index); |
| | | } |
| | | |
| | | public int indexOf(Object o) |
| | | { |
| | | public int indexOf(Object o) { |
| | | return list.indexOf(o); |
| | | } |
| | | |
| | | public int lastIndexOf(Object o) |
| | | { |
| | | public int lastIndexOf(Object o) { |
| | | return list.lastIndexOf(o); |
| | | } |
| | | |
| | | public ListIterator listIterator() |
| | | { |
| | | public ListIterator listIterator() { |
| | | return list.listIterator(); |
| | | } |
| | | |
| | | public ListIterator listIterator(int index) |
| | | { |
| | | public ListIterator listIterator(int index) { |
| | | return list.listIterator(index); |
| | | } |
| | | |
| | | public List subList(int fromIndex, int toIndex) |
| | | { |
| | | public List subList(int fromIndex, int toIndex) { |
| | | return list.subList(fromIndex, toIndex); |
| | | } |
| | | |
| | | public Geometry toGeometry(GeometryFactory factory) |
| | | { |
| | | public Geometry toGeometry(GeometryFactory factory) { |
| | | ArrayList<Geometry> list = new ArrayList<Geometry>(); |
| | | |
| | | for (ListIterator it = listIterator(); it.hasNext();) |
| | | { |
| | | for (ListIterator it = listIterator(); it.hasNext();) { |
| | | Element element = (Element) it.next(); |
| | | |
| | | if (element instanceof ShapeElement) |
| | | { |
| | | if (((ShapeElement) element).getVerticeSize() == 0 || ((ShapeElement) element).getVerticeSize() > 1) |
| | | { |
| | | if (element instanceof ShapeElement) { |
| | | if (((ShapeElement) element).getVerticeSize() == 0 || ((ShapeElement) element).getVerticeSize() > 1) { |
| | | list.add(((ShapeElement) element).toGeometry(factory)); |
| | | } |
| | | } else if (element instanceof LineStringElement) |
| | | { |
| | | if (((LineStringElement) element).getVerticeSize() == 0 || ((LineStringElement) element).getVerticeSize() > 1) |
| | | { |
| | | } else if (element instanceof LineStringElement) { |
| | | if (((LineStringElement) element).getVerticeSize() == 0 || ((LineStringElement) element).getVerticeSize() > 1) { |
| | | list.add(((LineStringElement) element).toGeometry(factory)); |
| | | } |
| | | } else if (element instanceof LineElement) |
| | | { |
| | | if (((LineElement) element).getVertices().length == 0 || ((LineElement) element).getVertices().length > 1) |
| | | { |
| | | } else if (element instanceof LineElement) { |
| | | if (((LineElement) element).getVertices().length == 0 || ((LineElement) element).getVertices().length > 1) { |
| | | list.add(((LineElement) element).toGeometry(factory)); |
| | | } |
| | | } else if (element instanceof ArcElement) |
| | | { |
| | | } else if (element instanceof ArcElement) { |
| | | } |
| | | } |
| | | |
| | | |
| | | CoordinateList pts = new CoordinateList(); |
| | | for (Geometry geom : list) |
| | | { |
| | | for (Geometry geom : list) { |
| | | pts.add(geom.getCoordinates(), true); |
| | | } |
| | | |
| | | return factory.createLinearRing(pts.toCoordinateArray()); |
| | | } |
| | | |
| | | public static class ElementHandler extends Element.ElementHandler |
| | | { |
| | | public static class ElementHandler extends Element.ElementHandler { |
| | | private static ElementHandler instance = null; |
| | | |
| | | public ElementHandler() |
| | | { |
| | | public ElementHandler() { |
| | | super(ElementType.COMPLEXSHAPE); |
| | | } |
| | | |
| | | public static IElementHandler getInstance() |
| | | { |
| | | if (instance == null) |
| | | { |
| | | public static IElementHandler getInstance() { |
| | | if (instance == null) { |
| | | instance = new ElementHandler(); |
| | | } |
| | | |
| | | return instance; |
| | | } |
| | | |
| | | protected Element createElement(byte[] raw) |
| | | { |
| | | protected Element createElement(byte[] raw) { |
| | | return new ComplexShapeElement(raw); |
| | | } |
| | | } |