Révision 3366

TXM/trunk/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/handlers/base/ExportCorpus.java (revision 3366)
104 104
			
105 105
			final File outfile = dialog2.getZipFile();
106 106
			final String version = dialog2.getCorpusVersion();
107
			final String rename = dialog2.getRename();
107 108
			final HashSet<String> ignored = dialog2.getIgnoreNames();
108 109
			
109 110
			if (outfile.exists()) {
......
124 125
					try {
125 126
						monitor.beginTask(NLS.bind(TXMUIMessages.exportingP0ThisMayTakeAWhile, corpus.getName()), 100);
126 127
						
127
						if (!corpus.export(outfile, this, ignored, version)) {
128
						if (!corpus.export(outfile, this, ignored, version, rename)) {
128 129
							System.out.println(NLS.bind(TXMUIMessages.failedToExportCorpusP0, corpus.getName()));
129 130
						}
130 131
						
TXM/trunk/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/dialogs/ExportCorpusDialog.java (revision 3366)
67 67
	private Button selectButton;
68 68
	
69 69
	private String version;
70

  
71
	private Text renameField;
72

  
73
	private String rename;
70 74
	
71 75
	public final static String ID = ExportCorpusDialog.class.getName();
72 76
	
......
144 148
			public void widgetDefaultSelected(SelectionEvent e) {}
145 149
		});
146 150
		
151
		new Label(comp, SWT.NONE).setText("Rename corpus");
152
		renameField = new Text(comp, SWT.BORDER);
153
		GridData gdata2 = GridDataFactory.fillDefaults().create();
154
		gdata2.widthHint = 50;
155
		gdata2.horizontalSpan = 2;
156
		renameField.setLayoutData(gdata2);
157
		
147 158
		new Label(comp, SWT.NONE).setText("Corpus version");
148 159
		versionField = new Combo(comp, SWT.SINGLE | SWT.READ_ONLY);
149 160
		versionField.setItems("0.8.0", "0.7.9");
......
289 300
		if (buttonId == Dialog.OK) {
290 301
			zipFile = new File(textField.getText());
291 302
			version = versionField.getText();
303
			rename = renameField.getText();
304
			
305
			if (renameField.getText().length() > 0) {
306
				String zipname = zipFile.getName();
307
				String oldname = corpus.getProject().getName();
308
				zipname = zipname.replace(oldname, rename);
309
				zipFile = new File(zipFile.getParentFile(), zipname);
310
			}
311
			
292 312
		}
293 313
		super.buttonPressed(buttonId);
294 314
	}
......
310 330
	}
311 331
	
312 332
	/**
333
	 * 
313 334
	 * @return The corpus version to produce
314 335
	 */
336
	public String getRename() {
337
		return rename;
338
	}
339
	
340
	/**
341
	 * @return The corpus version to produce
342
	 */
315 343
	public LinkedHashMap<File, Boolean> getFileSelection() {
316 344
		return selectedFiles;
317 345
	}
TXM/trunk/org.txm.core/src/java/org/txm/objects/Project.java (revision 3366)
68 68
import org.txm.core.results.TXMParameters;
69 69
import org.txm.core.results.TXMResult;
70 70
import org.txm.importer.xtz.ImportKeys;
71
import org.txm.utils.DeleteDir;
71 72
import org.txm.utils.LogMonitor;
72 73
import org.txm.utils.TXMProgressMonitor;
74
import org.txm.utils.io.FileCopy;
75
import org.txm.utils.io.IOUtils;
73 76
import org.txm.utils.logger.Log;
74 77
import org.txm.utils.zip.Zip;
75 78
import org.w3c.dom.Element;
......
824 827
		return (Workspace) getParent();
825 828
	}
826 829
	
