forked from geodmms/xdgnjobs

Dennis Kao
2014-01-15 94ae08701bbd7585a0b7e5a92d1975965a503c03
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/ComplexShapeElement.java
@@ -19,196 +19,156 @@
 *
 * @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);
        }
    }