From 38b4f2958435942ecc31bc9231fefa7096fb5806 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Tue, 1 Aug 2017 10:43:59 +0200
Subject: [PATCH] common cache interface extracted for mirnas, drugs,
 chemicals|

---
 .../services/search/db/DbSearchService.java   | 48 +++++++++++++++++
 .../search/db/chemical/ChemicalService.java   | 35 +------------
 .../services/search/db/drug/DrugService.java  | 52 +------------------
 .../search/db/mirna/MiRNAService.java         | 34 +-----------
 4 files changed, 54 insertions(+), 115 deletions(-)
 create mode 100644 service/src/main/java/lcsb/mapviewer/services/search/db/DbSearchService.java

diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/DbSearchService.java b/service/src/main/java/lcsb/mapviewer/services/search/db/DbSearchService.java
new file mode 100644
index 0000000000..43bdc10b27
--- /dev/null
+++ b/service/src/main/java/lcsb/mapviewer/services/search/db/DbSearchService.java
@@ -0,0 +1,48 @@
+package lcsb.mapviewer.services.search.db;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+import lcsb.mapviewer.annotation.data.Target;
+import lcsb.mapviewer.annotation.data.TargettingStructure;
+import lcsb.mapviewer.annotation.services.PubmedParser;
+import lcsb.mapviewer.annotation.services.PubmedSearchException;
+import lcsb.mapviewer.annotation.services.annotators.AnnotatorException;
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.MiriamType;
+
+@Transactional(value = "txManager")
+public abstract class DbSearchService {
+
+	/**
+	 * Service accessing
+	 * <a href="http://europepmc.org/RestfulWebService">pubmed</a>.
+	 */
+	@Autowired
+	private PubmedParser														 pubmedParser;
+
+	protected void cacheMiriamData(TargettingStructure targettingStructure) throws AnnotatorException {
+		Set<MiriamData> result = new HashSet<>();
+		result.addAll(targettingStructure.getSources());
+		for (Target target : targettingStructure.getTargets()) {
+			result.addAll(target.getGenes());
+			result.addAll(target.getReferences());
+
+		}
+		
+		for (MiriamData miriamData : result) {
+			if (MiriamType.PUBMED.equals(miriamData.getDataType())) {
+				try {
+					pubmedParser.getPubmedArticleById(Integer.valueOf(miriamData.getResource()));
+				} catch (NumberFormatException | PubmedSearchException e) {
+					throw new AnnotatorException(e);
+				}
+			}
+		}
+		
+	}
+
+}
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalService.java b/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalService.java
index 7ada8d540a..94eaaef9c4 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalService.java
@@ -17,12 +17,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
 import lcsb.mapviewer.annotation.data.Chemical;
-import lcsb.mapviewer.annotation.data.Target;
-import lcsb.mapviewer.annotation.data.TargettingStructure;
 import lcsb.mapviewer.annotation.services.ChemicalParser;
 import lcsb.mapviewer.annotation.services.ChemicalSearchException;
-import lcsb.mapviewer.annotation.services.PubmedParser;
-import lcsb.mapviewer.annotation.services.PubmedSearchException;
 import lcsb.mapviewer.annotation.services.annotators.AnnotatorException;
 import lcsb.mapviewer.annotation.services.annotators.HgncAnnotator;
 import lcsb.mapviewer.common.IProgressUpdater;
@@ -38,6 +34,7 @@ import lcsb.mapviewer.model.map.species.Rna;
 import lcsb.mapviewer.model.map.statistics.SearchType;
 import lcsb.mapviewer.services.interfaces.ISearchHistoryService;
 import lcsb.mapviewer.services.search.db.DbSearchCriteria;
+import lcsb.mapviewer.services.search.db.DbSearchService;
 
 /**
  * Implementation of the service that allows access information about chemicals.
@@ -46,7 +43,7 @@ import lcsb.mapviewer.services.search.db.DbSearchCriteria;
  * 
  */
 @Transactional(value = "txManager")
