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
            subjects.forEach(sub -> {
38
                if (sub.isJsonObject()) {
39
                    final JsonObject subject =sub.getAsJsonObject();
40
                    extractedSubjects.add(new SubjectType(subject.get("scheme").getAsString(),subject.get("term").getAsString()));
41
                }
42
            });
43
            resolvedObject.setSubjects(extractedSubjects);
44
        }
45
    }
46

    
47

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

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

    
60

    
61

    
62
    }
63
}
(2-2/2)