Package org.geotools.data.dxf.header

Source Code of org.geotools.data.dxf.header.DXFEntities

package org.geotools.data.dxf.header;

import java.io.EOFException;
import java.io.IOException;
import java.util.Vector;

import org.geotools.data.dxf.entities.DXFArc;
import org.geotools.data.dxf.entities.DXFCircle;
import org.geotools.data.dxf.entities.DXFDimension;
import org.geotools.data.dxf.entities.DXFEllipse;
import org.geotools.data.dxf.entities.DXFEntity;
import org.geotools.data.dxf.entities.DXFInsert;
import org.geotools.data.dxf.entities.DXFLine;
import org.geotools.data.dxf.entities.DXFLwPolyline;
import org.geotools.data.dxf.entities.DXFPoint;
import org.geotools.data.dxf.entities.DXFPolyline;
import org.geotools.data.dxf.entities.DXFSolid;
import org.geotools.data.dxf.entities.DXFSpLine;
import org.geotools.data.dxf.entities.DXFText;
import org.geotools.data.dxf.entities.DXFTrace;
import org.geotools.data.dxf.parser.DXFParseException;
import org.geotools.data.dxf.parser.DXFCodeValuePair;
import org.geotools.data.dxf.parser.DXFConstants;
import org.geotools.data.dxf.parser.DXFGroupCode;
import org.geotools.data.dxf.parser.DXFLineNumberReader;
import org.geotools.data.dxf.parser.DXFUnivers;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
*
*
* @source $URL$
*/
public class DXFEntities implements DXFConstants {

    private static final Log log = LogFactory.getLog(DXFEntities.class);
    public Vector<DXFEntity> theEntities = new Vector<DXFEntity>();

    public DXFEntities() {
    }

    public DXFEntities(Vector<DXFEntity> sEntities) {
        if (sEntities == null) {
            sEntities = new Vector<DXFEntity>();
        }
        this.theEntities = sEntities;
    }

    public static DXFEntities readEntities(DXFLineNumberReader br, DXFUnivers univers) throws IOException {
        Vector<DXFEntity> sEnt = new Vector<DXFEntity>();

        DXFCodeValuePair cvp = null;
        DXFGroupCode gc = null;

        int sln = br.getLineNumber();
        log.debug(">Enter at line: " + sln);
        boolean doLoop = true;
        while (doLoop) {
            cvp = new DXFCodeValuePair();
            try {
                gc = cvp.read(br);
            } catch (DXFParseException ex) {
                throw new IOException("DXF parse error" + ex.getLocalizedMessage());
            } catch (EOFException e) {
                doLoop = false;
                break;
            }

            switch (gc) {
                case TYPE:
                    DXFEntity dxfe = null;
                    String type = cvp.getStringValue();
                    if (type.equals(ENDSEC) || type.equals(ENDBLK)) {
                        doLoop = false;
                        break;
                    } else if (type.equals(LINE)) {
                        dxfe = DXFLine.read(br, univers);
                    } else if (type.equals(ARC)) {
                        dxfe = DXFArc.read(br, univers);
                    } else if (type.equals(CIRCLE)) {
                        dxfe = DXFCircle.read(br, univers);
                    } else if (type.equals(POLYLINE)) {
                             dxfe = DXFPolyline.read(br, univers);
                    } else if (type.equals(LWPOLYLINE)) {
                               dxfe = DXFLwPolyline.read(br, univers);
                    } else if (type.equals(POINT)) {
                        dxfe = DXFPoint.read(br, univers);
                    } else if (type.equals(SOLID)) {
                        dxfe = DXFSolid.read(br, univers);
                    } else if (type.equals(TEXT)) {
                        dxfe = DXFText.read(br, univers);
                    } else if (type.equals(MTEXT)) {
                        dxfe = DXFText.read(br, univers);
                    } else if (type.equals(INSERT)) {
                        dxfe = DXFInsert.read(br, univers);
                    } else if (type.equals(DIMENSION)) {
                        dxfe = DXFDimension.read(br, univers);
                    } else if (type.equals(TRACE)) {
                        dxfe = DXFTrace.read(br, univers);
                    } else if (type.equals(ELLIPSE)) {
                        dxfe = DXFEllipse.read(br, univers);
                    } else if (type.equals(SPLINE)) {
                        dxfe = DXFSpLine.read(br, univers);
                    }
                    if (dxfe != null) {
                        sEnt.add(dxfe);
                    }
                    break;
                default:
                    break;
            }

        }
        DXFEntities e = new DXFEntities(sEnt);
        log.debug(e.toString(sEnt.size()));
        log.debug(">Exit at line: " + br.getLineNumber());
        return e;
    }

    public String toString(int numEntities) {
        StringBuffer s = new StringBuffer();
        s.append("DXFEntities [");
        s.append("numEntities: ");
        s.append(numEntities);
        s.append("]");
        return s.toString();
    }
}
TOP

Related Classes of org.geotools.data.dxf.header.DXFEntities

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.