/* * $Id$ * * Copyright 2010 Glencoe Software, Inc. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.server.itests.query; import java.util.List; import ome.model.annotations.FileAnnotation; import ome.model.annotations.LongAnnotation; import ome.model.core.Image; import ome.model.internal.Permissions; import ome.model.meta.Experimenter; import ome.parameters.Parameters; import ome.server.itests.AbstractManagedContextTest; import org.testng.annotations.Test; public class ProjectionTest extends AbstractManagedContextTest { @Test public void testPrivateData() { loginNewUser(Permissions.PRIVATE); String uuid = uuid(); Image i = new_Image(uuid); iUpdate.saveObject(i); loginNewUser(Permissions.PRIVATE); List<Object[]> rv = iQuery.projection(" select count(i.name), i.name " + "from Image i where i.name = :uuid group by i.name", new Parameters() .addString("uuid", uuid)); assertEquals(0, rv.size()); } @Test public void testCount() { iQuery.projection("select count(e.omeName) " + "from Experimenter e group by e.omeName", null); } @Test public void testSumMap() { loginNewUser(); List<Object[]> rv = iQuery.projection("select " + "p.pixelsType.value, " + "sum(p.sizeX * p.sizeY * p.sizeZ * p.sizeT * p.sizeC) " + "from Pixels p group by p.pixelsType.value", null); assertEquals(0, rv.size()); } @Test public void testProjection() { loginNewUser(); List<Object[]> rv = iQuery.projection("select e.entityType, " + "min(e.entityId), " + "max(e.entityId), " + "count(e.entityId), " + "sum(e.entityId), " + "sum(e.entityId)/count(e.entityId) " + "from EventLog e where e.action = 'DELETE' " + "group by e.entityType", null); assertTrue(0 <= rv.size()); } @Test(expectedExceptions = ClassCastException.class) public void testOnlyOneValueFails() { loginNewUser(); List<Object[]> rv = iQuery.projection("select e from Experimenter e", null); assertTrue(rv.get(0)[0] instanceof Experimenter); } @Test public void testIObjectUsage() { loginNewUser(); List<Object[]> rv = iQuery.projection("select e.id, " + "e from Experimenter e", null); assertTrue(rv.get(0)[1] instanceof Experimenter); } @Test public void testCollectionUsage() { loginNewUser(); List<Object[]> rv = iQuery.projection( "select e.omeName, size(e.groupExperimenterMap) " + "from Experimenter e group by e.omeName", null); for (Object[] objects : rv) { assertTrue(((Integer) objects[1]).intValue() > 0); } } @Test public void testAnnotationCounts() { loginNewUser(); String uuid = uuid(); Image i = new_Image(uuid); FileAnnotation fa = new FileAnnotation(); fa.setNs("OMIT"); LongAnnotation la = new LongAnnotation(); la.setNs(""); i.linkAnnotation(fa); i.linkAnnotation(la); i = iUpdate.saveAndReturnObject(i); List<Object[]> rv = iQuery.projection( "select i.id, count(a) from Image i " + "left outer join i.annotationLinks l " + "left outer join l.child a where a.ns <> 'OMIT'" + "group by i.id", null); Object[] values = rv.get(0); assertEquals(i.getId(), values[0]); assertEquals((long) 1, values[1]); } }