Revision 49580
Added by Sandro La Bruzzo over 6 years ago
CrossrefResolver.java | ||
---|---|---|
2 | 2 |
|
3 | 3 |
import java.net.URLEncoder; |
4 | 4 |
|
5 |
import com.mongodb.DBObject; |
|
6 |
import com.mongodb.MongoClient; |
|
7 |
import com.mongodb.QueryBuilder; |
|
8 |
import com.mongodb.client.FindIterable; |
|
9 |
import com.mongodb.client.MongoCollection; |
|
10 |
import com.mongodb.client.MongoCursor; |
|
11 |
import com.mongodb.client.MongoDatabase; |
|
5 | 12 |
import eu.dnetlib.dli.resolver.model.DLIResolvedObject; |
6 | 13 |
import eu.dnetlib.pid.resolver.AbstractPIDResolver; |
7 | 14 |
import groovy.transform.Synchronized; |
8 | 15 |
import org.apache.commons.logging.Log; |
9 | 16 |
import org.apache.commons.logging.LogFactory; |
17 |
import org.bson.Document; |
|
18 |
import org.bson.conversions.Bson; |
|
10 | 19 |
import org.springframework.beans.factory.annotation.Autowired; |
11 | 20 |
|
12 | 21 |
// TODO: Auto-generated Javadoc |
... | ... | |
32 | 41 |
@Autowired |
33 | 42 |
private CrossRefParserJSON parser; |
34 | 43 |
|
44 |
|
|
45 |
@Autowired |
|
46 |
private MongoClient mongoClient; |
|
47 |
|
|
48 |
private MongoDatabase db; |
|
49 |
|
|
35 | 50 |
@Override |
36 | 51 |
protected boolean canResolvePid(final String pidType) { |
37 | 52 |
return (pidType != null) && ("doi".equals(pidType.toLowerCase().trim()) || "handle".equals(pidType.toLowerCase().trim())); |
... | ... | |
42 | 57 |
protected DLIResolvedObject resolve(final String pid, final String pidType) { |
43 | 58 |
String response; |
44 | 59 |
try { |
45 |
response = requestURL(baseUrlCrossref + URLEncoder.encode(pid, "UTF-8")); |
|
60 |
// response = requestURL(baseUrlCrossref + URLEncoder.encode(pid, "UTF-8")); |
|
61 |
response = retrieveCrossRefFromDump(pid); |
|
46 | 62 |
} catch (Exception e) { |
47 | 63 |
log.debug("unable to get response"); |
48 | 64 |
return null; |
... | ... | |
61 | 77 |
return null; |
62 | 78 |
} |
63 | 79 |
|
80 |
|
|
81 |
private String retrieveCrossRefFromDump(final String pid) { |
|
82 |
if (db == null) { |
|
83 |
db = mongoClient.getDatabase("crossRef"); |
|
84 |
|
|
85 |
} |
|
86 |
final MongoCollection<Document> crossRef = db.getCollection("dump"); |
|
87 |
|
|
88 |
DBObject query = QueryBuilder.start("_id").is(pid).get(); |
|
89 |
FindIterable<Document> documents = crossRef.find((Bson) query).limit(1); |
|
90 |
MongoCursor<Document> iterator = documents.iterator(); |
|
91 |
if (iterator.hasNext()){ |
|
92 |
return iterator.next().toJson(); |
|
93 |
} |
|
94 |
return null; |
|
95 |
|
|
96 |
|
|
97 |
|
|
98 |
|
|
99 |
} |
|
100 |
|
|
101 |
|
|
102 |
|
|
103 |
|
|
104 |
|
|
64 | 105 |
} |
Also available in: Unified diff
Changed Crossref to use dump on mongoDB