Commit 6b7481e2 authored by marceteau's avatar marceteau
Browse files

refactor : suppression des system.exit

parent 2ef095f2
......@@ -33,6 +33,7 @@ import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.MissingArgumentException;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.slf4j.Logger;
......@@ -73,6 +74,8 @@ public class ArchiveConverterMain {
private Path outputDir;
private Path inputFolder;
private Path manifestPath;
private Boolean onlyManifest = false;
private String formalism;
private String agency;
......@@ -87,7 +90,13 @@ public class ArchiveConverterMain {
*/
public static void main(String[] args) throws ParseException, DuplicateLanguageException, IngestRejectException, IOException, NotSupportedException {
ArchiveConverterMain converter = new ArchiveConverterMain(args);
File convertedArchive = converter.archiveConversion();
if (converter.onlyManifest) {
converter.manifestConversion();
} else {
File convertedArchive = converter.archiveConversion();
}
}
/**
......@@ -125,25 +134,25 @@ public class ArchiveConverterMain {
* @param commandLine
* @throws ParseException
*/
private void parseCommandLine(Options options, CommandLine commandLine) throws ParseException {
private void parseCommandLine(Options options, CommandLine commandLine) throws ParseException, MissingArgumentException, IllegalArgumentException {
if(commandLine.hasOption("a")) {
agency = commandLine.getOptionValue("a") ;
} else {
System.err.println("Le service versant doit être indiqué.");
formatter.printHelp("archive-converter", options);
System.exit(-1);
throw new MissingArgumentException("Le service versant doit être indiqué.");
}
if(commandLine.hasOption("c")) {
propertiesFolder = Paths.get(commandLine.getOptionValue("c")) ;
if(!propertiesFolder.toFile().exists()) {
System.err.println("Le répertoire de fichiers properties " + propertiesFolder.toString() + " n'existe pas.");
System.exit(-1);
throw new IllegalArgumentException("Le répertoire de fichiers properties " + propertiesFolder.toString() + " n'existe pas.");
}
} else {
System.err.println("Le répertoire de fichiers properties est obligatoire.");
formatter.printHelp("archive-converter", options);
System.exit(-1);
throw new MissingArgumentException("Le répertoire de fichiers properties est obligatoire.");
}
......@@ -151,7 +160,7 @@ public class ArchiveConverterMain {
errorFolder = Paths.get(commandLine.getOptionValue("e")) ;
if(!errorFolder.toFile().exists()) {
System.err.println("Le répertoire d'erreur " + errorFolder.toString() + " n'existe pas.");
System.exit(-1);
throw new IllegalArgumentException("Le répertoire d'erreur " + errorFolder.toString() + " n'existe pas.");
}
}
......@@ -159,7 +168,7 @@ public class ArchiveConverterMain {
errorLanguageFolder = Paths.get(commandLine.getOptionValue("l")) ;
if(!errorLanguageFolder.toFile().exists()) {
System.err.println("Le répertoire d'erreur de language " + errorLanguageFolder.toString() + " n'existe pas.");
System.exit(-1);
throw new IllegalArgumentException("Le répertoire d'erreur de language " + errorLanguageFolder.toString() + " n'existe pas.");
}
}
......@@ -174,51 +183,41 @@ public class ArchiveConverterMain {
outputDir = Paths.get(commandLine.getOptionValue("o")) ;
if(!outputDir.toFile().exists()) {
System.err.println("Le répertoire de sortie " + outputDir.toString() + " n'existe pas.");
throw new IllegalArgumentException("Le répertoire de sortie " + outputDir.toString() + " n'existe pas.");
}
}
if(!commandLine.hasOption("f")) {
System.err.println("Le formalisme d'entrée est obligatoire. Précisez l'entrée souhaitée : sip ou seda1");
formatter.printHelp("archive-converter", options);
System.exit(-1);
throw new MissingArgumentException("Le formalisme d'entrée est obligatoire. Précisez l'entrée souhaitée : sip ou seda1");
} else {
this.formalism = commandLine.getOptionValue("f");
}
if (commandLine.hasOption("d")) {
if (commandLine.hasOption("i")) {
System.err.println("Il n'est pas possible d'utiliser les options --input-folder et --manifest-path en même temps.");
System.exit(-1);
throw new IllegalArgumentException("Il n'est pas possible d'utiliser les options --input-folder et --manifest-path en même temps.");
}
this.inputFolder = Paths.get(commandLine.getOptionValue('d'));
} else {
if (!commandLine.hasOption("i")) {
System.err.println("Il est obligatoire d'utiliser l'option --input-folder ou bien --manifest-path afin de connaitre l'objet en entrée.");
System.exit(-1);
throw new MissingArgumentException("Il est obligatoire d'utiliser l'option --input-folder ou bien --manifest-path afin de connaitre l'objet en entrée.");
} else {
this.manifestPath = Paths.get(commandLine.getOptionValue("i"));
}
}
if(commandLine.hasOption("m")) {
manifestConversion();
} else {
try {
archiveConversion();
System.exit(0);
} catch (DuplicateLanguageException e) {
manageLanguageRejectException(e);
} catch (IngestRejectException e) {
manageRejectException(e);
} catch (IOException e) {
e.printStackTrace();
} catch (NotSupportedException e) {
e.printStackTrace();
if (!commandLine.hasOption("i")) {
System.err.println("Il est obligatoire d'utiliser l'option --input-folder dans le cas d'une conversion de manifest.");
throw new IllegalArgumentException("Il est obligatoire d'utiliser l'option --input-folder dans le cas d'une conversion de manifest.");
}
this.onlyManifest = true;
}
}
private void manageRejectException(IngestRejectException e) {
......@@ -275,7 +274,7 @@ public class ArchiveConverterMain {
archiveConverter.setOnlyManifest(true);
}else {
System.err.println("Ce formalisme n'est pas reconnu, veuillez choisir sip, aip ou seda1");
System.exit(-1);
throw new IllegalArgumentException("Ce formalisme n'est pas reconnu, veuillez choisir sip, aip ou seda1");
}
try {
......@@ -320,7 +319,7 @@ public class ArchiveConverterMain {
archiveConverter = new Seda1ToSeda21TarMaker(this.agency);
}else {
System.err.println("Ce formalisme n'est pas reconnu, veuillez choisir sip ou seda1");
System.exit(-1);
throw new IllegalArgumentException("Ce formalisme n'est pas reconnu, veuillez choisir sip ou seda1");
}
archiveConverter.setOutputDir(this.outputDir.toString());
......@@ -333,7 +332,7 @@ public class ArchiveConverterMain {
String folder = this.inputFolder.toString();
if (!new File(folder).exists()) {
System.err.println("Le répertoire " + folder + " n'existe pas");
System.exit(-1);
throw new IllegalArgumentException("Le répertoire " + folder + " n'existe pas");
}
try {
......
......@@ -316,10 +316,10 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
properties.load(new FileInputStream(propertiesFolder + "/" + propertiesFileName));
} catch (FileNotFoundException e) {
System.err.println("Impossible de trouver le fichier propriétés " + propertiesFolder + "/" + propertiesFileName);
System.exit(-1);
throw new IllegalArgumentException("Impossible de trouver le fichier propriétés " + propertiesFolder + "/" + propertiesFileName);
} catch (IOException e) {
System.err.println("Impossible de lire le fichier propriétés " + propertiesFolder + "/" + propertiesFileName);
System.exit(-1);
throw new IllegalArgumentException("Impossible de lire le fichier propriétés " + propertiesFolder + "/" + propertiesFileName);
}
// Saisie des donnees du fichier seda 2.1
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment