Project

General

Profile

« Previous | Next » 

Revision 60864

API Cache

View differences:

modules/dnet-isti/trunk/src/main/java/eu/dnetlib/data/mdstore/plugins/EnrichDatasetsPlugin.java
9 9
import org.apache.commons.lang3.StringUtils;
10 10
import org.apache.commons.logging.Log;
11 11
import org.apache.commons.logging.LogFactory;
12
import org.springframework.beans.factory.annotation.Autowired;
12 13
import org.springframework.beans.factory.annotation.Value;
13 14

  
14 15
import com.google.gson.Gson;
15 16
import com.google.gson.reflect.TypeToken;
17
import com.mongodb.MongoClient;
18
import com.mongodb.client.MongoCollection;
16 19

  
17 20
import eu.dnetlib.data.mdstore.plugins.objects.Dataset;
18 21
import eu.dnetlib.data.mdstore.plugins.objects.MdRecord;
......
29 32
	@Value("${plugin.enrich.dataset.dli.url}")
30 33
	private String baseUrl;
31 34

  
35
	@Autowired
36
	private MongoClient mongoClient;
37

  
32 38
	private Counter enrichDatasetsCounter = new Counter();
33 39

  
34 40
	@Override
......
48 54
	}
49 55

  
50 56
	@Override
57
	protected MongoCollection<org.bson.Document> getCacheCollection() {
58
		return mongoClient.getDatabase("API_CACHES").getCollection("DATASETS_API_CACHE");
59
	}
60

  
61
	@Override
51 62
	protected boolean updateDocument(final MdRecord doc, final String response) {
52 63

  
53 64
		doc.getDatasets().clear();
modules/dnet-isti/trunk/src/main/java/eu/dnetlib/data/mdstore/plugins/GenericDoiMdstorePlugin.java
5 5

  
6 6
import org.apache.commons.logging.Log;
7 7
import org.apache.commons.logging.LogFactory;
8
import org.bson.Document;
8 9

  
10
import com.mongodb.BasicDBObject;
11
import com.mongodb.client.MongoCollection;
12

  
9 13
import eu.dnetlib.data.mdstore.plugins.objects.MdRecord;
10 14
import eu.dnetlib.data.utils.HttpFetcher;
11 15

  
......
17 21
	protected final boolean updateRecord(final String recordId, final MdRecord record) {
18 22
		for (final String doi : record.getDois()) {
19 23
			log.debug("  Record " + record.getId() + " has doi " + doi);
20
			final String response = download(doi);
24
			final String response = obtainData(doi);
21 25
			if ((response != null) && updateDocument(record, response)) { return true; }
22 26
		}
23 27
		return false;
......
27 31

  
28 32
	abstract protected URI prepareURI(String doi) throws URISyntaxException;
29 33

  
34
	abstract protected MongoCollection<Document> getCacheCollection();
35

  
36
	private String obtainData(final String doi) {
37
		final MongoCollection<Document> cacheColl = getCacheCollection();
38

  
39
		final Document row = cacheColl.find(new BasicDBObject("doi", doi)).first();
40
		if (row != null) {
41
			return row.get("data") != null ? row.get("data").toString() : null;
42
		} else {
43
			final String res = download(doi);
44

  
45
			final Document doc = new Document();
46
			doc.append("doi", doi);
47
			doc.append("data", res);
48
			cacheColl.insertOne(doc);
49

  
50
			return res;
51
		}
52
	}
53

  
30 54
	private String download(final String doi) {
31 55
		try {
32 56
			return HttpFetcher.fetch(prepareURI(doi));
modules/dnet-isti/trunk/src/main/java/eu/dnetlib/data/mdstore/plugins/EnrichOpenairePlugin.java
19 19
import org.dom4j.Element;
20 20
import org.dom4j.Node;
21 21
import org.dom4j.io.SAXReader;
22
import org.springframework.beans.factory.annotation.Autowired;
22 23
import org.springframework.beans.factory.annotation.Value;
23 24

  
24 25
import com.google.common.base.Splitter;
26
import com.mongodb.MongoClient;
27
import com.mongodb.client.MongoCollection;
25 28

  
26 29
import eu.dnetlib.data.mdstore.plugins.objects.MdRecord;
27 30
import eu.dnetlib.data.mdstore.plugins.objects.MyURL;
......
37 40
	@Value("${plugin.enrich.openaire.datasources.blacklist}")
38 41
	private String datasourceBlackList;
39 42

  
43
	@Autowired
44
	private MongoClient mongoClient;
45

  
40 46
	private Map<String, Counter> counters = new HashMap<>();
41 47

  
42 48
	@Override
......
45 51
	}
46 52

  
47 53
	@Override
54
	protected MongoCollection<org.bson.Document> getCacheCollection() {
55
		return mongoClient.getDatabase("API_CACHES").getCollection("OPENAIRE_API_CACHE");
56
	}
57

  
58
	@Override
48 59
	protected void reconfigure(final Map<String, String> params) {
49 60
		counters.clear();
50 61
		counters.put("subjects", new Counter());

Also available in: Unified diff