Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ ext {
dependencies {
testImplementation("org.testng:testng:7.5")
testImplementation("jmock:jmock:1.+")
testImplementation('org.openmicroscopy:omero-common-test:5.7.4')

api('org.openmicroscopy:omero-renderer:5.6.4')

Expand Down
326 changes: 326 additions & 0 deletions src/test/java/ome/testing/CreatePojosFixture.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,326 @@
/*
* Copyright 2006-2014 University of Dundee. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/

package ome.testing;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import ome.api.IAdmin;
import ome.api.IQuery;
import ome.api.IUpdate;
import ome.model.IObject;
import ome.model.annotations.DatasetAnnotationLink;
import ome.model.annotations.ImageAnnotationLink;
import ome.model.annotations.TagAnnotation;
import ome.model.annotations.TextAnnotation;
import ome.model.containers.Dataset;
import ome.model.containers.DatasetImageLink;
import ome.model.containers.Project;
import ome.model.containers.ProjectDatasetLink;
import ome.model.core.Image;
import ome.model.meta.Experimenter;
import ome.model.meta.ExperimenterGroup;
import ome.system.EventContext;
import ome.system.Login;
import ome.system.ServiceFactory;
import ome.util.ShallowCopy;

/**
* setUp and tearDown must be called properly to make these work.
*
* @author josh
*
*/
public class CreatePojosFixture {
/**
* creates a new fixture logged in as a newly created user. requires an
* admin service factory in order to create user and should NOT be used from
* the server side.
*/
public static CreatePojosFixture withNewUser(ServiceFactory sf) {
CreatePojosFixture fixture = new CreatePojosFixture();

IAdmin rootAdmin = sf.getAdminService();
String G_NAME = UUID.randomUUID().toString();
fixture.g = new ExperimenterGroup();
fixture.g.setName(G_NAME);
fixture.g.setLdap(false);
fixture.g = new ExperimenterGroup(rootAdmin.createGroup(fixture.g),
false);

fixture.TESTER = "TESTER-" + UUID.randomUUID().toString();
fixture.e = new Experimenter();
fixture.e.setOmeName(fixture.TESTER);
fixture.e.setFirstName("Mr.");
fixture.e.setLastName("Allen");
fixture.e.setLdap(false);
fixture.e = new Experimenter(rootAdmin.createUser(fixture.e, G_NAME),
false);

Login testLogin = new Login(fixture.TESTER, "ome", G_NAME, "Test");
ServiceFactory factory = new ServiceFactory(testLogin);
fixture.setServices(factory);

fixture.init = true;

return fixture;
}

private CreatePojosFixture() {
}

/** requires an admin service factory in order to create user. */
public CreatePojosFixture(ServiceFactory factory) {
setServices(factory);
EventContext ec = iAdmin.getEventContext();
e = new Experimenter(ec.getCurrentUserId(), false);
g = new ExperimenterGroup(ec.getCurrentGroupId(), false);
TESTER = ec.getCurrentUserName();
init = true;
}

private void setServices(ServiceFactory factory) {
iAdmin = factory.getAdminService();
iQuery = factory.getQueryService();
iUpdate = factory.getUpdateService();
}

protected IAdmin iAdmin;

protected IQuery iQuery;

protected IUpdate iUpdate;

protected boolean init = false;

protected List<IObject> toAdd = new ArrayList<IObject>(),
needId = new ArrayList<IObject>();

public void createAllPojos() throws Exception {
init();
projects();
datasets();
pdlinks();
images();
dilinks();
annotations();
}

public void deleteAllPojos() throws Exception {
for (int i = toAdd.size() - 1; i >= 0; i--) {
iUpdate.deleteObject(toAdd.get(i));
}
iAdmin.deleteExperimenter(e);
// TODO iAdmin.deleteGroup(g);
}

public void init() {
if (!init) {
// moved to ctor
}
}

public void pdi() {
projects();
datasets();
images();
pdlinks();
dilinks();
}

public void projects() {
init();
pr9090 = project(null, "root project without links");
pr9091 = project(null, "root project with own annotations");
pr9092 = project(null, "root project with foreign annotations");
pu9990 = project(e, "user project without links");
pu9991 = project(e, "user project with own annotations");
pu9992 = project(e, "user project with foreign annotations");
saveAndClear();
}

public void datasets() {
init();
dr7070 = dataset(null, "root dataset without links");
dr7071 = dataset(null, "root dataset with own annotations");
dr7072 = dataset(null, "root dataset with foreign annotations");
du7770 = dataset(e, "user dataset without links");
du7771 = dataset(e, "user dataset with own annotations");
du7772 = dataset(e, "user dataset with foreign annotations");
saveAndClear();
}

// TODO we aren't passing in Experimenter here
public void pdlinks() {
init();
pdlink(pr9091, dr7071);
pdlink(pr9092, dr7071);
pdlink(pr9091, dr7072);
pdlink(pr9092, dr7072);

pdlink(pu9991, du7771);
pdlink(pu9992, du7771);
pdlink(pu9991, du7772);
pdlink(pu9992, du7772);
saveAndClear();
}

public void images() {
init();
ir5050 = image(null, "");
ir5051 = image(null, "");
ir5052 = image(null, "");
iu5550 = image(e, "");
iu5551 = image(e, "");
iu5552 = image(e, "");
// cgcpaths
iu5580 = image(e, "");
iu5581 = image(e, "");
iu5582 = image(e, "");
iu5583 = image(e, "");
iu5584 = image(e, "");
iu5585 = image(e, "");
iu5586 = image(e, "");
iu5587 = image(e, "");
iu5588 = image(e, "");
saveAndClear();
}

public void dilinks() {
init();
dilink(null, dr7071, ir5051);
dilink(null, dr7071, ir5052);
dilink(e, dr7072, ir5051);
dilink(e, dr7072, ir5052);

dilink(null, du7771, iu5551);
dilink(null, du7771, iu5552);
dilink(e, du7772, iu5551);
dilink(e, du7772, iu5552);
saveAndClear();
}

public void annotations() {
init();
datasetann(null, dr7071, "roots annotation");
datasetann(e, dr7072, "users annotation");
datasetann(null, du7771, "roots annotation");
datasetann(e, du7772, "users annotation");

imageann(null, ir5051, "roots annotation");
imageann(e, ir5052, "users annotation");
imageann(null, iu5551, "roots annotation");
imageann(e, iu5552, "users annotation");
saveAndClear();
}


// ~ Helpers
// =========================================================================

protected <T extends IObject> T push(T obj) {
toAdd.add(obj);
T copy = new ShallowCopy().copy(obj);
copy.unload();
needId.add(copy);
return copy;
}

protected void saveAndClear() {
IObject[] retVal = iUpdate.saveAndReturnArray(toAdd
.toArray(new IObject[toAdd.size()]));
IObject[] unloaded = needId.toArray(new IObject[needId.size()]);
for (int i = 0; i < retVal.length; i++) {
unloaded[i].setId(retVal[i].getId());
}
toAdd.clear();
needId.clear();
}

protected Project project(Experimenter owner, String name) {
Project p = new Project();
p.getDetails().setOwner(owner);
p.setName(name);
p = push(p);
return p;
}

protected Dataset dataset(Experimenter owner, String name) {
Dataset d = new Dataset();
d.getDetails().setOwner(owner);
d.setName(name);
d = push(d);
return d;
}

protected ProjectDatasetLink pdlink(Project prj, Dataset ds) {
ProjectDatasetLink link = new ProjectDatasetLink();
link.link(prj, ds);
link = push(link);
return link;
}

protected Image image(Experimenter e, String name) {
Image i = new Image();
i.getDetails().setOwner(e);
i.setName(name);
i = push(i);
return i;
}

protected DatasetImageLink dilink(Experimenter user, Dataset ds, Image i) {
DatasetImageLink link = new DatasetImageLink();
link.link(ds, i);
link.getDetails().setOwner(user);
link = push(link);
return link;
}

protected DatasetAnnotationLink datasetann(Experimenter user, Dataset d,
String name) {
TextAnnotation dann = new TagAnnotation();
dann.setNs(name);
dann.getDetails().setOwner(user);
DatasetAnnotationLink link = new DatasetAnnotationLink();
link.link(d.proxy(), dann);
link = push(link);
return link;
}

protected ImageAnnotationLink imageann(Experimenter user, Image i,
String name) {
TextAnnotation iann = new TagAnnotation();
iann.setNs(name);
iann.getDetails().setOwner(user);
ImageAnnotationLink link = new ImageAnnotationLink();
link.link(i.proxy(), iann);
link = push(link);
return link;
}

// static class Data {
public String TESTER;

public Experimenter e;

public ExperimenterGroup g;

public Project pr9090, pr9091, pr9092, pu9990, pu9991, pu9992;

public Dataset dr7070, dr7071, dr7072, du7770, du7771, du7772;

public Image ir5050, ir5051, ir5052, iu5550, iu5551, iu5552, iu5580,
iu5581, iu5582, iu5583, iu5584, iu5585, iu5586, iu5587, iu5588;

public List<Long> asIdList(IObject... iobjs) {
List<Long> list = new ArrayList<Long>();
for (IObject i : iobjs) {
list.add(i.getId());
}
return list;
}
}
Loading
Loading