/* * Copyright 2006 University of Dundee. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ /*------------------------------------------------------------------------------ * * Written by: Josh Moore <josh.moore@gmx.de> * *------------------------------------------------------------------------------ */ package ome.services.query; import java.sql.SQLException; import java.util.Collection; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.criterion.Restrictions; import ome.model.containers.Dataset; import ome.model.containers.Project; import ome.model.core.Image; import ome.parameters.Parameters; import static ome.parameters.Parameters.*; /** * walks up the hierarchy tree starting at {@link ome.model.core.Image} nodes * while fetching various information. * * @author Josh Moore, <a href="mailto:josh.moore@gmx.de">josh.moore@gmx.de</a> * @since OMERO 3.0 * @see ome.api.IContainer#findContainerHierarchies(Class, java.util.Set, Parameters) */ public class PojosFindHierarchiesQueryDefinition extends AbstractClassIdsOptionsQuery { public PojosFindHierarchiesQueryDefinition(Parameters p) { super(p); } @Override protected void buildQuery(Session session) throws HibernateException, SQLException { Criteria c = session.createCriteria(Image.class); c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); c.add(Restrictions.in("id", (Collection) value(IDS))); Hierarchy.fetchParents(c, (Class) value(CLASS), Integer.MAX_VALUE); setCriteria(c); } @Override protected void enableFilters(Session session) { ownerOrGroupFilters(session, // ticket:318 // TODO this needs to be moved to Hierarchy. // TODO these are also not all needed. Need to simplify. new String[] { Project.OWNER_FILTER, Project.OWNER_FILTER_DATASETLINKS, Dataset.OWNER_FILTER, Dataset.OWNER_FILTER_IMAGELINKS, Dataset.OWNER_FILTER_PROJECTLINKS, Image.OWNER_FILTER_DATASETLINKS, }, new String[] { Project.GROUP_FILTER, Project.GROUP_FILTER_DATASETLINKS, Dataset.GROUP_FILTER, Dataset.GROUP_FILTER_IMAGELINKS, Dataset.GROUP_FILTER_PROJECTLINKS, Image.GROUP_FILTER_DATASETLINKS }); } } // select i from Image i // #bottomUpHierarchy() // where // #imagelist() // #filters() // #typeExperimenter()