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 |
}
|