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.DXFLineNumberReader; import org.geotools.data.dxf.entities.DXFEntity; import org.geotools.data.dxf.parser.DXFCodeValuePair; import org.geotools.data.dxf.parser.DXFConstants; import org.geotools.data.dxf.parser.DXFGroupCode; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class DXFLayer extends DXFEntity implements DXFConstants { private static final Log log = LogFactory.getLog(DXFLayer.class); public static final String DEFAULT_NAME = "default"; public int _flag = 0; public Vector<DXFEntity> theEnt = new Vector<DXFEntity>(); public DXFLayer(String nom, int c) { super(c, null, 0, null, DXFTables.defaultThickness); setName(nom); } public DXFLayer(String nom, int c, int flag) { super(c, null, 0, null, DXFTables.defaultThickness); setName(nom); _flag = flag; } @Override public void setVisible(boolean bool) { super.setVisible(bool); // FIXED; added 'super.' for (int i = 0; i < theEnt.size(); i++) { ((DXFEntity) theEnt.get(i)).setVisible(bool); } } public static DXFLayer read(DXFLineNumberReader br) throws NumberFormatException, IOException { String name = ""; int f = 0, color = 0; 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: case VARIABLE_NAME: br.reset(); doLoop = false; break; case NAME: name = cvp.getStringValue(); break; case COLOR: color = cvp.getShortValue(); break; case INT_1: f = cvp.getShortValue(); break; default: } } DXFLayer l = new DXFLayer(name, color, f); if (color < 0) { l.setVisible(false); } log.debug(l.toString(name, color, f)); log.debug(">Exit at line: " + br.getLineNumber()); return l; } public String toString(String name, int color, int f) { StringBuffer s = new StringBuffer(); s.append("DXFLayer ["); s.append("name: "); s.append(name + ", "); s.append("color: "); s.append(color + ", "); s.append("f: "); s.append(f); s.append("]"); return s.toString(); } @Override public DXFEntity translate(double x, double y) { return this; } public DXFEntity clone(){ return this; } }