Project

General

Profile

« Previous | Next » 

Revision 49580

Changed Crossref to use dump on mongoDB

View differences:

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