Commit 784a9aed authored by marceteau's avatar marceteau
Browse files

validator - en cours

parent 1a61705c
......@@ -63,58 +63,77 @@
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${assembly.plugin.version}</version>
<configuration>
<finalName>format-validator-plugin</finalName>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>rpm</id>
<phase>package</phase>
<id>make-assembly</id>
<phase>compile</phase>
<goals>
<goal>attached-rpm</goal>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<disabled>true</disabled>
<requires>
<require>${jdk.version.rpm}</require>
<require>vitam-user-${unix.user}</require>
</requires>
<name>vitam-${unix.name}</name>
<group>Application/Archiving</group>
<distribution>Vitam Project</distribution>
<packager>CINES</packager>
<licence>CeCILL 2.1</licence>
<defineStatements />
<targetOS>linux</targetOS>
<defaultDirMode>750</defaultDirMode>
<defaultFileMode>640</defaultFileMode>
<defaultUsername>${unix.user}</defaultUsername>
<defaultGroupname>${unix.group}</defaultGroupname>
<mappings>
<mapping>
<directory>/vitam/tmp/worker/griffins/${unix.name}</directory>
<username>${unix.user}</username>
<groupname>${unix.group}</groupname>
</mapping>
<mapping>
<directory>/vitam/bin/worker/griffins/${unix.name}</directory>
<filemode>750</filemode>
<username>${unix.user}</username>
<groupname>${unix.group}</groupname>
<directoryIncluded>false</directoryIncluded>
<sources>
<source>
<location>${project.basedir}/griffin</location>
</source>
<source>
<location>${project.build.directory}/format-validator-jar-with-dependencies.jar</location>
</source>
</sources>
</mapping>
</mappings>
</configuration>
</plugin>
<!-- <plugin> -->
<!-- <groupId>org.codehaus.mojo</groupId> -->
<!-- <artifactId>rpm-maven-plugin</artifactId> -->
<!-- <executions> -->
<!-- <execution> -->
<!-- <id>rpm</id> -->
<!-- <phase>package</phase> -->
<!-- <goals> -->
<!-- <goal>attached-rpm</goal> -->
<!-- </goals> -->
<!-- </execution> -->
<!-- </executions> -->
<!-- <configuration> -->
<!-- <disabled>true</disabled> -->
<!-- <requires> -->
<!-- <require>${jdk.version.rpm}</require> -->
<!-- <require>vitam-user-${unix.user}</require> -->
<!-- </requires> -->
<!-- <name>vitam-${unix.name}</name> -->
<!-- <group>Application/Archiving</group> -->
<!-- <distribution>Vitam Project</distribution> -->
<!-- <packager>CINES</packager> -->
<!-- <licence>CeCILL 2.1</licence> -->
<!-- <defineStatements /> -->
<!-- <targetOS>linux</targetOS> -->
<!-- <defaultDirMode>750</defaultDirMode> -->
<!-- <defaultFileMode>640</defaultFileMode> -->
<!-- <defaultUsername>${unix.user}</defaultUsername> -->
<!-- <defaultGroupname>${unix.group}</defaultGroupname> -->
<!-- <mappings> -->
<!-- <mapping> -->
<!-- <directory>/vitam/tmp/worker/griffins/${unix.name}</directory> -->
<!-- <username>${unix.user}</username> -->
<!-- <groupname>${unix.group}</groupname> -->
<!-- </mapping> -->
<!-- <mapping> -->
<!-- <directory>/vitam/bin/worker/griffins/${unix.name}</directory> -->
<!-- <filemode>750</filemode> -->
<!-- <username>${unix.user}</username> -->
<!-- <groupname>${unix.group}</groupname> -->
<!-- <directoryIncluded>false</directoryIncluded> -->
<!-- <sources> -->
<!-- <source> -->
<!-- <location>${project.basedir}/griffin</location> -->
<!-- </source> -->
<!-- <source> -->
<!-- <location>${project.build.directory}/format-validator-jar-with-dependencies.jar</location> -->
<!-- </source> -->
<!-- </sources> -->
<!-- </mapping> -->
<!-- </mappings> -->
<!-- </configuration> -->
<!-- </plugin> -->
</plugins>
</build>
......
......@@ -2,7 +2,7 @@ package fr.gouv.vitam.worker.core.plugin;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -10,29 +10,24 @@ import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import fr.cines.Format;
import fr.cines.format.validator.UnknownFormatException;
import fr.cines.format.validator.ValidatorBean;
import fr.cines.format.validator.model.ValidableFormat;
import fr.cines.ip.DataObject;
import fr.cines.ip.FileStructure;
import fr.cines.pac.validateformat.ValidateFormatConstants;
import fr.cines.pac.validateformat.exception.InvalidFormatException;
import fr.cines.pac.validateformat.exception.ValidateFormatException;
import fr.gouv.vitam.common.SedaConstants;
import fr.gouv.vitam.common.json.JsonHandler;
import fr.gouv.vitam.common.logging.VitamLogger;
import fr.gouv.vitam.common.logging.VitamLoggerFactory;
import fr.gouv.vitam.common.model.IngestWorkflowConstants;
import fr.gouv.vitam.common.model.ItemStatus;
import fr.gouv.vitam.common.model.StatusCode;
import fr.gouv.vitam.logbook.common.parameters.LogbookParameterName;
import fr.gouv.vitam.common.model.processing.ProcessingUri;
import fr.gouv.vitam.processing.common.exception.ProcessingException;
import fr.gouv.vitam.processing.common.parameter.WorkerParameters;
import fr.gouv.vitam.worker.common.HandlerIO;
import fr.gouv.vitam.worker.core.handler.ActionHandler;
import fr.gouv.vitam.worker.core.plugin.pojo.ValidatorResult;
import fr.gouv.vitam.workspace.api.exception.ContentAddressableStorageNotFoundException;
import fr.gouv.vitam.workspace.api.exception.ContentAddressableStorageServerException;
......@@ -42,12 +37,15 @@ public class FormatValidatorPlugin extends ActionHandler {
private static final String FORMAT_VALIDATOR_PLUGIN = "FORMAT_VALIDATOR_PLUGIN";
private final ObjectMapper mapper = new ObjectMapper();
public ItemStatus execute(WorkerParameters workerParameters, HandlerIO handlerIO) {
LOGGER.warn("===========================================================");
LOGGER.warn("================= FORMAT_VALIDATOR_PLUGIN ============== ");
LOGGER.warn("===========================================================");
ItemStatus itemStatus = new ItemStatus(FORMAT_VALIDATOR_PLUGIN);
List <ValidatorResult> validatorResultList = new ArrayList<ValidatorResult>();
try {
final JsonNode jsonOG = (JsonNode) handlerIO.getInput(0);
......@@ -65,14 +63,29 @@ public class FormatValidatorPlugin extends ActionHandler {
try {
final String objectId = version.get(SedaConstants.PREFIX_ID).asText();
file = loadFileFromWorkspace(handlerIO, objectIdToUri.get(objectId));
Format format = this.validateFormat(file);
ValidatorResult vr = new ValidatorResult();
vr.setFilename(objectIdToUri.get(objectId));
vr.setFormatId(format.getName() + "/" + format.getEncoding() + "/" + format.getVersion());
validatorResultList.add(vr);
} catch (Exception e) {
// TODO: handle exception
LOGGER.warn("erreur lors de la validation du format" + e.getMessage());
}
}
}
}
}
ProcessingUri uri = handlerIO.getOutput(0);
String filename = uri.getPath();
// Write your own file
File newFile = handlerIO.getNewLocalFile(filename);
// write it
mapper.writeValue(newFile, validatorResultList);
// add it to the handler IO
handlerIO.addOutputResult(0, newFile);
}
} catch (Exception e) {
// TODO: handle exception
......@@ -127,7 +140,7 @@ public class FormatValidatorPlugin extends ActionHandler {
}
}
protected void validateFormat(/*final DataObject dataObject,*/ final Path filePath, final String depositId) {
protected Format validateFormat(/*final DataObject dataObject,*/ final File file) {
final ValidatorBean validator = new ValidatorBean();
try {
......@@ -145,7 +158,7 @@ public class FormatValidatorPlugin extends ActionHandler {
}
*/
validator.setFile(filePath.toFile());
validator.setFile(file);
} catch (final IOException | UnknownFormatException e) {
// throw new ValidateFormatException(depositId, e);
}
......@@ -154,10 +167,8 @@ public class FormatValidatorPlugin extends ActionHandler {
// throw new InvalidFormatException(depositId, dataObject.getPath(), validator.getMessage());
}
final ValidableFormat validableFormat = (ValidableFormat)validator.getIdentifiedFormat();
final Format format = validableFormat.toFormat();
final Format format = validator.getIdentifiedFormat();
if (StringUtils.isBlank(format.getEncoding())) {
format.setEncoding("NA");
}
......@@ -166,7 +177,7 @@ public class FormatValidatorPlugin extends ActionHandler {
format.setVersion("NA");
}
// dataObject.setFormat(format);
return format;
}
......
/*
* Copyright CINES, 2020
*
* Ce logiciel est régi par la licence CeCILL-C soumise au
* droit français et respectant les principes de diffusion des logiciels libres. Vous pouvez
* utiliser, modifier et/ou redistribuer ce programme sous les conditions de la licence CeCILL-C
* telle que diffusée par le CEA, le CNRS et l'INRIA sur le site "http://www.cecill.info". En
* contrepartie de l'accessibilité au code source et des droits de copie, de modification et de
* redistribution accordés par cette licence, il n'est offert aux utilisateurs qu'une garantie
* limitée. Pour les mêmes raisons, seule une responsabilité restreinte pèse sur l'auteur du
* programme, le titulaire des droits patrimoniaux et les concédants successifs. A cet égard
* l'attention de l'utilisateur est attirée sur les risques associés au chargement, à l'utilisation,
* à la modification et/ou au développement et à la reproduction du logiciel par l'utilisateur étant
* donné sa spécificité de logiciel libre, qui peut le rendre complexe à manipuler et qui le réserve
* donc à des développeurs et des professionnels avertis possédant des connaissances informatiques
* approfondies. Les utilisateurs sont donc invités à charger et tester l'adéquation du logiciel à
* leurs besoins dans des conditions permettant d'assurer la sécurité de leurs systèmes et ou de
* leurs données et, plus généralement, à l'utiliser et l'exploiter dans les mêmes conditions de
* sécurité. Le fait que vous puissiez accéder à cet en-tête signifie que vous avez pris
* connaissance de la licence CeCILL-C, et que vous en avez accepté les termes.
*/
package fr.gouv.vitam.worker.core.plugin.pojo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
/**
* @author Florent MARCETEAU
*
*/
@JsonInclude(NON_NULL)
public class ValidatorResult {
@JsonProperty("Filename")
private String filename;
@JsonProperty("FormatId")
private String formatId;
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public String getFormatId() {
return formatId;
}
public void setFormatId(String formatId) {
this.formatId = formatId;
}
}
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