/* * Copyright 2008 Glencoe Software, Inc. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.services.delete; import java.util.List; import ome.api.local.LocalAdmin; import ome.api.local.LocalQuery; import ome.model.IObject; import ome.model.containers.Dataset; import ome.model.core.Image; import ome.parameters.Parameters; import ome.security.AdminAction; /** * {@link AdminAction} which queries all {@link Dataset datasets} and * retrieve {@link Image images} linked to the datasets. * * @author Josh Moore, josh at glencoesoftware.com * @since 3.0-Beta3 * @see ome.api.IDelete */ public class QueryConstraints implements AdminAction { public final static String dsAllQuery = "select ds from Dataset ds join ds.imageLinks il " + " join il.child as img where img.id = :id"; public final static String dsNotOwnQuery = "select ds from Dataset ds join ds.imageLinks il " + " join il.child as img where img.id = :id " + " and ds.details.owner.id != :owner"; // TODO what about links? final LocalAdmin iAdmin; final LocalQuery iQuery; final long id; final boolean force; final UnloadedCollector rv; final Parameters p; public QueryConstraints(LocalAdmin iAdmin, LocalQuery iQuery, long id, boolean force) { this.iAdmin = iAdmin; this.iQuery = iQuery; this.id = id; this.force = force; p = new Parameters().addId(id); rv = new UnloadedCollector(iQuery, iAdmin, false); } public void runAsAdmin() { String dsQuery; if (force) { dsQuery = dsNotOwnQuery; p.addLong("owner", iAdmin.getEventContext().getCurrentUserId()); } else { dsQuery = dsAllQuery; } rv.addAll(iQuery.findAllByQuery(dsQuery, p)); // TODO What about categories of other users? } public List<IObject> getResults() { return rv.list; } }