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 28 import java.io.*; 29 import java.util.HashMap; 30 import java.util.Map; 31 32 33 /*** 34 * Read a resource from the jar (classpath actually) and return it as a string. 35 * 36 * @author Murali Krishnan 37 * 38 */ 39 public class TextResource extends PackageResource { 40 41 //------------------------------------------------------------ 42 //- Class Variables 43 44 private static final Map<String,String> sCache = new HashMap<String,String>(); 45 46 47 48 //------------------------------------------------------------ 49 //- Class Functions 50 51 public static String get(String pUri) { 52 String result = sCache.get(pUri); 53 54 if (result == null) { 55 TextResource resource = new TextResource(pUri); 56 result = resource.toString(); 57 sCache.put(pUri, result); 58 } 59 60 return result; 61 } 62 63 64 //------------------------------------------------------------ 65 //- Instance Variables 66 67 68 69 //------------------------------------------------------------ 70 //- Constructors 71 72 protected TextResource(String pUri) { 73 super(pUri); 74 } 75 76 77 //------------------------------------------------------------ 78 //- Accessors 79 80 81 82 //------------------------------------------------------------ 83 //- Settors 84 85 86 87 //------------------------------------------------------------ 88 //- Private/Protected Utility Functions 89 90 protected synchronized Object readContent() { 91 String result = ""; // Error case default. 92 93 StringBuffer buffer = new StringBuffer(); 94 InputStream is = getClass().getResourceAsStream(getUri()); 95 if (is != null) { 96 try { 97 InputStreamReader isr = new InputStreamReader(is); 98 BufferedReader br = new BufferedReader(isr); 99 100 for (String line=br.readLine(); line!=null; line=br.readLine()) { 101 buffer.append(line).append("\n"); 102 } 103 104 br.close(); 105 isr.close(); 106 is.close(); 107 108 result = buffer.toString().trim(); 109 } catch (Exception ex) { 110 // Could be IOException, but would be NullPointerException 111 // if uri points to a non-existent resource. 112 System.err.println("Could not fetch the text resource [" + 113 getUri() + "]."); 114 ex.printStackTrace(); 115 } 116 } else { 117 System.err.println("Invalid resource [" + getUri() + "]"); 118 } 119 120 return result; 121 } 122 123 124 125 //------------------------------------------------------------ 126 //- Public Interface Functions 127 128 public String toString() { 129 String result = (String) getContent(); 130 131 return result; 132 } 133 134 135 136 //------------------------------------------------------------ 137 //- Class Interface Functions 138 139 140 141 //------------------------------------------------------------ 142 //- Inner Classes 143 144 145 146 //------------------------------------------------------------ 147 //- Main 148 149 150 151 }