From aa2f032b71a9e2eafbf7c7b6834f59fcdaddce8f Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Fri, 28 Oct 2016 17:12:48 +0200
Subject: [PATCH] model annotation are model scope (not project)

---
 .../annotation/services/ModelAnnotator.java   | 72 ++++++++-----------
 .../services/ModelAnnotatorTest.java          |  5 +-
 .../java/lcsb/mapviewer/run/BellExport.java   |  5 +-
 .../java/lcsb/mapviewer/run/Statistics.java   |  7 +-
 .../services/impl/ProjectService.java         |  2 +-
 5 files changed, 35 insertions(+), 56 deletions(-)

diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/ModelAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/ModelAnnotator.java
index 1dadb9b071..a29e3d25ba 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/ModelAnnotator.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/ModelAnnotator.java
@@ -25,15 +25,12 @@ import lcsb.mapviewer.annotation.services.annotators.GoAnnotator;
 import lcsb.mapviewer.annotation.services.annotators.HgncAnnotator;
 import lcsb.mapviewer.annotation.services.annotators.ReconAnnotator;
 import lcsb.mapviewer.annotation.services.annotators.UniprotAnnotator;
-import lcsb.mapviewer.common.EventStorageLoggerAppender;
 import lcsb.mapviewer.common.IProgressUpdater;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.model.ModelData;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
