/* * GNTFile.java * * Created on November 21, 2003, 9:26 PM */ package gnt; import java.io.*; import java.util.*; // can delete later import palm.conduit.*; /** * * @author Mike Kirschman */ public class GNTFile { private boolean editable = false; private boolean compressed = false; private int recNumber = -1; private int numGraphics = -1; private int category = -1; private byte[] name = new byte[65]; private static final byte NULL = 0; private String text = null; /** Creates a new instance of GNTFile */ public GNTFile() { java.util.Arrays.fill(name, NULL); } public boolean equals(Object o) { if (o == null) return false; GNTFile f = (GNTFile) o; if (! this.getName().equals(f.getName())) return false; return true; } public void readFileText(DataInputStream in) throws IOException { StringBuffer text = new StringBuffer(500); InputStreamReader inReader = new InputStreamReader(in); int inputChar = inReader.read(); while (inputChar != -1) { text.append((char) inputChar); inputChar = inReader.read(); } this.text = text.toString(); } public void writeFileText(DataOutputStream out) throws IOException { throw new UnsupportedOperationException(); } public void readData(DataInputStream in) throws IOException { setEditable(gnt.Util.readBoolean(in)); setCompressed(gnt.Util.readBoolean(in)); setRecordNumber(gnt.Util.readUInt16(in)); setNumberGraphics(gnt.Util.readUInt16(in)); setCategory(gnt.Util.readUInt8(in)); setName(in); } public void writeData(DataOutputStream out) throws IOException { throw new UnsupportedOperationException(); // gnt.Util.writeBoolean(out, isEditable()); // gnt.Util.writeBoolean(out, isCompressed()); // gnt.Util.writeUInt16(out, getRecordNumber()); // gnt.Util.writeUInt16(out, getNumberGraphics()); // //gnt.Util.writeUInt8(out, getCategory()); // out.writeChars(getName()); } public void printRecord(PrintWriter out, String delimiter) throws IOException { out.print("editable=" + isEditable() + delimiter); out.print("compressed=" + isCompressed() + delimiter); out.print("recordNumber=" + getRecordNumber() + delimiter); out.print("numberOfGraphics=" + getNumberGraphics() + delimiter); out.print("categoryNumber=" + getCategory() + delimiter); out.print("name=" + getName() + delimiter); out.print("text=" + getFileText() + delimiter); } public void readRecord(String data, String delimiter){ String nameValue; // Break out the individual fields inside this options section of the data // StringTokenizer lineTokenizer = new StringTokenizer(data, delimiter); String[] tokens = Util.split(data, delimiter); // Cycle through each field in the options // while(lineTokenizer.hasMoreElements()) { for (int i = 0; i < tokens.length; i++) { // nameValue = lineTokenizer.nextToken(); nameValue = tokens[i]; int equalIdx = nameValue.indexOf('='); // call the appropriate method based on the name String name = nameValue.substring(equalIdx); if (name.equals("editable")) setEditable(Boolean.getBoolean(nameValue.substring(equalIdx + 1))); else if (name.equals("compressed")) setCompressed(Boolean.getBoolean(nameValue.substring(equalIdx + 1))); else if (name.equals("recordNumber")) setRecordNumber(Integer.parseInt(nameValue.substring(equalIdx + 1))); else if (name.equals("numberOfGraphics")) setNumberGraphics(Integer.parseInt(nameValue.substring(equalIdx + 1))); else if (name.equals("categoryNumber")) setCategory(Integer.parseInt(nameValue.substring(equalIdx + 1))); else if (name.equals("name")) setName(nameValue.substring(equalIdx + 1)); else if (name.equals("text")) this.setFileText(nameValue.substring(equalIdx + 1)); } } public boolean isEditable() { return editable; } public boolean isCompressed() { return compressed; } public int getRecordNumber() { return recNumber; } public int getNumberGraphics() { return numGraphics; } public int getCategory() { return category; } public String getName() { int zeroIdx; // find first ((byte) 0) in the name for (zeroIdx = 0; zeroIdx < name.length - 1 && name[zeroIdx] != ((byte) 0); zeroIdx++) ; return (new String(name, 0, zeroIdx)).trim(); } public String getFileText() { return this.text.substring(0, this.text.indexOf('\0')); } public void setEditable(boolean editable) { this.editable = editable; } public void setCompressed(boolean compressed) { this.compressed = compressed; } public void setRecordNumber(int recordNumber) { this.recNumber = recordNumber; } public void setCategory(int category) { this.category = category; } public void setName(DataInputStream in) throws IOException { in.read(this.name); } public void setName(String name) { byte[] bytes = new byte[65]; bytes = name.getBytes(); Arrays.fill(this.name, (byte) 0); for (int i = 0; i < bytes.length; i++) this.name[i] = bytes[i]; } public void setNumberGraphics(int numberGraphics) { this.numGraphics = numberGraphics; } public void setFileText(String text) { this.text = text; } }