Revision 41160
Added by Argiro Kokogiannaki over 8 years ago
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claimsDemo/BuildOperations.java | ||
---|---|---|
1 |
package eu.dnetlib.data.claimsDemo; |
|
2 |
|
|
3 |
import eu.dnetlib.data.claims.migration.Claim; |
|
4 |
import eu.dnetlib.data.claims.migration.Context; |
|
5 |
import eu.dnetlib.data.claims.migration.Project; |
|
6 |
import eu.dnetlib.data.claims.migration.Result; |
|
7 |
import org.xml.sax.SAXException; |
|
8 |
|
|
9 |
import javax.xml.parsers.ParserConfigurationException; |
|
10 |
import java.io.BufferedWriter; |
|
11 |
import java.io.FileWriter; |
|
12 |
import java.io.IOException; |
|
13 |
import java.io.PrintWriter; |
|
14 |
import java.sql.ResultSet; |
|
15 |
import java.sql.SQLException; |
|
16 |
import java.sql.Timestamp; |
|
17 |
import java.util.Date; |
|
18 |
|
|
19 |
/** |
|
20 |
* Created by argirok on 24/11/2015. |
|
21 |
*/ |
|
22 |
/* |
|
23 |
Build operations is the class that is responsible for building of a claim Object |
|
24 |
given a tupple (rs) from the claim db. |
|
25 |
*/ |
|
26 |
public class BuildOperations { |
|
27 |
private SqlDAO sqlDAO; |
|
28 |
public BuildOperations() { |
|
29 |
|
|
30 |
} |
|
31 |
|
|
32 |
public SqlDAO getSqlDAO() { |
|
33 |
return sqlDAO; |
|
34 |
} |
|
35 |
|
|
36 |
public void setSqlDAO(SqlDAO sqlDAO) { |
|
37 |
this.sqlDAO = sqlDAO; |
|
38 |
} |
|
39 |
|
|
40 |
|
|
41 |
public Result getDMFClaim(ResultSet rs) throws Exception { |
|
42 |
String xml = rs.getString("xml"); |
|
43 |
Result r = ParsingClaimUtils.getResultFromDMF(xml); |
|
44 |
return r; |
|
45 |
} |
|
46 |
public Claim getConceptDMFClaim(ResultSet rs) throws Exception { |
|
47 |
Claim claim = new Claim(); |
|
48 |
claim.setId(rs.getString("id")); |
|
49 |
claim.setDate(rs.getDate("date")); |
|
50 |
claim.setUserMail(rs.getString("agent")); |
|
51 |
String xml = rs.getString("xml"); |
|
52 |
claim = ParsingClaimUtils.getClaimFromConceptDMF(claim, xml); |
|
53 |
claim.setTargetType(((Result) claim.getTarget()).getResultType()); |
|
54 |
claim.setSourceType(ClaimUtils.CONTEXT); |
|
55 |
claim=this.enrichClaimFromDMFAndExternalSources(claim); |
|
56 |
return claim; |
|
57 |
} |
|
58 |
|
|
59 |
public Claim getRelationClaim(ResultSet rs) throws SQLException, IOException, SAXException, ParserConfigurationException { |
|
60 |
Claim claim = new Claim(); |
|
61 |
claim.setId(rs.getString("id")); |
|
62 |
claim.setDate(rs.getDate("date")); |
|
63 |
claim.setUserMail(rs.getString("agent")); |
|
64 |
claim=ParsingClaimUtils.getRelationClaim(claim,rs.getString("xml")); |
|
65 |
claim=this.enrichClaimFromDMFAndExternalSources(claim); |
|
66 |
return claim; |
|
67 |
} |
|
68 |
public String getQueryInsertClaim(Claim claim) { |
|
69 |
if (claim.getSourceType().equals(ClaimUtils.CONTEXT)) { |
|
70 |
return sqlDAO.getQueryGenerator().insertClaimhasContext( (Result)claim.getTarget(), (Context) claim.getSource(), claim); |
|
71 |
} else if (claim.getSourceType().equals(ClaimUtils.PROJECT)) { |
|
72 |
return sqlDAO.getQueryGenerator().insertClaimhasProject( (Result)claim.getTarget(), (Project) claim.getSource(), claim); |
|
73 |
} else{ |
|
74 |
return sqlDAO.getQueryGenerator().insertClaimhasResult( (Result)claim.getTarget(), (Result) claim.getSource(), claim); |
|
75 |
} |
|
76 |
} |
|
77 |
@Deprecated |
|
78 |
private Claim enrichClaimFromDMF(Claim claim){ |
|
79 |
if((claim.getSourceType()==null)||(claim.getSourceType().equals(ClaimUtils.PUBLICATION)||claim.getSourceType().equals(ClaimUtils.DATASET))){ |
|
80 |
Result source=(Result)claim.getSource(); |
|
81 |
claim.setSource(enrichResultFromDMF(claim.getId(), source)); |
|
82 |
claim.setSourceType(((Result) claim.getSource()).getResultType()); |
|
83 |
} |
|
84 |
if(claim.getTargetType()==null||(claim.getTargetType().equals(ClaimUtils.PUBLICATION)||claim.getTargetType().equals(ClaimUtils.DATASET))){ |
|
85 |
Result target=(Result)claim.getTarget(); |
|
86 |
claim.setTarget(enrichResultFromDMF(claim.getId(),target)); |
|
87 |
claim.setTargetType(((Result) claim.getTarget()).getResultType()); |
|
88 |
} |
|
89 |
return claim; |
|
90 |
} |
|
91 |
private Claim enrichClaimFromDMFAndExternalSources(Claim claim){ |
|
92 |
if((claim.getSourceType()==null)||(claim.getSourceType().equals(ClaimUtils.PUBLICATION)||claim.getSourceType().equals(ClaimUtils.DATASET))){ |
|
93 |
claim.setSource(enrichResultFromDMF(claim.getId(), (Result)claim.getSource())); |
|
94 |
if(((Result)claim.getSource()).getOpenaireId().contains("datacite")){ |
|
95 |
claim.setSource(ParsingClaimUtils.getXmlfromDatacite(((Result)claim.getSource()))); |
|
96 |
}else if(((Result)claim.getSource()).getOpenaireId().contains("crossref")){ |
|
97 |
claim.setSource(ParsingClaimUtils.getJsonfromCrossref((Result) claim.getSource())); |
|
98 |
} |
|
99 |
claim.setSourceType(((Result) claim.getSource()).getResultType()); |
|
100 |
} |
|
101 |
if(claim.getTargetType()==null||(claim.getTargetType().equals(ClaimUtils.PUBLICATION)||claim.getTargetType().equals(ClaimUtils.DATASET))){ |
|
102 |
//Result target=(Result)claim.getTarget(); |
|
103 |
claim.setTarget(enrichResultFromDMF(claim.getId(),(Result)claim.getTarget())); |
|
104 |
if(((Result) claim.getTarget()).getOpenaireId().contains("datacite")){ |
|
105 |
claim.setTarget(ParsingClaimUtils.getXmlfromDatacite((Result) claim.getTarget())); |
|
106 |
}else if(((Result) claim.getTarget()).getOpenaireId().contains("crossref")){ |
|
107 |
|
|
108 |
claim.setTarget(ParsingClaimUtils.getJsonfromCrossref((Result) claim.getTarget())); |
|
109 |
} |
|
110 |
claim.setTargetType(((Result) claim.getTarget()).getResultType()); |
|
111 |
} |
|
112 |
return claim; |
|
113 |
} |
|
114 |
private Result enrichResultFromDMF(String claimId, Result r){ |
|
115 |
try { |
|
116 |
/*if(r.getCollectedFrom().contains("::openaire")){ |
|
117 |
return r; |
|
118 |
}*/ |
|
119 |
r=checkForDOI(r); |
|
120 |
Result dmfResult=this.getDMFClaimById(r.getOpenaireId()); |
|
121 |
if(dmfResult!=null){ |
|
122 |
if(r.getResultType()==null){ |
|
123 |
r.setResultType(dmfResult.getResultType()); |
|
124 |
} |
|
125 |
if(r.getTitle()==null){ |
|
126 |
r.setTitle(dmfResult.getTitle()); |
|
127 |
} |
|
128 |
if(r.getDoi()==null){ |
|
129 |
r.setDoi(dmfResult.getDoi()); |
|
130 |
} |
|
131 |
if(r.getAccessRights()==null){ |
|
132 |
r.setAccessRights(dmfResult.getAccessRights()); |
|
133 |
} |
|
134 |
if(r.getEmbargoEndDate()==null){ |
|
135 |
r.setEmbargoEndDate(dmfResult.getEmbargoEndDate()); |
|
136 |
} |
|
137 |
if(r.getExternal_url()==null){ |
|
138 |
r.setExternal_url(dmfResult.getExternal_url()); |
|
139 |
} |
|
140 |
|
|
141 |
//we don't need the dmf |
|
142 |
// //TODO check when we should keep dmf in xml |
|
143 |
// if(!r.isFound()) { |
|
144 |
// if(r.getCollectedFrom()==null){ |
|
145 |
// r.setCollectedFrom(dmfResult.getCollectedFrom()); |
|
146 |
// } |
|
147 |
// r.setXml(dmfResult.getXml()); |
|
148 |
// } |
|
149 |
|
|
150 |
try{ |
|
151 |
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("enriched_results.txt", true))); |
|
152 |
Date date= new java.util.Date(); |
|
153 |
out.println(new Timestamp(date.getTime())+" - In claim - "+claimId+" result - "+r.getOpenaireId()+" enriched from dmf"); |
|
154 |
out.close(); |
|
155 |
}catch (IOException e) { |
|
156 |
e.printStackTrace(); |
|
157 |
System.err.println("Couldn't write to file " + "enriched_results.txt"); |
|
158 |
} |
|
159 |
} |
|
160 |
r=checkForDOI(r); |
|
161 |
//if type is still null => decide on provider |
|
162 |
if(r.getResultType()==null){ |
|
163 |
if(r.getCollectedFrom()!=null) { |
|
164 |
if ((r.getCollectedFrom().contains("crossref"))||( r.getCollectedFrom().contains("orcid") )) { |
|
165 |
r.setResultType(ClaimUtils.PUBLICATION); |
|
166 |
} else if (r.getCollectedFrom().contains("datacite") ) { |
|
167 |
r.setResultType(ClaimUtils.DATASET); |
|
168 |
}else{ |
|
169 |
r.setResultType("unknown"); |
|
170 |
} |
|
171 |
}else{ |
|
172 |
if (( r.getOpenaireId().contains("crossref") )||( r.getOpenaireId().contains("orcid") )) { |
|
173 |
r.setResultType(ClaimUtils.PUBLICATION); |
|
174 |
} else if ( r.getOpenaireId().contains("datacite") ) { |
|
175 |
r.setResultType(ClaimUtils.DATASET); |
|
176 |
}else{ |
|
177 |
r.setResultType("unknown"); |
|
178 |
} |
|
179 |
} |
|
180 |
} |
|
181 |
return r; |
|
182 |
} catch (Exception e) { |
|
183 |
e.printStackTrace(); |
|
184 |
return r; |
|
185 |
} |
|
186 |
} |
|
187 |
/* |
|
188 |
Checks if the doi is valid. If it is not then replaces the DOI with the valid one. |
|
189 |
*/ |
|
190 |
private Result checkForDOI(Result r) throws Exception { |
|
191 |
if(r.getDoi()==null){ |
|
192 |
return r; |
|
193 |
} |
|
194 |
SearchUtils s= new SearchUtils(); |
|
195 |
String validDOI=s.isValidDoi(r.getDoi()); |
|
196 |
if(!validDOI.equals(r.getDoi())){ |
|
197 |
if(r.getXml()!=null) { |
|
198 |
r.setXml(r.getXml().replace(r.getDoi(), validDOI)); |
|
199 |
} |
|
200 |
if(r.getExternal_url()!=null){ |
|
201 |
r.setExternal_url(r.getExternal_url().replace(r.getDoi(), validDOI)); |
|
202 |
} |
|
203 |
r.setDoi(validDOI); |
|
204 |
} |
|
205 |
return r; |
|
206 |
} |
|
207 |
public Result getDMFClaimById(String resultId) throws Exception { |
|
208 |
ResultSet rs=sqlDAO.executePreparedQuery(sqlDAO.getQueryGenerator().selectDMFById(resultId)); |
|
209 |
Result r =null; |
|
210 |
if(rs.next()) { |
|
211 |
r = this.getDMFClaim(rs); |
|
212 |
} |
|
213 |
return r; |
|
214 |
} |
|
215 |
} |
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claims/migration/QueryBuilder.java | ||
---|---|---|
1 | 1 |
package eu.dnetlib.data.claims.migration; |
2 | 2 |
|
3 |
import eu.dnetlib.data.claimsDemo.BuildOperations;
|
|
3 |
import eu.dnetlib.data.claimsDemo.ClaimBuilder;
|
|
4 | 4 |
import eu.dnetlib.data.claimsDemo.ClaimUtils; |
5 | 5 |
import eu.dnetlib.data.claimsDemo.SqlDAO; |
6 | 6 |
import org.apache.commons.io.FileUtils; |
... | ... | |
22 | 22 |
|
23 | 23 |
private Logger log = Logger.getLogger(this.getClass()); |
24 | 24 |
private SqlDAO sqlDAO; |
25 |
private BuildOperations buildOperations;
|
|
25 |
private ClaimBuilder claimBuilder;
|
|
26 | 26 |
private ClaimValidation claimValidation; |
27 | 27 |
public QueryBuilder(){ |
28 | 28 |
} |
... | ... | |
37 | 37 |
ResultSet rs=sqlDAO.executePreparedQuery(sqlDAO.getQueryGenerator().selectConceptDMFClaims(limit)); |
38 | 38 |
while(rs.next()){ |
39 | 39 |
// log.info(rs.getString("xml")); |
40 |
Claim claim= buildOperations.getConceptDMFClaim(rs);
|
|
40 |
Claim claim= claimBuilder.getConceptDMFClaim(rs);
|
|
41 | 41 |
// log.info(claim.toString()); |
42 | 42 |
//log.info(JsonldBuilder.toJsonld(claim)); |
43 | 43 |
if(claimValidation.validateClaim(claim)) { |
44 | 44 |
if (insertToDB) { |
45 | 45 |
claim= createXMLFilesForClaim(claim); |
46 | 46 |
//log.info(buildOperations.getQueryInsertClaim(claim)); |
47 |
sqlDAO.executeUpdateQuery(buildOperations.getQueryInsertClaim(claim));
|
|
47 |
sqlDAO.executeUpdateQuery(claimBuilder.getQueryInsertClaim(claim));
|
|
48 | 48 |
} |
49 | 49 |
} |
50 | 50 |
} |
... | ... | |
61 | 61 |
|
62 | 62 |
public void transformRelationClaims(ResultSet rs, boolean insertToDB) throws Exception { |
63 | 63 |
while(rs.next()){ |
64 |
Claim claim = buildOperations.getRelationClaim(rs);
|
|
64 |
Claim claim = claimBuilder.getRelationClaim(rs);
|
|
65 | 65 |
log.info(claim.toString()); |
66 | 66 |
if(claimValidation.validateClaim(claim)) { |
67 | 67 |
if (insertToDB) { |
68 | 68 |
claim= createXMLFilesForClaim(claim); |
69 | 69 |
// log.info(buildOperations.getQueryInsertClaim(claim)); |
70 |
sqlDAO.executeUpdateQuery(buildOperations.getQueryInsertClaim(claim));
|
|
70 |
sqlDAO.executeUpdateQuery(claimBuilder.getQueryInsertClaim(claim));
|
|
71 | 71 |
} |
72 | 72 |
} |
73 | 73 |
} |
... | ... | |
87 | 87 |
String xml=rs.getString("xml"); |
88 | 88 |
if(claimType!=null && claimType.equals("rels2actions")){ |
89 | 89 |
log.info("*Relation *"); |
90 |
Claim claim= buildOperations.getRelationClaim(rs);
|
|
90 |
Claim claim= claimBuilder.getRelationClaim(rs);
|
|
91 | 91 |
//log.info(JsonldBuilder.toJsonld(claim)); |
92 | 92 |
log.info(claim.toString()); |
93 | 93 |
if(claimValidation.validateClaim(claim)) { |
... | ... | |
101 | 101 |
//type ="dmf2actions" |
102 | 102 |
if(xml!=null && xml.contains("<oaf:concept")){ |
103 | 103 |
log.info("* Context *"); |
104 |
Claim claim= buildOperations.getConceptDMFClaim(rs);
|
|
104 |
Claim claim= claimBuilder.getConceptDMFClaim(rs);
|
|
105 | 105 |
log.info(claim.toString()); |
106 | 106 |
if(claimValidation.validateClaim(claim)) { |
107 | 107 |
if (insertToDB) { |
... | ... | |
112 | 112 |
} |
113 | 113 |
}else{ |
114 | 114 |
log.info("* DMF *"); |
115 |
log.info(buildOperations.getDMFClaim(rs).toString());
|
|
115 |
log.info(claimBuilder.getDMFClaim(rs).toString());
|
|
116 | 116 |
} |
117 | 117 |
} |
118 | 118 |
} |
... | ... | |
120 | 120 |
public void getAndTransformDMFClaims(Integer limit) throws Exception { |
121 | 121 |
ResultSet rs=sqlDAO.executePreparedQuery("Select * from claims_view where type='dmf2actions' and xml NOT ILIKE '%concept%' limit "+limit); |
122 | 122 |
while(rs.next()){ |
123 |
Result r= buildOperations.getDMFClaim(rs);
|
|
123 |
Result r= claimBuilder.getDMFClaim(rs);
|
|
124 | 124 |
log.info(r.toString()); |
125 | 125 |
} |
126 | 126 |
} |
... | ... | |
171 | 171 |
this.sqlDAO = sqlDAO; |
172 | 172 |
} |
173 | 173 |
|
174 |
public BuildOperations getBuildOperations() {
|
|
175 |
return buildOperations;
|
|
174 |
public ClaimBuilder getClaimBuilder() {
|
|
175 |
return claimBuilder;
|
|
176 | 176 |
} |
177 | 177 |
|
178 |
public void setBuildOperations(BuildOperations buildOperations) {
|
|
179 |
this.buildOperations = buildOperations;
|
|
178 |
public void setClaimBuilder(ClaimBuilder claimBuilder) {
|
|
179 |
this.claimBuilder = claimBuilder;
|
|
180 | 180 |
} |
181 | 181 |
|
182 | 182 |
public ClaimValidation getClaimValidation() { |
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claimsDemo/TestClass.java | ||
---|---|---|
35 | 35 |
private Logger log = Logger.getLogger(this.getClass()); |
36 | 36 |
|
37 | 37 |
@Autowired |
38 |
private BuildOperations buildOperations;
|
|
38 |
private ClaimBuilder claimBuilder;
|
|
39 | 39 |
|
40 | 40 |
@Autowired |
41 | 41 |
private QueryBuilder queryBuilder; |
... | ... | |
48 | 48 |
public void init() throws Exception { |
49 | 49 |
BasicConfigurator.configure(); |
50 | 50 |
assertNotNull(sqlDAO); |
51 |
assertNotNull(buildOperations);
|
|
51 |
assertNotNull(claimBuilder);
|
|
52 | 52 |
assertNotNull(queryBuilder); |
53 | 53 |
|
54 | 54 |
} |
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claimsDemo/ClaimBuilder.java | ||
---|---|---|
1 |
package eu.dnetlib.data.claimsDemo; |
|
2 |
|
|
3 |
import eu.dnetlib.data.claims.migration.Claim; |
|
4 |
import eu.dnetlib.data.claims.migration.Context; |
|
5 |
import eu.dnetlib.data.claims.migration.Project; |
|
6 |
import eu.dnetlib.data.claims.migration.Result; |
|
7 |
import org.xml.sax.SAXException; |
|
8 |
|
|
9 |
import javax.xml.parsers.ParserConfigurationException; |
|
10 |
import java.io.BufferedWriter; |
|
11 |
import java.io.FileWriter; |
|
12 |
import java.io.IOException; |
|
13 |
import java.io.PrintWriter; |
|
14 |
import java.sql.ResultSet; |
|
15 |
import java.sql.SQLException; |
|
16 |
import java.sql.Timestamp; |
|
17 |
import java.util.Date; |
|
18 |
|
|
19 |
/** |
|
20 |
* Created by argirok on 24/11/2015. |
|
21 |
*/ |
|
22 |
/* |
|
23 |
Build operations is the class that is responsible for building of a claim Object |
|
24 |
given a tupple (rs) from the claim db. |
|
25 |
*/ |
|
26 |
public class ClaimBuilder { |
|
27 |
private SqlDAO sqlDAO; |
|
28 |
public ClaimBuilder() { |
|
29 |
|
|
30 |
} |
|
31 |
|
|
32 |
public SqlDAO getSqlDAO() { |
|
33 |
return sqlDAO; |
|
34 |
} |
|
35 |
|
|
36 |
public void setSqlDAO(SqlDAO sqlDAO) { |
|
37 |
this.sqlDAO = sqlDAO; |
|
38 |
} |
|
39 |
|
|
40 |
|
|
41 |
public Result getDMFClaim(ResultSet rs) throws Exception { |
|
42 |
String xml = rs.getString("xml"); |
|
43 |
Result r = ParsingClaimUtils.getResultFromDMF(xml); |
|
44 |
return r; |
|
45 |
} |
|
46 |
public Claim getConceptDMFClaim(ResultSet rs) throws Exception { |
|
47 |
Claim claim = new Claim(); |
|
48 |
claim.setId(rs.getString("id")); |
|
49 |
claim.setDate(rs.getDate("date")); |
|
50 |
claim.setUserMail(rs.getString("agent")); |
|
51 |
String xml = rs.getString("xml"); |
|
52 |
claim = ParsingClaimUtils.getClaimFromConceptDMF(claim, xml); |
|
53 |
claim.setTargetType(((Result) claim.getTarget()).getResultType()); |
|
54 |
claim.setSourceType(ClaimUtils.CONTEXT); |
|
55 |
claim=this.enrichClaimFromDMFAndExternalSources(claim); |
|
56 |
return claim; |
|
57 |
} |
|
58 |
|
|
59 |
public Claim getRelationClaim(ResultSet rs) throws SQLException, IOException, SAXException, ParserConfigurationException { |
|
60 |
Claim claim = new Claim(); |
|
61 |
claim.setId(rs.getString("id")); |
|
62 |
claim.setDate(rs.getDate("date")); |
|
63 |
claim.setUserMail(rs.getString("agent")); |
|
64 |
claim=ParsingClaimUtils.getRelationClaim(claim,rs.getString("xml")); |
|
65 |
claim=this.enrichClaimFromDMFAndExternalSources(claim); |
|
66 |
return claim; |
|
67 |
} |
|
68 |
public String getQueryInsertClaim(Claim claim) { |
|
69 |
if (claim.getSourceType().equals(ClaimUtils.CONTEXT)) { |
|
70 |
return sqlDAO.getQueryGenerator().insertClaimhasContext( (Result)claim.getTarget(), (Context) claim.getSource(), claim); |
|
71 |
} else if (claim.getSourceType().equals(ClaimUtils.PROJECT)) { |
|
72 |
return sqlDAO.getQueryGenerator().insertClaimhasProject( (Result)claim.getTarget(), (Project) claim.getSource(), claim); |
|
73 |
} else{ |
|
74 |
return sqlDAO.getQueryGenerator().insertClaimhasResult( (Result)claim.getTarget(), (Result) claim.getSource(), claim); |
|
75 |
} |
|
76 |
} |
|
77 |
@Deprecated |
|
78 |
private Claim enrichClaimFromDMF(Claim claim){ |
|
79 |
if((claim.getSourceType()==null)||(claim.getSourceType().equals(ClaimUtils.PUBLICATION)||claim.getSourceType().equals(ClaimUtils.DATASET))){ |
|
80 |
Result source=(Result)claim.getSource(); |
|
81 |
claim.setSource(enrichResultFromDMF(claim.getId(), source)); |
|
82 |
claim.setSourceType(((Result) claim.getSource()).getResultType()); |
|
83 |
} |
|
84 |
if(claim.getTargetType()==null||(claim.getTargetType().equals(ClaimUtils.PUBLICATION)||claim.getTargetType().equals(ClaimUtils.DATASET))){ |
|
85 |
Result target=(Result)claim.getTarget(); |
|
86 |
claim.setTarget(enrichResultFromDMF(claim.getId(),target)); |
|
87 |
claim.setTargetType(((Result) claim.getTarget()).getResultType()); |
|
88 |
} |
|
89 |
return claim; |
|
90 |
} |
|
91 |
private Claim enrichClaimFromDMFAndExternalSources(Claim claim){ |
|
92 |
if((claim.getSourceType()==null)||(claim.getSourceType().equals(ClaimUtils.PUBLICATION)||claim.getSourceType().equals(ClaimUtils.DATASET))){ |
|
93 |
claim.setSource(enrichResultFromDMF(claim.getId(), (Result)claim.getSource())); |
|
94 |
if(((Result)claim.getSource()).getOpenaireId().contains("datacite")){ |
|
95 |
claim.setSource(ParsingClaimUtils.getXmlfromDatacite(((Result)claim.getSource()))); |
|
96 |
}else if(((Result)claim.getSource()).getOpenaireId().contains("crossref")){ |
|
97 |
claim.setSource(ParsingClaimUtils.getJsonfromCrossref((Result) claim.getSource())); |
|
98 |
} |
|
99 |
claim.setSourceType(((Result) claim.getSource()).getResultType()); |
|
100 |
} |
|
101 |
if(claim.getTargetType()==null||(claim.getTargetType().equals(ClaimUtils.PUBLICATION)||claim.getTargetType().equals(ClaimUtils.DATASET))){ |
|
102 |
//Result target=(Result)claim.getTarget(); |
|
103 |
claim.setTarget(enrichResultFromDMF(claim.getId(),(Result)claim.getTarget())); |
|
104 |
if(((Result) claim.getTarget()).getOpenaireId().contains("datacite")){ |
|
105 |
claim.setTarget(ParsingClaimUtils.getXmlfromDatacite((Result) claim.getTarget())); |
|
106 |
}else if(((Result) claim.getTarget()).getOpenaireId().contains("crossref")){ |
|
107 |
|
|
108 |
claim.setTarget(ParsingClaimUtils.getJsonfromCrossref((Result) claim.getTarget())); |
|
109 |
} |
|
110 |
claim.setTargetType(((Result) claim.getTarget()).getResultType()); |
|
111 |
} |
|
112 |
return claim; |
|
113 |
} |
|
114 |
private Result enrichResultFromDMF(String claimId, Result r){ |
|
115 |
try { |
|
116 |
/*if(r.getCollectedFrom().contains("::openaire")){ |
|
117 |
return r; |
|
118 |
}*/ |
|
119 |
r=checkForDOI(r); |
|
120 |
Result dmfResult=this.getDMFClaimById(r.getOpenaireId()); |
|
121 |
if(dmfResult!=null){ |
|
122 |
if(r.getResultType()==null){ |
|
123 |
r.setResultType(dmfResult.getResultType()); |
|
124 |
} |
|
125 |
if(r.getTitle()==null){ |
|
126 |
r.setTitle(dmfResult.getTitle()); |
|
127 |
} |
|
128 |
if(r.getDoi()==null){ |
|
129 |
r.setDoi(dmfResult.getDoi()); |
|
130 |
} |
|
131 |
if(r.getAccessRights()==null){ |
|
132 |
r.setAccessRights(dmfResult.getAccessRights()); |
|
133 |
} |
|
134 |
if(r.getEmbargoEndDate()==null){ |
|
135 |
r.setEmbargoEndDate(dmfResult.getEmbargoEndDate()); |
|
136 |
} |
|
137 |
if(r.getExternal_url()==null){ |
|
138 |
r.setExternal_url(dmfResult.getExternal_url()); |
|
139 |
} |
|
140 |
|
|
141 |
//we don't need the dmf |
|
142 |
// //TODO check when we should keep dmf in xml |
|
143 |
// if(!r.isFound()) { |
|
144 |
// if(r.getCollectedFrom()==null){ |
|
145 |
// r.setCollectedFrom(dmfResult.getCollectedFrom()); |
|
146 |
// } |
|
147 |
// r.setXml(dmfResult.getXml()); |
|
148 |
// } |
|
149 |
|
|
150 |
try{ |
|
151 |
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("enriched_results.txt", true))); |
|
152 |
Date date= new java.util.Date(); |
|
153 |
out.println(new Timestamp(date.getTime())+" - In claim - "+claimId+" result - "+r.getOpenaireId()+" enriched from dmf"); |
|
154 |
out.close(); |
|
155 |
}catch (IOException e) { |
|
156 |
e.printStackTrace(); |
|
157 |
System.err.println("Couldn't write to file " + "enriched_results.txt"); |
|
158 |
} |
|
159 |
} |
|
160 |
r=checkForDOI(r); |
|
161 |
//if type is still null => decide on provider |
|
162 |
if(r.getResultType()==null){ |
|
163 |
if(r.getCollectedFrom()!=null) { |
|
164 |
if ((r.getCollectedFrom().contains("crossref"))||( r.getCollectedFrom().contains("orcid") )) { |
|
165 |
r.setResultType(ClaimUtils.PUBLICATION); |
|
166 |
} else if (r.getCollectedFrom().contains("datacite") ) { |
|
167 |
r.setResultType(ClaimUtils.DATASET); |
|
168 |
}else{ |
|
169 |
r.setResultType("unknown"); |
|
170 |
} |
|
171 |
}else{ |
|
172 |
if (( r.getOpenaireId().contains("crossref") )||( r.getOpenaireId().contains("orcid") )) { |
|
173 |
r.setResultType(ClaimUtils.PUBLICATION); |
|
174 |
} else if ( r.getOpenaireId().contains("datacite") ) { |
|
175 |
r.setResultType(ClaimUtils.DATASET); |
|
176 |
}else{ |
|
177 |
r.setResultType("unknown"); |
|
178 |
} |
|
179 |
} |
|
180 |
} |
|
181 |
return r; |
|
182 |
} catch (Exception e) { |
|
183 |
e.printStackTrace(); |
|
184 |
return r; |
|
185 |
} |
|
186 |
} |
|
187 |
/* |
|
188 |
Checks if the doi is valid. If it is not then replaces the DOI with the valid one. |
|
189 |
*/ |
|
190 |
private Result checkForDOI(Result r) throws Exception { |
|
191 |
if(r.getDoi()==null){ |
|
192 |
return r; |
|
193 |
} |
|
194 |
SearchUtils s= new SearchUtils(); |
|
195 |
String validDOI=s.isValidDoi(r.getDoi()); |
|
196 |
if(!validDOI.equals(r.getDoi())){ |
|
197 |
if(r.getXml()!=null) { |
|
198 |
r.setXml(r.getXml().replace(r.getDoi(), validDOI)); |
|
199 |
} |
|
200 |
if(r.getExternal_url()!=null){ |
|
201 |
r.setExternal_url(r.getExternal_url().replace(r.getDoi(), validDOI)); |
|
202 |
} |
|
203 |
r.setDoi(validDOI); |
|
204 |
} |
|
205 |
return r; |
|
206 |
} |
|
207 |
public Result getDMFClaimById(String resultId) throws Exception { |
|
208 |
ResultSet rs=sqlDAO.executePreparedQuery(sqlDAO.getQueryGenerator().selectDMFById(resultId)); |
|
209 |
Result r =null; |
|
210 |
if(rs.next()) { |
|
211 |
r = this.getDMFClaim(rs); |
|
212 |
} |
|
213 |
return r; |
|
214 |
} |
|
215 |
} |
modules/uoa-claims -demo/claims-demo/src/main/resources/eu/dnetlib/data/claimsDemo/springContext-claimsDemo.xml | ||
---|---|---|
29 | 29 |
<bean id="claimValidation" class="eu.dnetlib.data.claims.migration.ClaimValidation"> |
30 | 30 |
</bean> |
31 | 31 |
|
32 |
<bean id="buildOperations" class="eu.dnetlib.data.claimsDemo.BuildOperations">
|
|
32 |
<bean id="claimBuilder" class="eu.dnetlib.data.claimsDemo.ClaimBuilder">
|
|
33 | 33 |
<property name="sqlDAO" ref="sqlDao"/> |
34 | 34 |
</bean> |
35 | 35 |
|
36 | 36 |
|
37 | 37 |
<bean id="queryBuilder" class="eu.dnetlib.data.claims.migration.QueryBuilder"> |
38 | 38 |
<property name="sqlDAO" ref="sqlDao"/> |
39 |
<property name="buildOperations" ref="buildOperations"/>
|
|
39 |
<property name="claimBuilder" ref="claimBuilder"/>
|
|
40 | 40 |
<property name="claimValidation" ref="claimValidation"/> |
41 | 41 |
</bean> |
42 | 42 |
|
Also available in: Unified diff
BuildOperations to ClaimBuilder