92 lines
2.4 KiB
Java
92 lines
2.4 KiB
Java
package eu.eudat.models.rda.mapper;
|
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
import eu.eudat.logic.utilities.helpers.MyStringUtils;
|
|
import eu.eudat.models.rda.Host;
|
|
import eu.eudat.models.rda.PidSystem;
|
|
|
|
import java.net.URI;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
public class HostRDAMapper {
|
|
|
|
public static Host toRDA(List<JsonNode> nodes, String numbering) {
|
|
Host rda = new Host();
|
|
for (JsonNode node: nodes) {
|
|
String rdaProperty = node.get("rdaProperties").asText();
|
|
if (rdaProperty.contains("host")) {
|
|
int firstDiff = MyStringUtils.getFirstDifference(numbering, node.get("numbering").asText());
|
|
if (firstDiff == -1 || firstDiff > 2) {
|
|
String rdaValue = node.get("value").asText();
|
|
for (PropertyName propertyName: PropertyName.values()) {
|
|
if (rdaProperty.contains(propertyName.getName())) {
|
|
switch (propertyName) {
|
|
case AVAILABILITY:
|
|
rda.setAvailability(rdaValue);
|
|
break;
|
|
case BACKUP_FREQUENCY:
|
|
rda.setBackupFrequency(rdaValue);
|
|
break;
|
|
case BACKUP_TYPE:
|
|
rda.setBackupType(rdaValue);
|
|
break;
|
|
case CERTIFIED_WITH:
|
|
rda.setCertifiedWith(Host.CertifiedWith.fromValue(rdaValue));
|
|
break;
|
|
case DESCRIPTION:
|
|
rda.setDescription(rdaValue);
|
|
break;
|
|
case GEO_LOCATION:
|
|
rda.setGeoLocation(Host.GeoLocation.fromValue(rdaValue));
|
|
break;
|
|
case PID_SYSTEM:
|
|
rda.setPidSystem(Collections.singletonList(PidSystem.fromValue(rdaValue)));
|
|
break;
|
|
case STORAGE_TYPE:
|
|
rda.setStorageType(rdaValue);
|
|
break;
|
|
case SUPPORT_VERSIONING:
|
|
rda.setSupportVersioning(Host.SupportVersioning.fromValue(rdaValue));
|
|
break;
|
|
case TITLE:
|
|
rda.setTitle(rdaValue);
|
|
break;
|
|
case URL:
|
|
rda.setUrl(URI.create(rdaValue));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return rda;
|
|
}
|
|
|
|
private enum PropertyName {
|
|
AVAILABILITY("availability"),
|
|
BACKUP_FREQUENCY("backup_frequency"),
|
|
BACKUP_TYPE("backup_type"),
|
|
CERTIFIED_WITH("certified_with"),
|
|
DESCRIPTION("description"),
|
|
GEO_LOCATION("geo_location"),
|
|
PID_SYSTEM("pid_system"),
|
|
STORAGE_TYPE("storage_type"),
|
|
SUPPORT_VERSIONING("support_versioning"),
|
|
TITLE("title"),
|
|
URL("url");
|
|
|
|
private final String name;
|
|
|
|
PropertyName(String name) {
|
|
this.name = name;
|
|
}
|
|
|
|
public String getName() {
|
|
return name;
|
|
}
|
|
}
|
|
}
|