Project

General

Profile

1
package eu.dnetlib.pid.resolver.model.serializer;
2

    
3
import com.google.gson.JsonArray;
4
import com.google.gson.JsonDeserializer;
5
import com.google.gson.JsonElement;
6
import com.google.gson.JsonObject;
7
import eu.dnetlib.pid.resolver.model.ObjectType;
8
import eu.dnetlib.pid.resolver.model.ResolvedObject;
9
import eu.dnetlib.pid.resolver.model.SubjectType;
10

    
11
import java.util.ArrayList;
12
import java.util.List;
13

    
14
public abstract class ResolvedObjectDeserializer  implements JsonDeserializer<ResolvedObject> {
15

    
16
    protected void partialDeserialization(final JsonObject root, final ResolvedObject resolvedObject) {
17
        final JsonElement pid = root.get("pid");
18
        resolvedObject.setPid(pid!= null ? pid.getAsString():"");
19
        final JsonElement pidType = root.get("pidType");
20
        resolvedObject.setPidType(pidType!= null ? pidType.getAsString():"");
21
        final JsonElement type = root.get("type");
22
        if(type!= null)
23
            switch (type.getAsString()) {
24
                case "dataset":
25
                    resolvedObject.setType(ObjectType.dataset);
26
                    break;
27
                case "publication":
28
                    resolvedObject.setType(ObjectType.publication);
29
                    break;
30
                default:
31
                    resolvedObject.setType(ObjectType.unknown);
32
                    break;
33
            }
34
        if (root.has("subjects") && root.get("subjects").isJsonArray()) {
35
            final JsonArray subjects = root.getAsJsonArray("subjects");
36
            final List<SubjectType> extractedSubjects = new ArrayList<>();
37
            if (subjects!= null)
38
                subjects.forEach(sub -> {
39
                    if (sub.isJsonObject()) {
40
                        final JsonObject subject =sub.getAsJsonObject();
41
                        extractedSubjects.add(new SubjectType(subject.get("scheme").getAsString(),subject.get("term").getAsString()));
42
                    }
43
                });
44
            resolvedObject.setSubjects(extractedSubjects);
45
        }
46
    }
47

    
48

    
49
    protected String getValue(final JsonObject input, final String field) {
50
        return input.has(field) ? input.get(field).getAsString(): "";
51
    }
52

    
53
    protected List<String> extractListValues(final JsonObject root, final String field) {
54
        final List<String> output = new ArrayList<>();
55
        if (root.has(field) && root.get(field).isJsonArray()) {
56
            root.getAsJsonArray(field)
57
                    .forEach(it -> output.add(it.getAsString()));
58
        }
59
        return output;
60

    
61

    
62

    
63
    }
64
}
(2-2/2)