Project

General

Profile

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

    
3
import com.google.gson.Gson;
4
import eu.dnetlib.miscutils.functional.xml.DnetXsltFunctions;
5
import org.apache.commons.lang3.StringEscapeUtils;
6
import org.apache.commons.lang3.StringUtils;
7

    
8
import java.util.List;
9

    
10
public abstract class AbstractResolvedObject implements ResolvedObject {
11
    protected static final Gson g = new Gson();
12
    /**
13
     * The doi.
14
     */
15
    protected String pid;
16
    /**
17
     * The pid type.
18
     */
19
    protected String pidType;
20

    
21
    /**
22
     * The datasources.
23
     */
24
    protected List<ObjectProvenance> datasourceProvenance;
25

    
26

    
27
    @Override
28
    public String getPid() {
29
        return pid;
30
    }
31

    
32
    @Override
33
    public ResolvedObject setPid(String pid) {
34
        this.pid = pid;
35
        return this;
36
    }
37

    
38

    
39
    public String getEscapedXMLPid() {
40
        return StringEscapeUtils.escapeXml11(this.pid);
41
    }
42

    
43
    @Override
44
    public String getPidType() {
45
        return pidType;
46
    }
47

    
48
    @Override
49
    public ResolvedObject setPidType(String pidType) {
50
        this.pidType = pidType;
51
        return this;
52
    }
53

    
54
    /**
55
     * Gets the identifier. with the form of MD5(pid::pidType)
56
     *
57
     * @return the identifier
58
     */
59
    @Override
60
    public String getIdentifier() {
61
        if (StringUtils.isBlank(pid) || StringUtils.isBlank(pidType))
62
            throw new RuntimeException("Error pid or pidType cannot be null");
63
        return DnetXsltFunctions.md5(String.format("%s::%s", pid.trim().toLowerCase(), pidType.toLowerCase().trim()));
64
    }
65

    
66
    @Override
67
    public String toJsonString() {
68
        return g.toJson(this);
69
    }
70

    
71

    
72
    @Override
73
    public List<ObjectProvenance> getDatasourceProvenance() {
74
        return datasourceProvenance;
75
    }
76

    
77

    
78
    @Override
79
    public ResolvedObject setDatasourceProvenance(final List<ObjectProvenance> datasourceProvenance) {
80
        this.datasourceProvenance = datasourceProvenance;
81
        return this;
82
    }
83
}
(1-1/7)