Skip to content
Snippets Groups Projects

feat: add metadata v2 (de)serializers, MetadataExtractorV2,...

Merged Nicolas.Rod requested to merge rodn-403-simpler-pivotal-format-updates into master
1 unresolved thread
package ch.unige.aou.model.xml.deposit.v2.deserializer;
import java.io.IOException;
import java.math.BigInteger;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import ch.unige.solidify.exception.SolidifyRuntimeException;
import ch.unige.aou.model.xml.deposit.AouStdDeserializer;
import ch.unige.aou.model.xml.deposit.v2.AccessLevel;
import ch.unige.aou.model.xml.deposit.v2.File;
import ch.unige.aou.model.xml.deposit.v2.FileType;
import ch.unige.aou.model.xml.deposit.v2.Files;
public class FilesDeserializer extends AouStdDeserializer<Files> {
@@ -21,10 +28,55 @@ public class FilesDeserializer extends AouStdDeserializer<Files> {
ObjectCodec codec = parser.getCodec();
JsonNode jsonNode = codec.readTree(parser);
Files value = new Files();
if (jsonNode instanceof ArrayNode) {
if (jsonNode.isEmpty()) {
return null;
}
Files files = new Files();
for (JsonNode fileNode : jsonNode) {
this.addFile(fileNode, files);
}
return files;
} else {
throw new SolidifyRuntimeException("files is not an array");
}
}
private void addFile(JsonNode fileNode, Files files) {
File file = new File();
JsonNode typeNode = fileNode.get("type");
if (this.nodeHasTextValue(typeNode)) {
file.setType(FileType.fromValue(typeNode.textValue()));
}
JsonNode accessLevelNode = fileNode.get("accessLevel");
if (this.nodeHasTextValue(accessLevelNode)) {
file.setAccessLevel(AccessLevel.fromValue(accessLevelNode.textValue()));
}
JsonNode nameNode = fileNode.get("name");
if (this.nodeHasTextValue(nameNode)) {
file.setName(nameNode.textValue());
}
JsonNode sizeNode = fileNode.get("size");
if (this.nodeHasTextValue(sizeNode)) {
file.setSize(new BigInteger(sizeNode.textValue()));
}
JsonNode mimeTypeNode = fileNode.get("mimetype");
if (this.nodeHasTextValue(mimeTypeNode)) {
file.setMimetype(mimeTypeNode.textValue());
}
// TODO: implements code
JsonNode licenseNode = fileNode.get("license");
if (this.nodeHasTextValue(licenseNode)) {
file.setLicense(licenseNode.textValue());
}
return value;
files.getFile().add(file);
}
}
Loading