From 5cc7ecf113c40017b03aec2aa058388043654def Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 10 May 2019 19:00:16 +0200 Subject: [PATCH] unused code removed --- .../services/impl/SearchService.java | 116 +----------- .../services/interfaces/ISearchService.java | 168 ------------------ .../services/impl/SearchServiceTest.java | 89 +++------- 3 files changed, 24 insertions(+), 349 deletions(-) diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java b/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java index a536521da9..9bda1fdbdf 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java @@ -15,7 +15,6 @@ import org.apache.log4j.Logger; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import lcsb.mapviewer.commands.SemanticZoomLevelMatcher; import lcsb.mapviewer.common.Configuration; import lcsb.mapviewer.common.exception.InvalidArgumentException; import lcsb.mapviewer.common.exception.InvalidClassException; @@ -58,8 +57,6 @@ import lcsb.mapviewer.services.utils.SearchIndexer; @Service public class SearchService implements ISearchService { - private SemanticZoomLevelMatcher zoomLevelMatcher = new SemanticZoomLevelMatcher(); - /** * Prefix used in search by name interface to limit results only to species. */ @@ -221,13 +218,13 @@ public class SearchService implements ISearchService { * @return list of object found for the query string sorted by the score value */ protected List<BioEntity> searchByIndexedQuery(Model model, String query, int limit, Boolean perfectMatch, - Class<? extends Element> type) { + Class<? extends Element> type) { List<BioEntity> result = new ArrayList<>(); if (query.startsWith(REACTION_SEARCH_PREFIX)) { return getReactionById(model, query.replaceFirst(REACTION_SEARCH_PREFIX, "").toLowerCase()); } else if (query.startsWith(SPECIES_SEARCH_PREFIX)) { Element element = model.getElementByElementId(query.replaceFirst(SPECIES_SEARCH_PREFIX, "")); - if (element !=null) { + if (element != null) { result.add(element); } } else if (query.startsWith(ELEMENT_SEARCH_PREFIX)) { @@ -358,114 +355,9 @@ public class SearchService implements ISearchService { return result; } - @Override - public List<BioEntity> searchByCoordinates(CoordinatesSearchParams params) { - List<Object> results = new ArrayList<Object>(); - - Set<Element> aliases = params.getModel().getElements(); - Point2D point = new Point2D.Double(params.getX(), params.getY()); - for (Element alias : aliases) { - if (alias instanceof Species) { - if (alias.contains(point)) { - if (isVisible(alias, params)) { - results.add(alias); - } - } - } - } - List<BioEntity> result = new ArrayList<>(); - double dist = params.getDistance(); - if (results.size() == 0) { - Reaction r = null; - Set<Reaction> reactions = params.getModel().getReactions(); - for (Reaction reaction : reactions) { - double newDist = reaction.getDistanceFromPoint(point); - if (newDist < dist) { - if (isVisible(reaction, params)) { - r = reaction; - dist = reaction.getDistanceFromPoint(point); - } - } - } - if (r != null) { - result.addAll(reactionToResultList(r)); - return result; - } - } - - if (results.size() > 1) { - Element alias = (Element) results.get(0); - for (Object obj : results) { - if (((Element) (obj)).getSize() < alias.getSize()) { - alias = (Element) obj; - } - } - results.clear(); - results.add(alias); - } - if (results.size() == 0) { - return result; - } else { - Object obj = results.get(0); - if (obj instanceof Element) { - result.add((BioEntity) obj); - return result; - } else if (obj instanceof Reaction) { - result.addAll(reactionToResultList((Reaction) obj)); - return result; - } else { - throw new InvalidStateException("Unknown class type: " + obj.getClass()); - } - } - } - - /** - * Check if reaction is visible for the user. Reaction is visible when at least - * one node of the reaction is visible. - * - * @param reaction - * which reaction is tested - * @param params - * params that determines the client search environment (zoom level, - * type of the layout) - * @return <code>true</code> if reaction is visible for the user, - * <code>false</code> otherwise - */ - private boolean isVisible(Reaction reaction, CoordinatesSearchParams params) { - if (params.getLevel() == null) { - return true; - } - for (ReactionNode node : reaction.getReactionNodes()) { - if (isVisible(node.getElement(), params)) { - return true; - } - } - return false; - } - - /** - * Checks if alias is visible for the user. Alias is invisible when the search - * is performed on the hierarchical layout and the alias is hidden by the - * complex or compartment. - * - * @param alias - * alias to be checked for visibility - * @param params - * that determines the client search environment (zoom level, type of - * the layout) - * @return <code>true</code> if alias is visible for the user, - * <code>false</code> otherwise - */ - private boolean isVisible(Element alias, CoordinatesSearchParams params) { - if (params.getLevel() == null) { - return true; - } - return zoomLevelMatcher.isVisible(params.getLevel(), alias.getVisibilityLevel()); - } - @Override public List<BioEntity> searchByQuery(Model model, String query, int limit, Boolean perfectMatch, - String ipAddress) { + String ipAddress) { query = query.toLowerCase(); if (query == null) { throw new InvalidArgumentException("Invalid query: null"); @@ -552,7 +444,7 @@ public class SearchService implements ISearchService { @Override public List<BioEntity> getClosestElements(Model model, Point2D point, int numberOfElements, boolean perfectHit, - Collection<String> types) { + Collection<String> types) { List<BioEntity> result = new ArrayList<>(); // probably this could be improved algorithmitically, right now all objects diff --git a/service/src/main/java/lcsb/mapviewer/services/interfaces/ISearchService.java b/service/src/main/java/lcsb/mapviewer/services/interfaces/ISearchService.java index 11cff639a7..fb76a0602a 100644 --- a/service/src/main/java/lcsb/mapviewer/services/interfaces/ISearchService.java +++ b/service/src/main/java/lcsb/mapviewer/services/interfaces/ISearchService.java @@ -4,8 +4,6 @@ import java.awt.geom.Point2D; import java.util.Collection; import java.util.List; -import org.apache.log4j.Logger; - import lcsb.mapviewer.model.map.BioEntity; import lcsb.mapviewer.model.map.model.Model; @@ -16,172 +14,6 @@ import lcsb.mapviewer.model.map.model.Model; * */ public interface ISearchService { - /** - * Parameters of search objects on the map using coordinates. It's possible to - * add also information about nested model and level at which searching is - * performed in the hierarchical view. More information about hierarchical view - * can be found in the definition of - * {@link lcsb.mapviewer.converter.graphics.AbstractImageGenerator - * AbstractImageGenerator}. - * - * @author Piotr Gawron - * - */ - class CoordinatesSearchParams { - - /** - * Default class logger. - */ - @SuppressWarnings("unused") - private final Logger logger = Logger.getLogger(CoordinatesSearchParams.class); - - /** - * Model where we perform search. - */ - private Model model = null; - - /** - * X coordinate of the search event. - */ - private double x = 0; - - /** - * Y coordinate of the search event. - */ - private double y = 0; - - /** - * Maximum distance between object that could be found and point that is valid. - */ - private double distance = 0; - - /** - * Level at which the search is performed. It's used during determining if the - * object is visible in hierarchical view. - */ - private Integer level = null; - - /** - * @return the model - * @see #model - */ - public Model getModel() { - return model; - } - - /** - * @param model - * the model to set - * @return object with all parameters - * @see #model - */ - public CoordinatesSearchParams model(Model model) { - this.model = model; - return this; - } - - /** - * @param point - * the coordinates to set - * @return object with all parameters - * @see #model - */ - public CoordinatesSearchParams point(Point2D point) { - this.x = point.getX(); - this.y = point.getY(); - return this; - } - - /** - * @return the x - * @see #x - */ - public double getX() { - return x; - } - - /** - * @param x - * the x to set - * @return object with all parameters - * @see #x - */ - public CoordinatesSearchParams x(double x) { - this.x = x; - return this; - } - - /** - * @return the y - * @see #y - */ - public double getY() { - return y; - } - - /** - * @param y - * the y to set - * @return object with all parameters - * @see #y - */ - public CoordinatesSearchParams y(double y) { - this.y = y; - return this; - } - - /** - * @return the distance - * @see #distance - */ - public double getDistance() { - return distance; - } - - /** - * @param distance - * the distance to set - * @return object with all parameters - * @see #distance - */ - public CoordinatesSearchParams distance(double distance) { - this.distance = distance; - return this; - } - - /** - * @param level - * the level to set - * @return object with all parameters - * @see #level - */ - public CoordinatesSearchParams level(Integer level) { - this.level = level; - return this; - } - - /** - * @return the level - * @see #level - */ - public Integer getLevel() { - return level; - } - - } - - /** - * Search the element on the map using coordinates. It is also possible to - * provide information about layout (if it's nested or not) and hierarchical - * level. - * - * @param params - * set of search params. More information can be found here: - * {@link CoordinatesSearchParams} - * @return object that match best the search criteria. If such object doesn't - * exist then <code>null</code> is returned. - */ - List<BioEntity> searchByCoordinates(CoordinatesSearchParams params); /** * Search for elements on the map by query. Returns many possibilities from best diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/SearchServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/impl/SearchServiceTest.java index 3fd35f90e7..a5771d8953 100644 --- a/service/src/test/java/lcsb/mapviewer/services/impl/SearchServiceTest.java +++ b/service/src/test/java/lcsb/mapviewer/services/impl/SearchServiceTest.java @@ -42,7 +42,6 @@ import lcsb.mapviewer.model.map.species.SimpleMolecule; import lcsb.mapviewer.model.map.species.Species; import lcsb.mapviewer.model.map.species.Unknown; import lcsb.mapviewer.services.ServiceTestFunctions; -import lcsb.mapviewer.services.interfaces.ISearchService.CoordinatesSearchParams; import lcsb.mapviewer.services.utils.SearchIndexer; public class SearchServiceTest extends ServiceTestFunctions { @@ -53,6 +52,8 @@ public class SearchServiceTest extends ServiceTestFunctions { Map<Class<?>, String> speciesSearchPrefix = new HashMap<Class<?>, String>(); Map<String, Class<?>> speciesSearchReversePrefix = new HashMap<String, Class<?>>(); + int elementCounter = 0; + @Before public void setUp() throws Exception { addSearchPrefix("complex", Complex.class); @@ -329,11 +330,7 @@ public class SearchServiceTest extends ServiceTestFunctions { public void testSearchClosest2() throws Exception { try { Model model = new ModelFullIndexed(null); - GenericProtein protein1 = new GenericProtein("s1"); - protein1.setWidth(20); - protein1.setHeight(20); - protein1.setX(5); - protein1.setY(5); + GenericProtein protein1 = createProtein(); model.addElement(protein1); GenericProtein protein2 = new GenericProtein("s2"); protein2.setWidth(10); @@ -352,12 +349,14 @@ public class SearchServiceTest extends ServiceTestFunctions { new ArrayList<>()); assertNotNull(elements); assertEquals(3, elements.size()); - BioEntity sAlias = elements.get(0); - assertEquals("s2", sAlias.getName()); - BioEntity reaction = elements.get(1); - assertEquals("s1", reaction.getName()); - sAlias = elements.get(2); - assertEquals("s3", sAlias.getName()); + BioEntity element0 = elements.get(0); + assertEquals("s2", element0.getName()); + + BioEntity element1 = elements.get(1); + assertEquals(protein1.getName(), element1.getName()); + + BioEntity element2 = elements.get(2); + assertEquals("s3", element2.getName()); } catch (Exception e) { e.printStackTrace(); @@ -365,6 +364,15 @@ public class SearchServiceTest extends ServiceTestFunctions { } } + private GenericProtein createProtein() { + GenericProtein protein1 = new GenericProtein("s" + elementCounter++); + protein1.setWidth(20); + protein1.setHeight(20); + protein1.setX(5); + protein1.setY(5); + return protein1; + } + @Test public void testSearchClosestWithEmptyModel() throws Exception { try { @@ -476,63 +484,6 @@ public class SearchServiceTest extends ServiceTestFunctions { } - @Test - public void testSearchByCoordCompartment() throws Exception { - try { - Model model = getModelForFile("testFiles/graph_path_example3.xml", true); - - // we search in non-nested model - List<BioEntity> res = searchService.searchByCoordinates(new CoordinatesSearchParams().model(model).x(50).y(50)); - assertNotNull(res); - assertEquals(0, res.size()); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void testSearchByCoordReaction() throws Exception { - try { - Model model = getModelForFile("testFiles/graph_path_example3.xml", true); - - // find compartment - List<BioEntity> res = searchService.searchByCoordinates(new CoordinatesSearchParams().model(model)); - // reaction is too far - assertEquals(0, res.size()); - - res = searchService.searchByCoordinates(new CoordinatesSearchParams().model(model).distance(1000)); - assertEquals(3, res.size()); - - assertTrue(res.get(0) instanceof Reaction); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void testSearchByCoordAlias() throws Exception { - try { - Model model = getModelForFile("testFiles/graph_path_example3.xml", true); - - List<BioEntity> res = searchService.searchByCoordinates(new CoordinatesSearchParams().model(model).x(60).y(60)); - assertNotNull(res); - assertTrue(res.size() > 0); - - assertTrue(res.get(0) instanceof Species); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - @Test public void testGetMiriamTypeForQuery() throws Exception { try { -- GitLab