Changeset 16838 for gli/trunk/src/org/greenstone/gatherer/collection
- Timestamp:
- 2008-08-15T18:37:16+12:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
gli/trunk/src/org/greenstone/gatherer/collection/CollectionTreeNode.java
r16834 r16838 51 51 private boolean is_srcreplaceable = false; 52 52 53 private String displayFileName = null;54 55 53 public CollectionTreeNode(File file) 56 54 { … … 61 59 this.is_srcreplaceable = CollectionDesignManager.plugin_manager.isFileSrcReplaceable(file); 62 60 63 displayFileName = calcDisplayString();64 }65 66 67 /** This method returns a string representation of the filenodes in the Collection68 * Tree, that can then be displayed in the tree.69 * We'll initially assume that the filenames are utf8 encoded and so convert the70 * filename into utf8 for proper presentation in the Collection tree pane.71 * If the filenames are not utf8, then the conversion would have introduced funny72 * characters. Therefore, when converting to utf8, if the converted filename73 * contains the special character '\ufffd', then we know the conversion did not work74 * and we return the original string which may or may not be properly presented by75 * default.76 * See http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/CharsetDecoder.html77 * which says "How a decoding error is handled depends upon the action requested for78 * that type of error, which is described by an instance of the CodingErrorAction class.79 * The possible error actions are to ignore the erroneous input, report the error to80 * the invoker via the returned CoderResult object, or replace the erroneous input with81 * the current value of the replacement string. The replacement has the initial value82 * "\uFFFD"; its value may be changed via the replaceWith method."83 * The following made me think that String(byte[], String charsetName) constructor may84 * use the replacement value \uFFFD.85 * http://www.experts-exchange.com/Programming/Programming_Languages/Java/Q_20512969.html86 * mentions the following which made me think of this:87 * convertedStr = convertedStr.replace('\ufffd', ' ');88 */89 protected String calcDisplayString() {90 String filename = super.toString();91 try{92 String utf8filename = new String(filename.getBytes(), "UTF8");93 if(utf8filename.indexOf('\ufffd') == -1) {94 return utf8filename;95 } else { // contains the character indicating that it's invalid utf896 // return the original string97 return filename;98 }99 } catch(java.io.UnsupportedEncodingException e) {100 return filename;101 }102 61 } 103 62 … … 122 81 return is_srcreplaceable; 123 82 } 124 125 /** This method returns a string representation of the filenodes in the Collection126 * Tree, which is what will be displayed in the tree. It tries to convert it into127 * some common encoding formats. Failing that, the unchanged filepath is returned.128 * @see displayString129 */130 public String toString()131 {132 if(displayFileName == null) {133 displayFileName = calcDisplayString();134 }135 return displayFileName;136 }137 83 }
Note:
See TracChangeset
for help on using the changeset viewer.