-public class ChemicalService implements IChemicalService {
+public class ChemicalService extends DbSearchService implements IChemicalService {
 
 	/**
 	 * Default class logger.
@@ -70,13 +67,6 @@ public class ChemicalService implements IChemicalService {
 	@Autowired
 	private HgncAnnotator														 hgncAnnotator;
 
-	/**
-	 * Service accessing
-	 * <a href="http://europepmc.org/RestfulWebService">pubmed</a>.
-	 */
-	@Autowired
-	private PubmedParser														 pubmedParser;
-
 	/**
 	 * Service that manages search history.
 	 */
@@ -323,25 +313,4 @@ public class ChemicalService implements IChemicalService {
 		}
 	}
 
-	private void cacheMiriamData(TargettingStructure targettingStructure) throws AnnotatorException {
-		Set<MiriamData> result = new HashSet<>();
-		result.addAll(targettingStructure.getSources());
-		for (Target target : targettingStructure.getTargets()) {
-			result.addAll(target.getGenes());
-			result.addAll(target.getReferences());
-
-		}
-		
-		for (MiriamData miriamData : result) {
-			if (miriamData.getDataType().equals(MiriamType.PUBMED)) {
-				try {
-					pubmedParser.getPubmedArticleById(Integer.valueOf(miriamData.getResource()));
-				} catch (NumberFormatException | PubmedSearchException e) {
-					throw new AnnotatorException(e);
-				}
-			}
-		}
-		
-	}
-
 }
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/drug/DrugService.java b/service/src/main/java/lcsb/mapviewer/services/search/db/drug/DrugService.java
index 584dfa0811..c220c2a4c1 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/db/drug/DrugService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/db/drug/DrugService.java
@@ -13,12 +13,9 @@ import org.springframework.transaction.annotation.Transactional;
 
 import lcsb.mapviewer.annotation.data.Drug;
 import lcsb.mapviewer.annotation.data.Target;
-import lcsb.mapviewer.annotation.data.TargettingStructure;
 import lcsb.mapviewer.annotation.services.ChEMBLParser;
 import lcsb.mapviewer.annotation.services.DrugSearchException;
 import lcsb.mapviewer.annotation.services.DrugbankHTMLParser;
-import lcsb.mapviewer.annotation.services.PubmedParser;
-import lcsb.mapviewer.annotation.services.PubmedSearchException;
 import lcsb.mapviewer.annotation.services.annotators.AnnotatorException;
 import lcsb.mapviewer.annotation.services.annotators.HgncAnnotator;
 import lcsb.mapviewer.common.IProgressUpdater;
@@ -33,6 +30,7 @@ import lcsb.mapviewer.model.map.species.Rna;
 import lcsb.mapviewer.model.map.statistics.SearchType;
 import lcsb.mapviewer.services.interfaces.ISearchHistoryService;
 import lcsb.mapviewer.services.search.db.DbSearchCriteria;
+import lcsb.mapviewer.services.search.db.DbSearchService;
 
 /**
  * Implementation of the service that allows access information about drugs.
@@ -41,7 +39,7 @@ import lcsb.mapviewer.services.search.db.DbSearchCriteria;
  * 
  */
 @Transactional(value = "txManager")
