1 /* 2 * Fsgrep is a simple Java application which allows a user to 3 * search all files in a directory structure for lines matching 4 * a given pattern. Its functionality is a combination of the 5 * Unix 'find' and 'grep' utilities. 6 * Visit [http://fsgrep.sourceforge.net/] for more information. 7 * 8 * Copyright (C) 2003-2006 Murali Krishnan [murali_ca_us@users.sourceforge.net] 9 * 10 * Fsgrep is free software; you can redistribute it and/or modify 11 * it under the terms of version 2 of the GNU General Public 12 * License as published by the Free Software Foundation. 13 * 14 * Fsgrep is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with Fsgrep (see the file named LICENSE.txt); if not, write 21 * to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, 22 * Boston, MA 02111-1307 USA 23 */ 24 25 package mk.fsgrep.util; 26 27 import java.io.*; 28 import java.util.regex.*; 29 30 /*** 31 * Read a resource from the jar (classpath actually). 32 * 33 * @author Murali Krishnan 34 * 35 */ 36 public abstract class PackageResource { 37 38 //------------------------------------------------------------ 39 //- Class Variables 40 41 public static final String INCLUDE_PATH = "/include"; 42 43 public static final Pattern RE_MULTI_SLASH = Pattern.compile("[/////]+"); 44 45 46 //------------------------------------------------------------ 47 //- Class Functions 48 49 50 51 //------------------------------------------------------------ 52 //- Instance Variables 53 54 private String _uri = null; 55 private Object _content = null; 56 57 58 59 //------------------------------------------------------------ 60 //- Constructors 61 62 public PackageResource(String pUri) { 63 String path = RE_MULTI_SLASH.matcher(pUri).replaceAll("/"); 64 65 if (!path.startsWith(INCLUDE_PATH)) { 66 path = INCLUDE_PATH + "/" + path; 67 } 68 69 _uri = RE_MULTI_SLASH.matcher(path).replaceAll("/"); 70 } 71 72 73 //------------------------------------------------------------ 74 //- Accessors 75 76 public String getUri() {return _uri;} 77 78 79 80 //------------------------------------------------------------ 81 //- Settors 82 83 84 85 //------------------------------------------------------------ 86 //- Private/Protected Utility Functions 87 88 protected Object getContent() { 89 if (_content == null) { 90 _content = readContent(); 91 } 92 93 return _content; 94 } 95 96 97 98 //------------------------------------------------------------ 99 //- Public Interface Functions 100 101 public String toString() { 102 String result = "Resource[" + getUri() + "]"; 103 104 return result; 105 } 106 107 108 109 //------------------------------------------------------------ 110 //- Class Interface Functions 111 112 protected abstract Object readContent(); 113 114 115 //------------------------------------------------------------ 116 //- Inner Classes 117 118 119 120 //------------------------------------------------------------ 121 //- Main 122 123 124 125 }