1 package org.catacomb.druid.manifest; 2 3 import org.catacomb.report.E; 4 import org.catacomb.util.FileUtil; 5 6 import java.io.File; 7 8 9 public class DecFile { 10 11 public String directory; 12 public String name; 13 public String extension; 14 15 public static final int CLASSPATH = 0; 16 public static final int FILE_SYSTEM = 1; 17 private int p_accessMethod; 18 private File p_rootFolder; 19 20 private String p_fullID; 21 private String p_cachedText; 22 private Object p_cachedObject; 23 24 25 26 public DecFile() { 27 } 28 29 30 public DecFile(String psf, String nm) { 31 directory = psf; 32 name = nm; 33 cutName(); 34 } 35 36 37 public DecFile(File f, File rtFolder) { 38 p_accessMethod = FILE_SYSTEM; 39 p_rootFolder = rtFolder; 40 41 name= f.getName(); 42 directory = FileUtil.getRelativeDirectory(f, rtFolder); 43 44 cutName(); 45 } 46 47 48 49 50 public DecFile(String fullPath) { 51 if (fullPath.startsWith("file:")) { 52 String sp = fullPath.substring(5, fullPath.length()); 53 File f = new File(sp); 54 directory = f.getParentFile().getAbsolutePath(); 55 name = f.getName(); 56 cutName(); 57 setFileSystemAccess(new File("/"), ""); 58 } else { 59 E.missing(); 60 } 61 } 62 63 64 public String toString() { 65 return "decFile dir=" + directory + " name=" + name + " ext=" + extension + 66 " access=" + p_accessMethod; 67 68 } 69 70 71 private void cutName() { 72 if (name.endsWith(".xml")) { 73 name = name.substring(0, name.length() - 4); 74 extension = "xml"; 75 } else { 76 extension = ""; 77 E.error(" - DecFile in DecManifest only handles " + "extension .xml so far"); 78 } 79 } 80 81 82 public String getName() { 83 return name; 84 } 85 86 87 public String getDirectory() { 88 return directory; 89 } 90 91 92 public String getFullID() { 93 if (p_fullID == null) { 94 p_fullID = makeFullID(); 95 } 96 return p_fullID; 97 } 98 99 100 private String makeFullID() { 101 if (directory == null) { 102 directory = ""; 103 E.error("null directory in DecFile"); 104 } 105 String sret = null; 106 if (directory.length() > 0) { 107 if (directory.endsWith("/")) { 108 sret = directory + name; 109 } else { 110 sret = directory + "/" + name; 111 } 112 } else { 113 sret = name; 114 } 115 sret = sret.replaceAll("/", "."); 116 return sret; 117 } 118 119 120 public void setFileSystemAccess(File fdir, String cproot) { 121 directory = cproot + directory; 122 p_accessMethod = FILE_SYSTEM; 123 p_rootFolder = fdir; 124 } 125 126 127 public void setClasspathAccess() { 128 p_accessMethod = CLASSPATH; 129 } 130 131 132 public boolean inClasspath() { 133 return (p_accessMethod == CLASSPATH); 134 } 135 136 137 public boolean inFileSystem() { 138 return (p_accessMethod == FILE_SYSTEM); 139 } 140 141 142 public void setCachedObject(Object obj) { 143 p_cachedObject = obj; 144 } 145 146 147 public boolean hasCachedObject() { 148 return (p_cachedObject != null); 149 } 150 151 152 public Object getCachedObject() { 153 return p_cachedObject; 154 } 155 156 157 public void setCachedText(String s) { 158 p_cachedText = s; 159 } 160 161 162 public boolean hasCachedText() { 163 return (p_cachedText != null); 164 } 165 166 167 public String getCachedText() { 168 return p_cachedText; 169 } 170 171 172 public void clearObjectCache() { 173 p_cachedObject = null; 174 } 175 176 177 public void clearTextCache() { 178 p_cachedText = null; 179 } 180 181 182 public File getSourceFile() { 183 String fnm = name + "." + extension; 184 185 File fdir = null; 186 if (p_rootFolder != null) { 187 fdir = new File(p_rootFolder, directory); 188 } else { 189 fdir = new File(directory); 190 } 191 return new File(fdir, fnm); 192 } 193 194 195 public String getPath() { 196 String sd = directory; 197 if (sd == null || sd.length() == 0) { 198 sd = ""; 199 } else { 200 sd = directory + "/'"; 201 } 202 return sd + name + "." + extension; 203 204 } 205 206 207 208 }