diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/BatchResult.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/BatchResult.java index ed52033b86c7430b0df0cb03ff59214edb9959da..d2d19bf12c080632d5c1e924ccdf268dd7746cf8 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/BatchResult.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/BatchResult.java @@ -36,7 +36,8 @@ public class BatchResult { this.results = new TreeMap<String, DataSetArchiveVerificationResult>(); - DataSetArchiveVerificationResult missingResult = new DataSetArchiveVerificationResult(VerificationErrorType.ERROR, "dataset not processed"); + DataSetArchiveVerificationResult missingResult = + new DataSetArchiveVerificationResult(VerificationErrorType.ERROR, "Internal error, dataset archive not verified"); for (String dataSet : dataSets) { diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/DataSetArchiveVerificationResult.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/DataSetArchiveVerificationResult.java index 9245f89441c57eaaa971d3a518b1cedacc543aa3..1800c38b54a3acb9477b2d6be4dd29f724086a72 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/DataSetArchiveVerificationResult.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/DataSetArchiveVerificationResult.java @@ -47,7 +47,7 @@ public class DataSetArchiveVerificationResult public DataSetArchiveVerificationResult(Exception e) { this.file = null; - this.errors = Collections.singletonList(new VerificationError(VerificationErrorType.ERROR, e.getClass().getName()+":"+e.getMessage())); + this.errors = Collections.singletonList(new VerificationError(VerificationErrorType.ERROR, e.getClass().getName() + ":" + e.getMessage())); } public ResultType getType() @@ -68,6 +68,8 @@ public class DataSetArchiveVerificationResult { case WARNING: return ResultType.WARNING; + case GENERAL_WARNING: + return ResultType.GENERAL_WARNING; case ERROR: return ResultType.ERROR; case FATAL: diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/ResultType.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/ResultType.java index b3750a9f598595c648e87e2322225aeb0ff1c205..0c1285855ddfd6a30bf5ee2ccd57bc482ce788c9 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/ResultType.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/ResultType.java @@ -23,7 +23,7 @@ package ch.systemsx.cisd.openbis.dss.archiveverifier.batch; */ public enum ResultType { - OK(0), WARNING(1), ERROR(2), FATAL(2); + OK(0), WARNING(1), GENERAL_WARNING(1), ERROR(2), FATAL(2); private final int exitCode; diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/SerialDataSetArchiveVerificationBatch.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/SerialDataSetArchiveVerificationBatch.java index 4b38b9f03660179c23deb386d52277348d658612..1f872cb6a55f4a6547434e936723bb213107b66c 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/SerialDataSetArchiveVerificationBatch.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/SerialDataSetArchiveVerificationBatch.java @@ -16,6 +16,9 @@ package ch.systemsx.cisd.openbis.dss.archiveverifier.batch; +import java.util.Collection; +import java.util.HashSet; +import java.util.UUID; /** * Runs archive verification for a list of datasets. @@ -29,16 +32,28 @@ public class SerialDataSetArchiveVerificationBatch implements IDataSetArchiveVer private final String[] dataSets; + private BatchResult batchResult; + public SerialDataSetArchiveVerificationBatch(IDataSetArchiveVerifier verifier, String... dataSets) + { + this(verifier, new HashSet<DataSetArchiveVerificationResult>(), dataSets); + } + + public SerialDataSetArchiveVerificationBatch(IDataSetArchiveVerifier verifier, Collection<DataSetArchiveVerificationResult> initialResults, + String... dataSets) { this.verifier = verifier; this.dataSets = dataSets; + batchResult = new BatchResult(dataSets); + for (DataSetArchiveVerificationResult initialResult : initialResults) + { + batchResult.add(UUID.randomUUID().toString(), initialResult); + } } @Override public BatchResult run() { - BatchResult batchResult = new BatchResult(dataSets); for (String dataSet : dataSets) { diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/VerificationErrorType.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/VerificationErrorType.java index 764fb4ee1a712f4eef4f3375b1fc48d4f324ebd8..5136d2a20e2208aafeeb70660fcee6eee35234e7 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/VerificationErrorType.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/batch/VerificationErrorType.java @@ -24,5 +24,5 @@ package ch.systemsx.cisd.openbis.dss.archiveverifier.batch; public enum VerificationErrorType { // don't change the order as the code depends on it - WARNING, ERROR, FATAL; + WARNING, GENERAL_WARNING, ERROR, FATAL; } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/cli/DataSetArchiveVerificationBatchFactory.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/cli/DataSetArchiveVerificationBatchFactory.java index 3d71ae152220b0e5b514329953818219925e5d7f..3d0a1afce17da25aa2726ec126a5d7a16904b782 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/cli/DataSetArchiveVerificationBatchFactory.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/cli/DataSetArchiveVerificationBatchFactory.java @@ -26,6 +26,7 @@ import java.sql.DriverManager; import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.Properties; @@ -83,7 +84,15 @@ public class DataSetArchiveVerificationBatchFactory List<IArchiveFileVerifier> verifiers = getVerifiers(properties, pathInfoRepository); DataSetArchiveVerifier verifier = new DataSetArchiveVerifier(archiveFileRepository, new CompositeVerifier(verifiers)); - return new SerialDataSetArchiveVerificationBatch(verifier, Arrays.copyOfRange(args, 1, args.length)); + if (pathInfoRepository == null) + { + Collection<DataSetArchiveVerificationResult> init = new ArrayList<DataSetArchiveVerificationResult>(); + init.add(new DataSetArchiveVerificationResult(VerificationErrorType.GENERAL_WARNING, "pathinfo db not configured")); + return new SerialDataSetArchiveVerificationBatch(verifier, init, Arrays.copyOfRange(args, 1, args.length)); + } else + { + return new SerialDataSetArchiveVerificationBatch(verifier, Arrays.copyOfRange(args, 1, args.length)); + } } catch (ConfigurationException e) { diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/cli/ResultPrinter.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/cli/ResultPrinter.java index 9c5131f0dcd956cd3f4019570f9873ecd67acac3..332a5daecb2ec88a16372fe60f61a21391508d6c 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/cli/ResultPrinter.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/archiveverifier/cli/ResultPrinter.java @@ -74,6 +74,9 @@ public class ResultPrinter if (VerificationErrorType.FATAL.equals(type)) { out.println(result.getErrors().get(0).getMessage()); + } else if (VerificationErrorType.GENERAL_WARNING.equals(type)) + { + out.println("WARNING: " + error.getMessage()); } else { out.println(type + " in " + dataSet + " (" + result.getFileName() + "): " + error.getMessage()); @@ -98,6 +101,7 @@ public class ResultPrinter int warning = counts.get(ResultType.WARNING); int error = counts.get(ResultType.ERROR); int fatal = counts.get(ResultType.FATAL); + int generalWarnings = counts.get(ResultType.GENERAL_WARNING); int total = ok + warning + error; @@ -112,7 +116,7 @@ public class ResultPrinter if (warning + error == 0) { - out.println("No errors found"); + out.println("No errors found."); } else { if (error > 0) @@ -124,5 +128,10 @@ public class ResultPrinter out.println(warning + " archive file(s) caused warnings"); } } + + if (generalWarnings > 0) + { + out.println(generalWarnings + " general warning(s)."); + } } }