Skip to content
Snippets Groups Projects
Commit 2f12accb authored by Piotr Gawron's avatar Piotr Gawron
Browse files

ElementMatcher is not a spring bean anymore

parent e4aca2f4
No related branches found
No related tags found
1 merge request!286Resolve "Remove View objects from service"
Showing
with 35 additions and 241 deletions
......@@ -75,8 +75,7 @@ public abstract class BaseRestImpl {
@Autowired
private PubmedParser pubmedParser;
@Autowired
private ElementMatcher elementMatcher;
private ElementMatcher elementMatcher = new ElementMatcher();
private Transformer mathMlTransformer;
......
......@@ -41,8 +41,7 @@ public abstract class SearchResultFactory<T, S extends ISearchResultView> extend
*/
public abstract List<ElementIdentifier> searchResultToElementIdentifier(S object, Model model);
@Autowired
private ElementMatcher elementMatcher;
private ElementMatcher elementMatcher = new ElementMatcher();
protected boolean elementMatch(Target target, Element element) {
return elementMatcher.elementMatch(target, element);
......
package lcsb.mapviewer.services.view;
import java.io.Serializable;
import lcsb.mapviewer.common.ObjectUtils;
/**
* Abstract interface of a view object for bean layer. It contains identifier of
* the object that is represented by this view class.
*
* @author Piotr Gawron
*
* @param <T>
* type of class to be represented
*/
public abstract class AbstractView<T> implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Database identifier of the object that we pass to the bean layer.
*/
private Integer idObject;
/**
* Default constructor.
*
* @param object
* object that we want to pass to bean layer
*/
protected AbstractView(T object) {
if (object != null) {
idObject = ObjectUtils.getIdOfObject(object);
}
}
/**
* Default constructor. Should be used only for deserialization.
*/
protected AbstractView() {
}
/**
* @return the idObject
* @see #idObject
*/
public Integer getIdObject() {
return idObject;
}
/**
* @param idObject
* the idObject to set
* @see #idObject
*/
public void setIdObject(Integer idObject) {
this.idObject = idObject;
}
}
package lcsb.mapviewer.services.view;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.springframework.transaction.annotation.Transactional;
import com.google.gson.Gson;
/**
* This abstract class represents factory that should be used to create
* {@link AbstractView} classes that are accessible from the client side.
*
* @author Piotr Gawron
*
* @param <T>
* original class
* @param <S>
* {@link AbstractView} class of the original class
*/
@Transactional(value = "txManager")
public abstract class AbstractViewFactory<T, S> {
/**
* Creates view object for the given parameter.
*
* @param object
* object that should be transformed into {@link AbstractView}
* @return {@link AbstractView} of the object
*/
public abstract S create(T object);
/**
* Creates original object for the given view. Typical implementation should
* retrieve it from db and update the information from parameter.
*
* @param view
* {@link AbstractView} of the object
* @return original object
*/
public abstract T viewToObject(S view);
/**
* Creates Gson string representing {@link AbstractView<T>} element.
*
* @param object
* object taht should be transformed into a string
* @return string gson representation
*/
public abstract String createGson(S object);
/**
* Creates Gson string representing list of {@link AbstractView<T>} elements.
*
* @param list
* list of objects taht should be transformed into a string
* @return {@link String} with gson representation
*/
public String createGson(List<S> list) {
return new Gson().toJson(list);
}
/**
* Creates list of views for the given list of objects.
*
* @param objects
* list of objects that should be transformed into list of
* {@link AbstractView views}
* @return list of {@link AbstractView views} for the given list of objects.
*/
public List<S> createList(Collection<T> objects) {
List<S> result = new ArrayList<S>();
for (T object : objects) {
result.add(create(object));
}
return result;
}
}
/**
* This package contains structures used for passing data into the client side.
* These structures are light-weighted and very often are modified by the bean
* or client side. Sometimes the data in these structures is preformated.
* <p/>
*
* The main abstract interface is defined by
* {@link lcsb.mapviewer.services.view.AbstractView AbstractView} class. All
* other classes in this package extend this interface.
* <p/>
* Be carefull when refactoring classes in this package. Data are accessed not
* directly (not via managable code) by client side.
*/
package lcsb.mapviewer.services.view;
......@@ -48,8 +48,5 @@
<bean id="FullAliasViewFactory" class="lcsb.mapviewer.services.search.data.FullAliasViewFactory"/>
<bean id="FullReactionViewFactory" class="lcsb.mapviewer.services.search.data.FullReactionViewFactory"/>
<bean id="LightAliasViewFactory" class="lcsb.mapviewer.services.search.data.LightAliasViewFactory"/>
<bean id="ElementMatcher" class="lcsb.mapviewer.services.search.ElementMatcher"/>
</beans>
\ No newline at end of file
......@@ -8,13 +8,11 @@ import lcsb.mapviewer.services.impl.AllImplServiceTests;
import lcsb.mapviewer.services.overlay.AllOverlayTests;
import lcsb.mapviewer.services.search.AllSearchTests;
import lcsb.mapviewer.services.utils.AllUtilsTests;
import lcsb.mapviewer.services.view.AllViewTests;
@RunWith(Suite.class)
@SuiteClasses({ AllImplServiceTests.class, //
AllOverlayTests.class, //
AllSearchTests.class, //
AllViewTests.class, //
AllUtilsTests.class, //
})
public class AllServicesTests {
......
......@@ -7,7 +7,6 @@ import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import lcsb.mapviewer.annotation.data.Chemical;
import lcsb.mapviewer.annotation.data.Target;
......@@ -22,47 +21,47 @@ import lcsb.mapviewer.services.search.db.DbSearchCriteria;
public class ElementMatcherTest extends ServiceTestFunctions {
@Autowired
ElementMatcher elementMatcher;
ElementMatcher elementMatcher = new ElementMatcher();
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Before
public void setUp() throws Exception {
}
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testMatchOther() {
Target target = new Target();
@Test
public void testMatchOther() {
Target target = new Target();
target.setType(TargetType.OTHER);
assertFalse(elementMatcher.elementMatch(target, new GenericProtein("s1")));
}
target.setType(TargetType.OTHER);
assertFalse(elementMatcher.elementMatch(target, new GenericProtein("s1")));
}
@Test
public void testElementMatch() {
String geneName = "GDNF";
Chemical view = chemicalService.getByName("Amphetamine", new DbSearchCriteria().disease(new MiriamData(MiriamType.MESH_2012, "D010300")));
Target target = null;
for (Target t : view.getInferenceNetwork()) {
for (MiriamData row : t.getGenes()) {
if (row.getResource().equals(geneName)) {
target = t;
}
}
}
@Test
public void testElementMatch() {
String geneName = "GDNF";
Chemical view = chemicalService.getByName("Amphetamine",
new DbSearchCriteria().disease(new MiriamData(MiriamType.MESH_2012, "D010300")));
Target target = null;
for (Target t : view.getInferenceNetwork()) {
for (MiriamData row : t.getGenes()) {
if (row.getResource().equals(geneName)) {
target = t;
}
}
}
Element element = new Rna("id");
element.setName(geneName);
Element element = new Rna("id");
element.setName(geneName);
assertTrue(elementMatcher.elementMatch(target, element));
assertTrue(elementMatcher.elementMatch(target, element));
}
}
}
package lcsb.mapviewer.services.view;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({ FrameworkVersionViewTest.class, //
})
public class AllViewTests {
}
package lcsb.mapviewer.services.view;
import org.apache.commons.lang3.SerializationUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import lcsb.mapviewer.common.FrameworkVersion;
public class FrameworkVersionViewTest {
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testSerialization() {
try {
SerializationUtils.serialize(new FrameworkVersion());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment