/* * Copyright 2009 Glencoe Software, Inc. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.services.roi.test; import static omero.rtypes.rstring; import static omero.rtypes.rtime; import java.util.Arrays; import java.util.List; import java.util.Map; import ome.services.blitz.impl.RoiI; import ome.services.blitz.test.AbstractServantTest; import ome.services.roi.GeomTool; import ome.util.SqlAction; import omero.api.AMD_IRoi_getRoiMeasurements; import omero.api.AMD_IRoi_getMeasuredRoisMap; import omero.api.RoiOptions; import omero.api.RoiResult; import omero.model.Annotation; import omero.model.FileAnnotation; import omero.model.Image; import omero.model.ImageI; import omero.model.Roi; import omero.model.Shape; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; /** *<pre> * // REMAINING TESTS: * // * CROSS-PRODUCT (and MULTI) * // * INDEXES * // * BOUNDARIES * // * LONG TABLES, BIG OBJECTS * </pre> */ @Test(groups = "integration") public class AbstractRoiITest extends AbstractServantTest { protected RoiI user_roisvc, root_roisvc; protected GeomTool geomTool; protected Shape test; protected SqlAction sql; @Override @BeforeClass protected void setUp() throws Exception { super.setUp(); geomTool = (GeomTool) ctx.getBean("geomTool"); sql = (SqlAction) ctx.getBean("simpleSqlAction"); user_roisvc = new RoiI(user.be, geomTool, sql); user_roisvc.setServiceFactory(user.sf); root_roisvc = new RoiI(root.be, geomTool, sql); root_roisvc.setServiceFactory(root.sf); } // // assertions // protected List<FileAnnotation> assertGetImageMeasurements(long imageId) throws Exception { final RV rv = new RV(); user_roisvc.getRoiMeasurements_async(new AMD_IRoi_getRoiMeasurements(){ public void ice_exception(Exception ex) { rv.ex = ex; } public void ice_response(List<Annotation> __ret) { rv.rv = __ret; }}, imageId, new RoiOptions(), current("getRoiMeasurements")); rv.assertPassed(); return (List<FileAnnotation>) rv.rv; } protected Map<Long, RoiResult> assertGetMeasuredRoisMap(long imageId, List<Long> annotationIds) throws Exception { final RV rv = new RV(); user_roisvc.getMeasuredRoisMap_async(new AMD_IRoi_getMeasuredRoisMap(){ public void ice_exception(Exception ex) { rv.ex = ex; } public void ice_response(Map<Long, RoiResult> __ret) { rv.rv = __ret; }}, imageId, annotationIds, new RoiOptions(), current("getMeasuredRoisMap")); rv.assertPassed(); return (Map<Long, RoiResult>) rv.rv; } // // helpers // protected Roi createRoi(String name, Shape... shapes) throws Exception { Image i = new ImageI(); i.setName(rstring(name)); return createRoi(i, name, shapes); } protected Roi createRoi(Image i, String name, Shape... shapes) throws Exception { Roi roi = new omero.model.RoiI(); roi.setImage(i); roi.addAllShapeSet(Arrays.asList(shapes)); roi = assertSaveAndReturn(roi); roi = (Roi) assertFindByQuery( "select roi from Roi roi " + "join fetch roi.shapes shapes join fetch shapes.roi " + "join fetch roi.image image " + "left outer join fetch image.pixels " // OUTER + "where roi.id = " + roi.getId().getValue(), null) .get(0); return roi; } }