Package org.geotools.data.dxf.header

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

package org.geotools.data.dxf.header;

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


import org.geotools.data.dxf.parser.DXFParseException;
import org.geotools.data.dxf.parser.DXFCodeValuePair;
import org.geotools.data.dxf.parser.DXFGroupCode;
import org.geotools.data.dxf.parser.DXFLineNumberReader;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
*
*
* @source $URL$
*/
public class DXFLineType {

    private static final Log log = LogFactory.getLog(DXFLineType.class);
    public static final String DEFAULT_NAME = "default";
    public String _name = "DXFLineType";                       // 2
    public String _value = "";          // 3
    public float _length = 0;          // 40
    public float _count = 0;          // 73
    public Vector<Float> _spacing = new Vector<Float>()// 49

    public DXFLineType() {
    }

    public DXFLineType(String nom, String value, float length, float count, Vector<Float> spacing) {
        _name = nom;
        _value = value;
        _length = length;
        _count = count;

        if (spacing != null) {
            _spacing = spacing;
        }
    }

    public static DXFLineType read(DXFLineNumberReader br) throws IOException {
        String value = "", name = "";
        Vector<Float> spacing = new Vector<Float>();
        float count = 0, length = 0;

        int sln = br.getLineNumber();
        log.debug(">Enter at line: " + sln);
        DXFCodeValuePair cvp = null;
        DXFGroupCode gc = null;

        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:
                case VARIABLE_NAME:
                    br.reset();
                    doLoop = false;
                    break;
                case NAME:
                    name = cvp.getStringValue();
                    break;
                case TEXT_OR_NAME_2:
                    value = cvp.getStringValue();
                    break;
                case INT_4:
                    count = cvp.getShortValue();
                    break;
                case DOUBLE_1:
                    length = (float) cvp.getDoubleValue();
                    break;
                case REPEATED_DOUBLE_VALUE:
                    spacing.add((float) cvp.getDoubleValue());
                    break;
                default:
                    break;
            }

        }

        log.debug(">Exit at line: " + br.getLineNumber());
        if (value.equals("") && name.equals("")) {
            return null;
        } else {
            DXFLineType e = new DXFLineType(name, value, length, count, spacing);
            log.debug(e.toString(name, value, length, count));
            return e;
        }
    }

    public String toString(String name, String value, float length, float count) {
        StringBuffer s = new StringBuffer();
        s.append("DXFLineType [");
        s.append("name: ");
        s.append(name + ", ");
        s.append("value: ");
        s.append(value + ", ");
        s.append("length: ");
        s.append(length + ", ");
        s.append("count: ");
        s.append(count);
        s.append("]");
        return s.toString();
    }
}
TOP

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

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.