827
	public boolean export(File exportzip) {
828
		return export(exportzip, null, null, null);
830
	public boolean export(File exportzip) throws IOException {
831
		return export(exportzip, null, null, null, null);
829 832
	}
830 833
	
831 834
	/**
......
833 836
	 *
834 837
	 * @param exportzip the exportzip
835 838
	 * @return true, if successful
839
	 * @throws IOException 
836 840
	 */
837
	public boolean export(File exportzip, IProgressMonitor monitor, HashSet<String> ignore, String version) {
838
		File binarydir = this.getProjectDirectory();
841
	public boolean export(File exportzip, IProgressMonitor monitor, HashSet<String> ignore, String version, String rename) throws IOException {
842
		File binaryDir = this.getProjectDirectory();
839 843
		
840
		if (binarydir.exists() && exportzip.getParentFile().exists()) {
844
		if ("0.7.9".equals(version) || (rename != null && rename.length() > 0)) {
845
			
846
			File tmpExportDirectory = new File(binaryDir.getParentFile(), "txm-tmp-export-directory");
847
			DeleteDir.deleteDirectory(tmpExportDirectory);
848
			File newBinDirectory = new File(tmpExportDirectory, rename);
849
			newBinDirectory.mkdirs();
850
			
851
			FileCopy.copyFiles(binaryDir, newBinDirectory);
852
			if (!newBinDirectory.exists()) {
853
				Log.severe("Fail to copy binary directory $binDirectory to $newBinDirectory");
854
				return false;
855
			}
856
			binaryDir = newBinDirectory; // switch the binaryDirectory to work
857
		}
858
		if (binaryDir.exists() && exportzip.getParentFile().exists()) {
841 859
			this.save();
842 860
			
843 861
			if ("0.7.9".equals(version)) {
844
				File importXMLFile = new File(binarydir, "import.xml");
862
				
863
				File importXMLFile = new File(binaryDir, "import.xml");
845 864
				try {
846 865
					CorpusBuild cb = this.getCorpusBuild(this.getName().toUpperCase());
847 866
					
......
911 930
				}
912 931
			}
913 932
			
933
			if (rename != null && rename.length() > 0) {
934
				
935
				String name = this.getName();
936
				
937
				// CQP stuff TODO implement a rename mecanism per engine
938
				File registryFile = new File(binaryDir, "registry/"+name.toLowerCase());
939
				File registryFile2 = new File(binaryDir, "registry/"+rename.toLowerCase());
940
				Log.finer("renaming $registryFile : "+registryFile.renameTo(registryFile2));
941
				String content = IOUtils.getText(registryFile2);
942
				content = content.replace(name, rename);
943
				content = content.replace(name.toLowerCase(), rename.toLowerCase());
944
				Log.finer("updating $importXMLFile : "+IOUtils.write(registryFile2, content));
945
				
946
				File dataFile = new File(binaryDir, "data/"+name);
947
				File dataFile2 = new File(binaryDir, "data/"+rename);
948
				Log.finer("renaming $dataFile : "+dataFile.renameTo(dataFile2));
949
				
950
				// TIGER stuff TODO implement a rename mecanism per engine
951
				File tigerDataFile = new File(binaryDir, "tiger/"+name);
952
				File tigerData2File = new File(binaryDir, "tiger/${new_name.}");
953
				Log.finer("renaming $tigerDataFile : "+tigerDataFile.renameTo(tigerData2File));
954
				
955
				// URS stuff
956
				File ecFile = new File(binaryDir, "analec/"+name+".ec");
957
				File ecvFile = new File(binaryDir, "analec/"+name+".ecv");
958
				File ecFile2 = new File(binaryDir, "analec/"+rename+".ec");
959
				File ecvFile2 = new File(binaryDir, "analec/"+rename+".ecv");
960
				Log.finer("renaming $ecFile : "+ecFile.renameTo(ecFile2));
961
				Log.finer("renaming $ecvFile : "+ecvFile.renameTo(ecvFile2));
962
				
963
				// TXM corpus stuff
964
				File importXMLFile = new File(binaryDir, "import.xml");
965
				if (importXMLFile.exists()) {
966
					content = IOUtils.getText(importXMLFile);
967
					content = content.replace("\""+name+"\"", "\""+rename+"\"");
968
					content = content.replace("\""+name.toLowerCase()+"\"", "\""+rename.toLowerCase()+"\"");
969
					Log.finer("updating $importXMLFile : "+IOUtils.write(importXMLFile, content));
970
				}
971
				
972
				File temporaryAnnotationsFile = new File(binaryDir, "temporary_annotations/"+name);
973
				File temporaryAnnotations2File = new File(binaryDir, "temporary_annotations/"+rename);
974
				Log.finer("renaming $temporaryAnnotationsFile : "+temporaryAnnotationsFile.renameTo(temporaryAnnotations2File));
975
				
976
				File cssFile = new File(binaryDir, "css/"+name+".css");
977
				File cssFile2 = new File(binaryDir, "css/"+rename+".css");
978
				Log.finer("renaming $cssFile : "+cssFile.renameTo(cssFile2));
979
				
980
				File htmlFile = new File(binaryDir, "HTML/"+name);
981
				File htmlFile2 = new File(binaryDir, "HTML/"+rename);
982
				Log.finer("renaming $htmlFile : "+htmlFile.renameTo(htmlFile2));
983
				
984
				File defaultCSSFile = new File(htmlFile, "default/css/"+name+".css");
985
				File defaultCSSFile2 = new File(htmlFile2, "default/css/"+rename+".css");
986
				Log.finer("renaming $defaultCSSFile : "+defaultCSSFile.renameTo(defaultCSSFile2));
987
				
988
				File txmFile = new File(binaryDir, "txm/"+name);
989
				File txmFile2 = new File(binaryDir, "txm/"+rename);
990
				Log.finer("renaming $txmFile : "+txmFile.renameTo(txmFile2));
991
				
992
				// patch name in settings
993
				File settingsDirectory = new File(binaryDir, ".settings");
994
				for (File prefFile : settingsDirectory.listFiles()) {
995
					Log.finer("updating $prefFile : "+IOUtils.write(prefFile, IOUtils.getText(prefFile).replace(name, rename)));
996
				}
997
				
998
				File projectSetting = new File(binaryDir, ".project");
999
				Log.finer("updating $projectSetting : "+IOUtils.write(projectSetting, IOUtils.getText(projectSetting).replace(name, rename)));
1000
			}
1001
			
914 1002
			try {
915
				Zip.compress(binarydir, exportzip, monitor, ignore);
1003
				Zip.compress(binaryDir, exportzip, monitor, ignore);
916 1004
			}
917 1005
			catch (IOException e) {
918 1006
				org.txm.utils.logger.Log.printStackTrace(e);
919 1007
				return false;
920 1008
			}
1009
			
1010
			if ("0.7.9".equals(version) || (rename != null && rename.length() > 0)) {
1011
				if (!DeleteDir.deleteDirectory(binaryDir)) { // delete the temporary directory
1012
					Log.warning("Warning: the temporary binary corpus could not be deleted: "+binaryDir);
1013
				}
1014
			}
1015
			
921 1016
			return true;
922 1017
		}
923 1018
		else {
924
			System.out.println(NLS.bind(TXMCoreMessages.binaryDirectoryP0NotFound, binarydir));
1019
			System.out.println(NLS.bind(TXMCoreMessages.binaryDirectoryP0NotFound, binaryDir));
925 1020
			System.out.println(NLS.bind(TXMCoreMessages.parentDirectoryP0NotFound, exportzip.getParentFile()));
926 1021
			
927 1022
		}
TXM/trunk/org.txm.core/src/java/org/txm/objects/CorpusBuild.java (revision 3366)
478 478
	// }
479 479
	
480 480
	public boolean export(File exportzip) {
481
		return export(exportzip, null, null, null);
481
		return export(exportzip, null, null, null, null);
482 482
	}
483 483
	
484
	public boolean export(File exportzip, IProgressMonitor monitor, HashSet<String> ignore, String version) {
484
	public boolean export(File exportzip, IProgressMonitor monitor, HashSet<String> ignore, String version, String rename) {
485 485
		if (this.getProject() != null) {
486 486
			try {
487 487
				this.getProject().saveParameters(true); // write parameters in preferences
488 488
				this.getProject().persist(true); // save preferences
489
				return this.getProject().export(exportzip, monitor, ignore, version);
489
				return this.getProject().export(exportzip, monitor, ignore, version, rename);
490 490
			}
491 491
			catch (Exception e) {
492 492
				// TODO Auto-generated catch block

Formats disponibles : Unified diff