1 26 27 package it.stefanochizzolini.clown.objects; 28 29 import it.stefanochizzolini.clown.documents.Document; 30 import it.stefanochizzolini.clown.files.File; 31 32 49 public abstract class PdfObjectWrapper<TDataObject extends PdfDataObject> 50 { 51 private PdfDirectObject baseObject; 55 private TDataObject baseDataObject; 56 private PdfIndirectObject container; 57 59 protected PdfObjectWrapper( 61 File context, 62 TDataObject baseDataObject 63 ) 64 { 65 this( 66 context.getIndirectObjects().add(baseDataObject).getReference(), 67 null 68 ); 69 } 70 71 76 protected PdfObjectWrapper( 77 PdfDirectObject baseObject, 78 PdfIndirectObject container 79 ) 80 { 81 this.baseObject = baseObject; 82 this.baseDataObject = (TDataObject)File.resolve(baseObject); 83 84 setContainer(container); 85 } 86 88 93 public TDataObject getBaseDataObject( 94 ) 95 {return baseDataObject;} 96 97 101 public PdfDirectObject getBaseObject( 102 ) 103 {return baseObject;} 104 105 109 public abstract Object clone( 110 Document context 111 ); 112 113 120 public boolean delete( 121 ) 122 { 123 if(baseObject instanceof PdfReference) { 126 ((PdfReference)baseObject).delete(); 127 return true; 128 } 129 else {return false;} 131 } 132 133 138 public PdfIndirectObject getContainer( 139 ) 140 {return container;} 141 142 145 public Document getDocument( 146 ) 147 {return container.getFile().getDocument();} 148 149 152 public File getFile( 153 ) 154 {return container.getFile();} 155 156 159 public void update( 160 ) 161 {container.update();} 162 164 protected void setBaseDataObject( 166 TDataObject value 167 ) 168 {baseDataObject = value;} 169 170 protected void setBaseObject( 171 PdfDirectObject value 172 ) 173 {baseObject = value;} 174 176 181 public void setContainer( 182 PdfIndirectObject value 183 ) 184 { 185 if(baseObject instanceof PdfReference) {container = ((PdfReference)baseObject).getIndirectObject();} 188 else {container = value;} 190 } 191 } | Popular Tags |