@@ -167,13 +164,13 @@ public class ModelAnnotator {
 	/**
 	 * Performs all possible and automatic annotations on the model.
 	 * 
-	 * @param project
-	 *          project to update
+	 * @param model
+	 *          model to update
 	 * @param progressUpdater
 	 *          callback function used for updating progress of the function
 	 */
-	public void performAnnotations(Project project, final IProgressUpdater progressUpdater) {
-		performAnnotations(project, progressUpdater, null);
+	public void performAnnotations(Model model, final IProgressUpdater progressUpdater) {
+		performAnnotations(model, progressUpdater, null);
 	}
 
 	/**
@@ -182,48 +179,37 @@ public class ModelAnnotator {
 	 * @param annotators
 	 *          this map contains lists of {@link ElementAnnotator} objects that
 	 *          should be used for a given classes
-	 * @param project
-	 *          project with models to update
+	 * @param model
+	 *          model to update
 	 * @param progressUpdater
 	 *          callback function used for updating progress of the function
 	 */
-	public void performAnnotations(Project project, final IProgressUpdater progressUpdater, Map<Class<?>, List<ElementAnnotator>> annotators) {
-		EventStorageLoggerAppender appender = new EventStorageLoggerAppender();
-		try {
-			Logger.getRootLogger().addAppender(appender);
-			progressUpdater.setProgress(0);
-			List<Model> models = new ArrayList<>();
-			for (ModelData model: project.getModels()) {
-				models.add(model.getModel());
-				models.addAll(model.getModel().getSubmodels());
-			}
-			final double size = models.size();
-			double counter = 0;
-			for (Model m : models) {
-				final double ratio = counter / size;
+	public void performAnnotations(Model model, final IProgressUpdater progressUpdater, Map<Class<?>, List<ElementAnnotator>> annotators) {
+		progressUpdater.setProgress(0);
+		List<Model> models = new ArrayList<Model>();
+		models.add(model);
+		models.addAll(model.getSubmodels());
+		final double size = models.size();
+		double counter = 0;
+		for (Model m : models) {
+			final double ratio = counter / size;
 
-				copyAnnotationFromOtherSpecies(m, new IProgressUpdater() {
-					@Override
-					public void setProgress(final double progress) {
-						progressUpdater.setProgress(ratio * IProgressUpdater.MAX_PROGRESS + (progress * COPYING_RATIO) / size);
-					}
-				});
-				annotateModel(m, new IProgressUpdater() {
+			copyAnnotationFromOtherSpecies(m, new IProgressUpdater() {
+				@Override
+				public void setProgress(final double progress) {
+					progressUpdater.setProgress(ratio * IProgressUpdater.MAX_PROGRESS + (progress * COPYING_RATIO) / size);
+				}
+			});
+			annotateModel(m, new IProgressUpdater() {
 
-					@Override
-					public void setProgress(double progress) {
-						progressUpdater
-								.setProgress(ratio * IProgressUpdater.MAX_PROGRESS + (COPYING_RATIO * IProgressUpdater.MAX_PROGRESS + progress * ANNOTATING_RATIO) / size);
-					}
-				}, annotators);
-				counter++;
-			}
-			Logger.getRootLogger().removeAppender(appender);
-			project.addLoggingInfo(appender);
-		} finally {
-			Logger.getRootLogger().removeAppender(appender);
+				@Override
+				public void setProgress(double progress) {
+					progressUpdater
+							.setProgress(ratio * IProgressUpdater.MAX_PROGRESS + (COPYING_RATIO * IProgressUpdater.MAX_PROGRESS + progress * ANNOTATING_RATIO) / size);
+				}
+			}, annotators);
+			counter++;
 		}
-
 	}
 
 	/**
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/ModelAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/ModelAnnotatorTest.java
index 0402014d42..b920636e1d 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/ModelAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/ModelAnnotatorTest.java
@@ -29,7 +29,6 @@ import lcsb.mapviewer.annotation.services.annotators.AnnotatorException;
 import lcsb.mapviewer.annotation.services.annotators.ElementAnnotator;
 import lcsb.mapviewer.annotation.services.annotators.ReconAnnotator;
 import lcsb.mapviewer.common.IProgressUpdater;
-import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.AnnotatedObject;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
@@ -312,9 +311,7 @@ public class ModelAnnotatorTest extends AnnotationTestFunctions {
 
 			final MutableDouble maxProgress = new MutableDouble(0.0);
 
-			Project project = new Project();
-			project.addModel(model);
-			modelAnnotator.performAnnotations(project, new IProgressUpdater() {
+			modelAnnotator.performAnnotations(model, new IProgressUpdater() {
 				@Override
 				public void setProgress(double progress) {
 					maxProgress.setValue(Math.max(progress, maxProgress.getValue()));
diff --git a/console/src/main/java/lcsb/mapviewer/run/BellExport.java b/console/src/main/java/lcsb/mapviewer/run/BellExport.java
index b70a0b9423..f3c63406f7 100644
--- a/console/src/main/java/lcsb/mapviewer/run/BellExport.java
+++ b/console/src/main/java/lcsb/mapviewer/run/BellExport.java
@@ -7,7 +7,6 @@ import lcsb.mapviewer.annotation.services.ModelAnnotator;
 import lcsb.mapviewer.common.IProgressUpdater;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
-import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.persist.ApplicationContextLoader;
@@ -82,10 +81,8 @@ public class BellExport {
 			// version = "1.1.38";
 			dbUtils.createSessionForCurrentThread();
 			Model model = p.createModel(new ConverterParams().filename(filename));
-			Project project = new Project();
-			project.addModel(model);
 
-			modelAnnotator.performAnnotations(project, new IProgressUpdater() {
+			modelAnnotator.performAnnotations(model, new IProgressUpdater() {
 				@Override
 				public void setProgress(double progress) {
 				}
diff --git a/console/src/main/java/lcsb/mapviewer/run/Statistics.java b/console/src/main/java/lcsb/mapviewer/run/Statistics.java
index 661ba6db47..600a4ba8a0 100644
--- a/console/src/main/java/lcsb/mapviewer/run/Statistics.java
+++ b/console/src/main/java/lcsb/mapviewer/run/Statistics.java
@@ -20,7 +20,6 @@ import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.IProgressUpdater;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
-import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.compartment.Compartment;
@@ -113,11 +112,9 @@ public class Statistics {
 		try {
 			// String modelName = PdMapAnnotations.getLastPdFilename();
 			CellDesignerXmlParser parser = new CellDesignerXmlParser();
-			Project project = new Project();
 			for (String name : fileNames) {
 				Model model = parser.createModel(new ConverterParams().filename(name));
 				models.add(model);
-				project.addModel(model);
 			}
 
 			IProgressUpdater updater = new IProgressUpdater() {
@@ -126,7 +123,9 @@ public class Statistics {
 					logger.debug("Progress: " + progress);
 				}
 			};
-			modelAnnotator.performAnnotations(project, updater);
+			for (Model model : models) {
+				modelAnnotator.performAnnotations(model, updater);
+			}
 			// modelAnnotator.removeIncorrectAnnotations(model, updater);
 
 			printStatistics(models);
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
index 46a9e71f11..04fd199662 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
@@ -735,7 +735,7 @@ public class ProjectService implements IProjectService {
 				}
 			}
 			logger.debug("Updating annotations");
-			modelAnnotator.performAnnotations(project, new IProgressUpdater() {
+			modelAnnotator.performAnnotations(model, new IProgressUpdater() {
 
 				@Override
 				public void setProgress(final double progress) {
-- 
GitLab