Revision 49728
Added by Sandro La Bruzzo over 6 years ago
modules/dnet-pid-resolver/trunk/src/main/java/eu/dnetlib/pid/resolver/model/serializer/ResolvedObjectDeserializer.java | ||
---|---|---|
13 | 13 |
import java.util.ArrayList; |
14 | 14 |
import java.util.List; |
15 | 15 |
|
16 |
public abstract class ResolvedObjectDeserializer implements JsonDeserializer<ResolvedObject> {
|
|
16 |
public abstract class ResolvedObjectDeserializer implements JsonDeserializer<ResolvedObject> { |
|
17 | 17 |
|
18 | 18 |
private static final Log log = LogFactory.getLog(ResolvedObjectDeserializer.class); |
19 | 19 |
|
... | ... | |
21 | 21 |
|
22 | 22 |
log.debug("called partialDeserialization"); |
23 | 23 |
|
24 |
final JsonElement pid = root.get("pid"); |
|
25 |
resolvedObject.setPid(pid!= null ? pid.getAsString():""); |
|
26 |
final JsonElement pidType = root.get("pidType"); |
|
27 |
resolvedObject.setPidType(pidType!= null ? pidType.getAsString():""); |
|
28 |
final JsonElement type = root.get("type"); |
|
29 |
if(type!= null) |
|
30 |
switch (type.getAsString()) { |
|
31 |
case "dataset": |
|
32 |
resolvedObject.setType(ObjectType.dataset); |
|
33 |
break; |
|
34 |
case "publication": |
|
35 |
resolvedObject.setType(ObjectType.publication); |
|
36 |
break; |
|
37 |
default: |
|
38 |
resolvedObject.setType(ObjectType.unknown); |
|
39 |
break; |
|
24 |
|
|
25 |
try { |
|
26 |
final JsonElement pid = root.get("pid"); |
|
27 |
resolvedObject.setPid(pid != null ? pid.getAsString() : ""); |
|
28 |
final JsonElement pidType = root.get("pidType"); |
|
29 |
resolvedObject.setPidType(pidType != null ? pidType.getAsString() : ""); |
|
30 |
final JsonElement type = root.get("type"); |
|
31 |
if (type != null) |
|
32 |
switch (type.getAsString()) { |
|
33 |
case "dataset": |
|
34 |
resolvedObject.setType(ObjectType.dataset); |
|
35 |
break; |
|
36 |
case "publication": |
|
37 |
resolvedObject.setType(ObjectType.publication); |
|
38 |
break; |
|
39 |
default: |
|
40 |
resolvedObject.setType(ObjectType.unknown); |
|
41 |
break; |
|
42 |
} |
|
43 |
if (root.has("subjects") && root.get("subjects").isJsonArray()) { |
|
44 |
final JsonArray subjects = root.getAsJsonArray("subjects"); |
|
45 |
final List<SubjectType> extractedSubjects = new ArrayList<>(); |
|
46 |
if (subjects != null) |
|
47 |
subjects.forEach(sub -> { |
|
48 |
if (sub.isJsonObject()) { |
|
49 |
final JsonObject subject = sub.getAsJsonObject(); |
|
50 |
extractedSubjects.add(new SubjectType(subject.get("scheme").getAsString(), subject.get("term").getAsString())); |
|
51 |
} |
|
52 |
}); |
|
53 |
resolvedObject.setSubjects(extractedSubjects); |
|
40 | 54 |
} |
41 |
if (root.has("subjects") && root.get("subjects").isJsonArray()) { |
|
42 |
final JsonArray subjects = root.getAsJsonArray("subjects"); |
|
43 |
final List<SubjectType> extractedSubjects = new ArrayList<>(); |
|
44 |
if (subjects!= null) |
|
45 |
subjects.forEach(sub -> { |
|
46 |
if (sub.isJsonObject()) { |
|
47 |
final JsonObject subject =sub.getAsJsonObject(); |
|
48 |
extractedSubjects.add(new SubjectType(subject.get("scheme").getAsString(),subject.get("term").getAsString())); |
|
49 |
} |
|
50 |
}); |
|
51 |
resolvedObject.setSubjects(extractedSubjects); |
|
55 |
} catch (Throwable e) { |
|
56 |
log.error("ERROR on partial deserialization " + root, e); |
|
52 | 57 |
} |
53 | 58 |
} |
54 | 59 |
|
55 | 60 |
|
56 | 61 |
protected String getValue(final JsonObject input, final String field) { |
57 |
return input.has(field) ? input.get(field).getAsString(): ""; |
|
62 |
return input.has(field) ? input.get(field).getAsString() : "";
|
|
58 | 63 |
} |
59 | 64 |
|
60 | 65 |
protected List<String> extractListValues(final JsonObject root, final String field) { |
... | ... | |
66 | 71 |
return output; |
67 | 72 |
|
68 | 73 |
|
69 |
|
|
70 | 74 |
} |
71 | 75 |
} |
Also available in: Unified diff
added Log