protected IObject get(Session session, Class type, long id) { QueryBuilder qb = new QueryBuilder(); qb.select("this").from(type.getName(), "this"); if (IAnnotated.class.isAssignableFrom(type)) { qb.join("this.annotationLinks", "l1", true, true); qb.join("l1.child", "a1", true, true); qb.join("a1.annotationLinks", "l2", true, true); qb.join("l2.child", "a2", true, true); } if (!IGlobal.class.isAssignableFrom(type)) { if (IMutable.class.isAssignableFrom(type)) { qb.join("this.details.updateEvent", "update", false, true); } qb.join("this.details.creationEvent", "create", false, true); qb.join("this.details.owner", "owner", false, true); qb.join("this.details.group", "group", false, true); } qb.where().and("this.id = :id"); qb.param("id", id); return (IObject) qb.query(session).uniqueResult(); } }
qb.select("img"); qb.from("Image", "img"); qb.join("img.details.creationEvent", "ce", true, true); qb.join("img.details.updateEvent", "ue", true, true); qb.join("img.pixels", "pix", true, true); qb.join("img.format", "format", true, true); qb.join("pix.pixelsType", "pt", true, true); qb.join("img.annotationLinksCountPerOwner", "i_c_ann", true, true); qb.join("img.stageLabel", "position", true, true); qb.join("img.imagingEnvironment", "condition", true, true); qb.join("img.objectiveSettings", "os", true, true); qb.join("os.medium", "me", true, true); qb.join("os.objective", "objective", true, true); qb.join("objective.immersion", "im", true, true); qb.join("objective.correction", "co", true, true);
@Transactional(readOnly = true) public Object doWork(Session session, ServiceFactory sf) { QueryBuilder qb = new QueryBuilder(); qb.select("distinct fa"); qb.from("Image", "i"); qb.append(", Roi roi "); qb.join("roi.annotationLinks", "rlinks", false, false); qb.join("rlinks.child", "rfa", false, false); qb.join("i.wellSamples", "ws", false, false); qb.join("ws.well", "well", false, false); qb.join("well.plate", "plate", false, false); qb.join("plate.annotationLinks", "links", false, false); qb.join("links.child", "fa", false, false); qb.where(); qb.and("fa.ns = '" + NSMEASUREMENT.value + "'"); qb.and("rfa.id = fa.id"); qb.and("i.id = :id"); qb.and("i.id = roi.image"); qb.param("id", imageId); qb.filter("fa", filter(opts)); return qb.query(session).list(); } }));
qb.select("i"); qb.from("Image", "i"); qb.join("i.details.owner", "i_o", false, true); qb.join("i.details.group", "i_g", false, true); qb.join("i.pixels", "p", false, true); qb.join("i.annotationLinks", "i_a_link", true, true); qb.join("i_a_link.child", "i_a", true, true); qb.join("p.details.owner", "p_o", false, true); qb.join("p.details.group", "p_g", false, true); qb.join("p.pixelsType", "pt", false, true); qb.join("p.dimensionOrder", "do", false, true); qb.join("p.channels", "c", false, true); qb.join("p.planeInfo", "pinfo", true, true); qb.join("pinfo.deltaT", "deltaT", true, true); qb.join("pinfo.exposureTime", "expTime", true, true); qb.join("c.logicalChannel", "l", false, true); qb.join("l.mode", "a_mode", true, true); qb.join("l.illumination", "i_type", true, true); qb.join("l.contrastMethod", "c_method", true, true); qb.join("i.rois", "r", true, true); qb.join("r.details.owner", "r_o", true, true); qb.join("r.details.group", "r_g", true, true); qb.join("r.annotationLinks", "r_a_link", true, true); qb.join("r_a_link.child", "r_a", true, true); qb.join("r.shapes", "s", true, true); qb.join("s.details.owner", "s_o", true, true); qb.join("s.details.group", "s_g", true, true); qb.join("s.annotationLinks", "s_a_link", true, true); qb.join("s_a_link.child", "s_a", true, true);
@Transactional(readOnly = true) public Object doWork(Session session, ServiceFactory sf) { final Filter f = filter(opts); final QueryBuilder qb = new QueryBuilder(); qb.select("distinct r").from("Roi", "r"); qb.join("r.image", "i", false, false); qb.join("r.shapes", "shapes", false, true); // fetch qb.join("r.folderLinks", "folderLinks", true, true); // fetch qb.join("folderLinks.parent", "folder", true, true); // fetch qb.where(); qb.and("i.id = :id"); qb.filter("r", f); qb.filterNow(); qb.order("r.id", true); // ascending qb.param("id", imageId); return qb.queryWithoutFilter(session).list(); } }));
qb.select("img"); qb.from("Image", "img"); qb.join("img.details.creationEvent", "ce", true, true); qb.join("img.details.updateEvent", "ue", true, true); qb.join("img.pixels", "pix", true, true); qb.join("pix.timeIncrement", "increment", true, true); qb.join("pix.pixelsType", "pt", true, true); qb.join("img.format", "format", true, true); qb.join("img.annotationLinksCountPerOwner", "i_c_ann", true, true); qb.join("img.datasetLinksCountPerOwner", "i_c_ds", true, true); qb.join("img.stageLabel", "position", true, true); qb.join("img.imagingEnvironment", "condition", true, true); qb.join("img.objectiveSettings", "os", true, true); qb.join("os.medium", "me", true, true); qb.join("os.objective", "objective", true, true); qb.join("objective.immersion", "im", true, true); qb.join("objective.correction", "co", true, true); qb.and("img.id in (:ids)"); } else if (Dataset.class.isAssignableFrom(klass)) { qb.join("img.datasetLinks", "dil", false, false); qb.join("dil.parent", "ds", false, false); qb.join("img.datasetLinks", "dil", false, false); qb.join("dil.parent", "ds", false, false); qb.join("ds.projectLinks", "pdl", false, false); qb.join("pdl.parent", "prj", false, false);
@Transactional(readOnly = true) public Object doWork(Session session, ServiceFactory sf) { final Filter f = filter(opts); final QueryBuilder qb = new QueryBuilder(); qb.select("distinct r").from("Roi", "r"); qb.join("r.shapes", "s", false, true); // fetch qb.join("r.folderLinks", "folderLinks", true, true); // fetch qb.join("folderLinks.parent", "folder", true, true); // fetch qb.join("r.image", "i", false, false); qb.where(); qb.and("i.id = :id"); qb.and(" ( s.theZ is null or s.theZ = :z ) "); qb.and(" ( s.theT is null or s.theT = :t ) "); qb.filter("r", f); qb.filterNow(); qb.order("r.id", true); // ascending qb.param("id", imageId); qb.param("z", z); qb.param("t", t); return qb.queryWithoutFilter(session).list(); } }));
qb.select("share.id","count(distinct sal)"); qb.from("ShareMember", "sm"); qb.join("sm.parent", "share", false, false); qb.join("share.annotationLinks","sal", false, false); qb.join("sal.child", "comment", false, false); qb.join("sm.child", "user", false, false); qb.where(); qb.and("share.id in (:ids)");
qb.select("link"); qb.from(_parentType + "AnnotationLink", "link"); qb.join("link.parent", "parent", false, false); qb.join("link.child", "child", false, true); qb.join("link.details.creationEvent", "creation", false, true); qb.join("link.details.updateEvent", "update", false, true); qb.where(); qb.and("TRUE = TRUE ");
qb.select("share.id"); qb.from("ShareMember", "sm"); qb.join("sm.parent", "share", false, false); qb.where(); qb.and("sm.child.id = :userId");
qb.join("x.%s", "y", false, false);
link[i] = qb.unique_alias("link"); ann[i] = link[i] + "_child"; qb.join("this.annotationLinks", link[i], false, fetch[i]); qb.join(link[i] + ".child", ann[i], false, fetch[i]); qb.join("this.annotationLinks", "fetchannlink" + i, false, true); qb.join("fetchannlink" + i + ".child", "fetchannchild" + i, false, true);
private OriginalFile getScriptId(final Job job, final Ice.Current current) throws omero.ValidationException { final QueryBuilder qb = new QueryBuilder(); qb.select("o").from("Job", "j"); qb.join("j.originalFileLinks", "links", false, false); qb.join("links.child", "o", false, false); qb.where(); qb.and("j.id = :id").param("id", job.getId().getValue()); scriptRepoHelper.buildQuery(qb); final Map<String, String> ctx = new HashMap<String, String>(); ctx.putAll(current.ctx); ctx.put("omero.group", "-1"); final OriginalFile f = (OriginalFile) this.ex.execute(ctx, this.principal, new Executor.SimpleWork(this, "getScriptId") { @Transactional(readOnly = true) public Object doWork(org.hibernate.Session session, ServiceFactory sf) { return qb.query(session).uniqueResult(); } }); if (f == null) { throw new omero.ValidationException(null, null, "No script for job :" + job.getId().getValue()); } return f; }
qb.select("share2.id", "count(distinct links2.id)"); qb.from("ShareMember", "links2"); qb.join("links2.parent","share2", false, false); qb.where(); qb.paramList("ids", shareIds); sub.select("share"); sub.from("ShareMember", "memberLinks"); sub.join("memberLinks.parent", "share", false, false); sub.join("memberLinks.child", "user", false, false); sub.where(); sub.and("1=1"); // WORKAROUND for ticket:1239 for root
public Object call() throws Exception { final boolean official = acceptsList != null && acceptsList.size() == 0; final QueryBuilder qb = new QueryBuilder(); qb.select("o").from("Job", "j"); qb.join("j.originalFileLinks", "links", false, false); qb.join("links.child", "o", false, false); parseAcceptsList(qb, acceptsList); qb.and("j.id = :id"); qb.param("id", j.getId().getValue()); OriginalFile file = (OriginalFile) factory.executor.execute(__current.ctx, factory.principal, new Executor.SimpleWork(this, "validateScript", j.getId().getValue(), acceptsList) { @Transactional(readOnly = true) public Object doWork(Session session, ServiceFactory sf) { List<OriginalFile> files = (List<OriginalFile>) qb.query(session).list(); if (files.size() != 1) { throw new ome.conditions.ValidationException("Found wrong number of files: " + files); } Long id = files.get(0).getId(); if (official) { return scripts.load(id, session,getSqlAction(), true); } else { return sf.getQueryService() .get(OriginalFile.class, id); } } }); return new IceMapper().map(file); } });
@Transactional(readOnly = true) public Object doWork(Session session, ServiceFactory sf) { QueryBuilder qb = new QueryBuilder(); qb.select("f"); qb.from("FileAnnotation", "fa"); qb.join("fa.file", "f", false, false); qb.where(); qb.and("fa.id = :id"); qb.param("id", annotationId); OriginalFile file = (OriginalFile) qb.query(session) .uniqueResult(); if (file == null) { throw new ome.conditions.ApiUsageException("No such file annotation: " + annotationId); } return file.getId(); } }) {
@RolesAllowed("user") public List<Long> getLeaderOfGroupIds(final Experimenter e) { Assert.notNull(e); Assert.notNull(e.getId()); final QueryBuilder qb = new QueryBuilder(); qb.select("g.id").from("ExperimenterGroup", "g"); qb.join("g.groupExperimenterMap", "m", false, false); qb.where(); qb.and("m.owner = true"); qb.and("m.parent.id = g.id"); qb.and("m.child.id = :id"); qb.param("id", e.getId()); List<Long> groupIds = iQuery.execute(new HibernateCallback<List<Long>>() { public List<Long> doInHibernate(Session session) throws HibernateException, SQLException { org.hibernate.Query q = qb.query(session); return (List<Long>) q.list(); } }); return groupIds; }