-public class DrugService implements IDrugService {
+public class DrugService extends DbSearchService implements IDrugService {
 
 	/**
 	 * Default class logger.
@@ -67,13 +65,6 @@ public class DrugService implements IDrugService {
 	@Autowired
 	private HgncAnnotator					hgncAnnotator;
 
-	/**
-	 * Service accessing
-	 * <a href="http://europepmc.org/RestfulWebService">pubmed</a>.
-	 */
-	@Autowired
-	private PubmedParser					pubmedParser;
-
 	/**
 	 * Service that manages search history.
 	 */
@@ -348,23 +339,6 @@ public class DrugService implements IDrugService {
 		this.searchHistoryService = searchHistoryService;
 	}
 
-	/**
-	 * @return the pubmedParser
-	 * @see #pubmedParser
-	 */
-	public PubmedParser getPubmedParser() {
-		return pubmedParser;
-	}
-
-	/**
-	 * @param pubmedParser
-	 *          the pubmedParser to set
-	 * @see #pubmedParser
-	 */
-	public void setPubmedParser(PubmedParser pubmedParser) {
-		this.pubmedParser = pubmedParser;
-	}
-
 	@Override
 	public void cacheDataForModel(Model originalModel, IProgressUpdater iProgressUpdater) {
 		logger.debug("Caching drug queries...");
@@ -410,26 +384,4 @@ public class DrugService implements IDrugService {
 			}
 		}
 	}
-
-	private void cacheMiriamData(TargettingStructure targettingStructure) throws AnnotatorException {
-		Set<MiriamData> result = new HashSet<>();
-		result.addAll(targettingStructure.getSources());
-		for (Target target : targettingStructure.getTargets()) {
-			result.addAll(target.getGenes());
-			result.addAll(target.getReferences());
-
-		}
-
-		for (MiriamData miriamData : result) {
-			if (miriamData.getDataType().equals(MiriamType.PUBMED)) {
-				try {
-					pubmedParser.getPubmedArticleById(Integer.valueOf(miriamData.getResource()));
-				} catch (NumberFormatException | PubmedSearchException e) {
-					throw new AnnotatorException(e);
-				}
-			}
-		}
-
-	}
-
 }
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAService.java b/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAService.java
index 57ccbb24e6..136a102242 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAService.java
@@ -15,11 +15,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import lcsb.mapviewer.annotation.data.MiRNA;
 import lcsb.mapviewer.annotation.data.Target;
-import lcsb.mapviewer.annotation.data.TargettingStructure;
 import lcsb.mapviewer.annotation.services.MiRNAParser;
 import lcsb.mapviewer.annotation.services.MiRNASearchException;
-import lcsb.mapviewer.annotation.services.PubmedParser;
-import lcsb.mapviewer.annotation.services.PubmedSearchException;
 import lcsb.mapviewer.annotation.services.annotators.AnnotatorException;
 import lcsb.mapviewer.annotation.services.annotators.HgncAnnotator;
 import lcsb.mapviewer.common.IProgressUpdater;
@@ -34,6 +31,7 @@ import lcsb.mapviewer.model.map.species.Rna;
 import lcsb.mapviewer.model.map.statistics.SearchType;
 import lcsb.mapviewer.services.interfaces.ISearchHistoryService;
 import lcsb.mapviewer.services.search.db.DbSearchCriteria;
+import lcsb.mapviewer.services.search.db.DbSearchService;
 
 /**
  * Implementation of the service that allows access information about che.
@@ -42,7 +40,7 @@ import lcsb.mapviewer.services.search.db.DbSearchCriteria;
  * 
  */
 @Transactional(value = "txManager")
-public class MiRNAService implements IMiRNAService {
+public class MiRNAService extends DbSearchService implements IMiRNAService {
 
 	/**
 	 * Default class logger.
@@ -68,13 +66,6 @@ public class MiRNAService implements IMiRNAService {
 	@Autowired
 	private ISearchHistoryService	searchHistoryService;
 
-	/**
-	 * Service accessing
-	 * <a href="http://europepmc.org/RestfulWebService">pubmed</a>.
-	 */
-	@Autowired
-	private PubmedParser					pubmedParser;
-
 	/**
 	 * Default constructor.
 	 */
@@ -243,25 +234,4 @@ public class MiRNAService implements IMiRNAService {
 		}
 	}
 
-	private void cacheMiriamData(TargettingStructure targettingStructure) throws AnnotatorException {
-		Set<MiriamData> result = new HashSet<>();
-		result.addAll(targettingStructure.getSources());
-		for (Target target : targettingStructure.getTargets()) {
-			result.addAll(target.getGenes());
-			result.addAll(target.getReferences());
-
-		}
-
-		for (MiriamData miriamData : result) {
-			if (miriamData.getDataType().equals(MiriamType.PUBMED)) {
-				try {
-					pubmedParser.getPubmedArticleById(Integer.valueOf(miriamData.getResource()));
-				} catch (NumberFormatException | PubmedSearchException e) {
-					throw new AnnotatorException(e);
-				}
-			}
-		}
-
-	}
-
 }
-- 
GitLab