1 15 package org.apache.hivemind.util; 16 17 import java.util.Locale ; 18 19 import org.apache.hivemind.Resource; 20 21 29 public abstract class AbstractResource implements Resource 30 { 31 private String _path; 32 private String _name; 33 private String _folderPath; 34 private Locale _locale; 35 36 protected AbstractResource(String path) 37 { 38 this(path, null); 39 } 40 41 protected AbstractResource(String path, Locale locale) 42 { 43 _path = path; 44 _locale = locale; 45 } 46 47 public String getName() 48 { 49 if (_name == null) 50 split(); 51 52 return _name; 53 } 54 55 public Resource getRelativeResource(String name) 56 { 57 if (name.startsWith("/")) 58 { 59 if (name.equals(_path)) 60 return this; 61 62 return newResource(name); 63 } 64 65 if (_folderPath == null) 66 split(); 67 68 if (name.equals(_name)) 69 return this; 70 71 return newResource(_folderPath + name); 72 } 73 74 public String getPath() 75 { 76 return _path; 77 } 78 79 public Locale getLocale() 80 { 81 return _locale; 82 } 83 84 85 protected abstract Resource newResource(String path); 86 87 private void split() 88 { 89 int lastSlashx = _path.lastIndexOf('/'); 90 91 _folderPath = _path.substring(0, lastSlashx + 1); 92 _name = _path.substring(lastSlashx + 1); 93 } 94 95 96 101 102 public boolean equals(Object obj) 103 { 104 if (obj == null) 105 return false; 106 107 if (obj.getClass().equals(getClass())) 108 { 109 AbstractResource otherLocation = (AbstractResource) obj; 110 111 return _path.equals(otherLocation._path); 112 } 113 114 return false; 115 } 116 } 117 | Popular Tags |