package org.hccp.pdf; /** * Class representing an entry into a cross-reference table. Should not be explicitly * created when building documents. Management of entry objects should be left to * the {@link CrossReferenceTable} object. * * @see CrossReferenceTable * @see CrossReferenceTableEntryException **/ public class Entry { private String objectNumber; private String genNumber; private static final String FREE = "f"; private static final String IN_USE = "n"; private static final String EOL = "\n"; private boolean isFree; Entry() { isFree = false; } public void setIsFree(boolean flag) { isFree = flag; } public void setObjectNumber(String s) { for(int i = s.length(); i < 10; i++) { s = "0" + s; } objectNumber = s; } public void setGenNumber(String s) { for(int i = s.length(); i < 5; i++) { s = "0" + s; } genNumber = s; } public String getValue() throws CrossReferenceTableEntryException { StringBuffer sb = new StringBuffer(20); sb.append(objectNumber); sb.append(" "); sb.append(genNumber); sb.append(" "); if(isFree) { sb.append(FREE); } else { sb.append(IN_USE); } sb.append(" "); sb.append(EOL); if(sb.length() != 20) { throw new CrossReferenceTableEntryException("Illegal length for Entry: (Length: " + sb.length() + ")" + sb.toString()); } else { return sb.toString(); } } }