/*
* $Id$
*
* Copyright 2006 University of Dundee. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.server.itests.query.pojos;
import java.sql.Timestamp;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import ome.conditions.ApiUsageException;
import ome.model.IAnnotated;
import ome.model.annotations.CommentAnnotation;
import ome.model.containers.Dataset;
import ome.model.core.Image;
import ome.parameters.Parameters;
import ome.server.itests.AbstractManagedContextTest;
import ome.services.query.PojosFindAnnotationsQueryDefinition;
import ome.testing.CreatePojosFixture;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test(groups = { "ticket:541", "StructuredAnnotations" })
public class FindAnnotationsQueryTest extends AbstractManagedContextTest {
PojosFindAnnotationsQueryDefinition q;
List list;
Set ids;
CreatePojosFixture DATA;
@BeforeClass
public void makePojos() throws Exception {
try {
setUp();
DATA = new CreatePojosFixture(this.factory);
DATA.pdi();
DATA.annotations();
} finally {
tearDown();
}
}
protected void creation_fails(Parameters parameters) {
try {
// new IdsQueryParameterDef(),
// new OptionsQueryParameterDef(),
// new QueryParameterDef(QP.CLASS,Class.class,false),
// new QueryParameterDef("annotatorIds",Collection.class,true));
q = new PojosFindAnnotationsQueryDefinition(parameters);
fail("Should have failed!");
} catch (IllegalArgumentException e) {
} catch (ApiUsageException e) {
}
}
@Test
public void test_illegal_arguments() throws Exception {
creation_fails(new Parameters().addIds(null) // Null
.addClass(Image.class).addSet("annotatorIds",
Collections.emptySet()));
creation_fails(new Parameters().addIds(Collections.emptySet()) // Empty!
.addClass(Image.class).addSet("annotatorIds",
Collections.emptySet()));
creation_fails(new Parameters().addIds(Arrays.asList(1l))
.addClass(null) // Null here
.addSet("annotatorIds", Collections.emptySet()));
creation_fails(new Parameters().addIds(Arrays.asList(1)) // Integer
// not Long
.addClass(Image.class).addSet("annotatorIds",
Collections.emptySet()));
}
@Test
public void test_simple_usage() throws Exception {
Long doesntExist = -1L;
q = new PojosFindAnnotationsQueryDefinition(new Parameters().addIds(
Arrays.asList(doesntExist)).addClass(
Image.class).addSet("annotatorIds", Collections.emptySet()));
list = (List) iQuery.execute(q);
}
@Test
public void test_images_exist() throws Exception {
ids = new HashSet(data.getMax("Image.Annotated.ids", 2));
q = new PojosFindAnnotationsQueryDefinition(new Parameters()
.addIds(ids).addClass(Image.class).addSet(
"annotatorIds", Collections.emptySet()));
Collection<IAnnotated> results = (Collection) iQuery.execute(q);
for (IAnnotated annotated : results) {
assertTrue(ids.contains(annotated.getId()));
}
}
@Test
public void test_dataset_exist() throws Exception {
ids = new HashSet(data.getMax("Dataset.Annotated.ids", 2));
q = new PojosFindAnnotationsQueryDefinition(new Parameters()
.addIds(ids).addClass(Dataset.class).addSet(
"annotatorIds", Collections.emptySet()));
Collection<IAnnotated> results = (Collection) iQuery.execute(q);
for (IAnnotated annotated : results) {
assertTrue(ids.contains(annotated.getId()));
}
}
@Test(groups = { "ticket:172" })
public void testFindImageAnnotationsReturnsEventTimes() throws Exception {
Image i = new Image();
i.setName("ticket:172");
CommentAnnotation a = new CommentAnnotation();
a.setNs("");
a.setTextValue("ticket:172");
i.linkAnnotation(a);
i = iUpdate.saveAndReturnObject(i);
ids = new HashSet(Arrays.asList(i.getId()));
q = new PojosFindAnnotationsQueryDefinition(new Parameters()
.addIds(ids).addClass(Image.class).addSet(
"annotatorIds", Collections.emptySet()));
Collection<IAnnotated> results = (Collection) iQuery.execute(q);
for (IAnnotated annotated : results) {
assertNotNull(annotated.getDetails().getCreationEvent().getTime());
assertNotNull(annotated.getDetails().getUpdateEvent().getTime());
assertNotNull(annotated.linkedAnnotationList().get(0).getDetails()
.getCreationEvent().getTime());
// assertNotNull(annotated.linkedAnnotationList().get(0).getDetails()
// .getUpdateEvent().getTime());
}
}
}