Changeset 18354
- Timestamp:
- 2009-01-12T11:17:50+13:00 (15 years ago)
- Location:
- gli/branches/rtl-gli/src/org/greenstone/gatherer/file
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
gli/branches/rtl-gli/src/org/greenstone/gatherer/file/FileManager.java
r13605 r18354 45 45 import org.greenstone.gatherer.collection.CollectionTreeNode; 46 46 import org.greenstone.gatherer.gui.ExplodeMetadataDatabasePrompt; 47 import org.greenstone.gatherer.gui.ReplaceSrcDocWithHtmlPrompt; 47 48 import org.greenstone.gatherer.gui.GProgressBar; 48 49 import org.greenstone.gatherer.gui.NewFolderOrFilePrompt; … … 179 180 source_files[i] = source_nodes[i].getFile(); 180 181 } 181 RemoteGreenstoneServer.uploadFilesIntoCollection(collection_name, source_files, target_node.getFile());182 Gatherer.remoteGreenstoneServer.uploadFilesIntoCollection(collection_name, source_files, target_node.getFile()); 182 183 } 183 184 else if (type == FileJob.DELETE) { 184 185 // Deletes: delete each top-level file/directory one at a time 185 186 for (int i = 0; i < source_nodes.length; i++) { 186 RemoteGreenstoneServer.deleteCollectionFile(collection_name, source_nodes[i].getFile());187 Gatherer.remoteGreenstoneServer.deleteCollectionFile(collection_name, source_nodes[i].getFile()); 187 188 } 188 189 } … … 190 191 // Moves: move each top-level file/directory one at a time 191 192 for (int i = 0; i < source_nodes.length; i++) { 192 RemoteGreenstoneServer.moveCollectionFile(collection_name, source_nodes[i].getFile(), target_node.getFile()); 193 Gatherer.remoteGreenstoneServer.moveCollectionFile( 194 collection_name, source_nodes[i].getFile(), target_node.getFile()); 193 195 } 194 196 } … … 201 203 } 202 204 203 204 205 public void explodeMetadataDatabase(File file) 205 206 { … … 208 209 } 209 210 211 // Works with replace_srcdoc_with_html.pl 212 public void replaceSrcDocWithHtml(File[] files) 213 { 214 // This must go in a separate thread because we need the progress bar to work (remote Greenstone server) 215 new ReplaceSrcDocWithHtmlPromptTask(files).start(); 216 } 210 217 211 218 private class ExplodeMetadataDatabasePromptTask … … 222 229 { 223 230 ExplodeMetadataDatabasePrompt emp = new ExplodeMetadataDatabasePrompt(metadata_database_file); 231 } 232 } 233 234 // Works with replace_srcdoc_with_html.pl 235 private class ReplaceSrcDocWithHtmlPromptTask 236 extends Thread 237 { 238 private File[] replace_these_srcdoc_files = null; 239 240 public ReplaceSrcDocWithHtmlPromptTask(File[] replace_these_srcdoc_files) 241 { 242 this.replace_these_srcdoc_files = replace_these_srcdoc_files; 243 } 244 245 public void run() 246 { 247 ReplaceSrcDocWithHtmlPrompt prompt = new ReplaceSrcDocWithHtmlPrompt(replace_these_srcdoc_files); 224 248 } 225 249 } … … 249 273 // ... but only if it is inside the collection and we haven't already downloaded it 250 274 if (file.getAbsolutePath().startsWith(Gatherer.getCollectDirectoryPath()) && file.length() == 0) { 251 if (RemoteGreenstoneServer.downloadCollectionFile(CollectionManager.getLoadedCollectionName(), file).equals("")) { 275 if (Gatherer.remoteGreenstoneServer.downloadCollectionFile( 276 CollectionManager.getLoadedCollectionName(), file).equals("")) { 252 277 // Something has gone wrong downloading the file 253 278 return; … … 324 349 folder_file.createNewFile(); 325 350 if (Gatherer.isGsdlRemote) { 326 RemoteGreenstoneServer.uploadCollectionFile(CollectionManager.getLoadedCollectionName(), folder_file); 351 Gatherer.remoteGreenstoneServer.uploadCollectionFile( 352 CollectionManager.getLoadedCollectionName(), folder_file); 327 353 } 328 354 } … … 330 356 folder_file.mkdirs(); 331 357 if (Gatherer.isGsdlRemote) { 332 RemoteGreenstoneServer.newCollectionDirectory(CollectionManager.getLoadedCollectionName(), folder_file); 358 Gatherer.remoteGreenstoneServer.newCollectionDirectory( 359 CollectionManager.getLoadedCollectionName(), folder_file); 333 360 } 334 361 } … … 390 417 file_queue.addJob(System.currentTimeMillis(), collection_tree, new FileNode[] { collection_tree_node }, collection_tree, new_collection_tree_node, FileJob.RENAME); 391 418 if (Gatherer.isGsdlRemote) { 392 RemoteGreenstoneServer.moveCollectionFile(CollectionManager.getLoadedCollectionName(), collection_file, new_collection_file); 419 Gatherer.remoteGreenstoneServer.moveCollectionFile( 420 CollectionManager.getLoadedCollectionName(), collection_file, new_collection_file); 393 421 } 394 422 } … … 439 467 file_queue.addJob(System.currentTimeMillis(), Gatherer.g_man.gather_pane.workspace_tree, new FileNode[] { source_node }, collection_tree, (FileNode)collection_tree_node.getParent(), FileJob.COPY_FILE_ONLY); 440 468 if (Gatherer.isGsdlRemote) { 441 RemoteGreenstoneServer.uploadFilesIntoCollection(CollectionManager.getLoadedCollectionName(), new File[] { new_file }, target_directory); 469 Gatherer.remoteGreenstoneServer.uploadFilesIntoCollection( 470 CollectionManager.getLoadedCollectionName(), new File[] { new_file }, target_directory); 442 471 } 443 472 // do a replace of old file with new file -
gli/branches/rtl-gli/src/org/greenstone/gatherer/file/FileNode.java
r11762 r18354 20 20 protected FileSystemModel model = null; 21 21 protected MutableTreeNode parent = null; 22 /** The string that is displayed as the filename. Attempts to be in the correct encoding. */ 23 protected String displayFileName = null; 22 24 23 25 … … 27 29 28 30 // Files cannot have children 29 if (file != null && file.isFile()) {31 if (file != null && !file.isDirectory()) { //file.isFile()) { 30 32 // Cache this result to prevent unceasing missing disk messages being thrown if the 31 33 // removable media was, um, removed after directory mapped 32 34 this.allows_children = false; 33 } 34 } 35 35 displayFileName = calcDisplayString(); 36 } 37 } 38 39 40 /** This method returns a string representation of the filenodes in the Collection 41 * Tree, that can then be displayed in the tree. 42 * We'll initially assume that the filenames are utf8 encoded and so convert the 43 * filename into utf8 for proper presentation in the Collection tree pane. 44 * If the filenames are not utf8, then the conversion would have introduced funny 45 * characters. Therefore, when converting to utf8, if the converted filename 46 * contains the special character '\ufffd', then we know the conversion did not work 47 * and we return the original string which may or may not be properly presented by 48 * default. 49 * See http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/CharsetDecoder.html 50 * which says "How a decoding error is handled depends upon the action requested for 51 * that type of error, which is described by an instance of the CodingErrorAction class. 52 * The possible error actions are to ignore the erroneous input, report the error to 53 * the invoker via the returned CoderResult object, or replace the erroneous input with 54 * the current value of the replacement string. The replacement has the initial value 55 * "\uFFFD"; its value may be changed via the replaceWith method." 56 * The following made me think that String(byte[], String charsetName) constructor may 57 * use the replacement value \uFFFD. 58 * http://www.experts-exchange.com/Programming/Programming_Languages/Java/Q_20512969.html 59 * mentions the following which made me think of this: 60 * convertedStr = convertedStr.replace('\ufffd', ' '); 61 */ 62 protected String calcDisplayString() { 63 String filename = file.getName(); 64 try{ 65 String utf8filename = new String(filename.getBytes(), "UTF8"); 66 if(utf8filename.indexOf('\ufffd') == -1) { 67 return utf8filename; 68 } else { // contains the character indicating that it's invalid utf8 69 // return the original string 70 return filename; 71 } 72 } catch(java.io.UnsupportedEncodingException e) { 73 return filename; 74 } 75 } 36 76 37 77 /** Returns the children of the node as an Enumeration. */ … … 312 352 } 313 353 else { 314 return file.getName(); 354 if(displayFileName == null) { 355 displayFileName = calcDisplayString(); 356 } 357 return displayFileName; //return file.getName(); 315 358 } 316 359 }
Note:
See TracChangeset
for help on using the changeset viewer.