List of usage examples for org.hibernate.criterion CriteriaSpecification LEFT_JOIN
int LEFT_JOIN
To view the source code for org.hibernate.criterion CriteriaSpecification LEFT_JOIN.
Click Source Link
From source file:gov.nih.nci.caintegrator.domain.annotation.service.AnnotationManagerImpl.java
License:BSD License
public Map<GeneBiomarker, Collection<GeneExprReporter>> getReportersForGenes( AnnotationCriteria annotationCriteria) { HashMap<GeneBiomarker, Collection<GeneExprReporter>> reporterMap = new HashMap<GeneBiomarker, Collection<GeneExprReporter>>(); List<GeneBiomarker> geneList = new ArrayList<GeneBiomarker>(); Collection<String> genes = annotationCriteria.getGeneSymbols(); String platform = annotationCriteria.getArrayPlatformName(); if (platform == null) { throw new RuntimeException("Array Platform name cannot be null"); }/*from w w w.ja v a2 s .c o m*/ if (genes == null || genes.isEmpty()) { throw new RuntimeException("Gene list must not be empty"); } Session currentSession = sessionFactory.getCurrentSession(); Criteria criteria = currentSession.createCriteria(GeneBiomarker.class); criteria.createAlias("geneExprReporterCollection", "reporter", CriteriaSpecification.LEFT_JOIN); if (genes.size() > 1000) { for (int i = 0; i < ((genes.size() / 1000) + 1); i++) { int size; if (i == (genes.size() / 1000)) { size = genes.size() % 1000; } else { size = 1000; } String[] tempArray = new String[size]; System.arraycopy(genes.toArray(), i * 1000, tempArray, 0, size); Collection tempList = new ArrayList(); Collections.addAll(tempList, tempArray); criteria.add(Restrictions.in("hugoGeneSymbol", tempList)); criteria.add(Restrictions.eq("reporter.platform", platform)); geneList.addAll(criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list()); } } else { criteria.add(Restrictions.in("hugoGeneSymbol", genes)); criteria.add(Restrictions.eq("reporter.platform", platform)); geneList = criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list(); } for (GeneBiomarker gene : geneList) { reporterMap.put(gene, gene.getGeneExprReporterCollection()); } return reporterMap; }
From source file:gov.nih.nci.caintegrator.domain.annotation.service.AnnotationManagerImpl.java
License:BSD License
public Map<GeneBiomarker, Collection<VariationReporter>> getVariationReportersForGenes( AnnotationCriteria annotationCriteria) { HashMap<GeneBiomarker, Collection<VariationReporter>> reporterMap = new HashMap<GeneBiomarker, Collection<VariationReporter>>(); Collection<String> genes = annotationCriteria.getGeneSymbols(); String platform = annotationCriteria.getArrayPlatformName(); if (platform == null) { throw new RuntimeException("Array Platform name cannot be null"); }/* w ww . j a v a 2 s. c o m*/ if (genes == null || genes.isEmpty()) { throw new RuntimeException("Gene list must not be empty"); } List<VariationReporter> reporterList = new ArrayList<VariationReporter>(); Session currentSession = sessionFactory.getCurrentSession(); Criteria criteria = currentSession.createCriteria(VariationReporter.class); criteria.createAlias("snpAnnotation", "snp", CriteriaSpecification.LEFT_JOIN); criteria.createAlias("snpAnnotation.geneBiomarkerCollection", "gene", CriteriaSpecification.LEFT_JOIN); if (genes.size() > 1000) { for (int i = 0; i < ((genes.size() / 1000) + 1); i++) { int size; if (i == (genes.size() / 1000)) { size = genes.size() % 1000; } else { size = 1000; } String[] tempArray = new String[size]; System.arraycopy(genes.toArray(), i * 1000, tempArray, 0, size); Collection tempList = new ArrayList(); Collections.addAll(tempList, tempArray); criteria.add(Restrictions.in("gene.hugoGeneSymbol", tempList)); criteria.add(Restrictions.eq("platform", platform)); reporterList.addAll(criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list()); } } else { criteria.add(Restrictions.in("gene.hugoGeneSymbol", genes)); criteria.add(Restrictions.eq("platform", platform)); reporterList = criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list(); } // Build return map for service for (VariationReporter r : reporterList) { Collection<GeneBiomarker> genesForReporter = r.getSnpAnnotation().getGeneBiomarkerCollection(); for (GeneBiomarker b : genesForReporter) { if (genes.contains(b.getHugoGeneSymbol())) { Collection<VariationReporter> reportersToAdd = null; reportersToAdd = reporterMap.get(b); if (reportersToAdd == null) { reportersToAdd = new ArrayList<VariationReporter>(); } reportersToAdd.add(r); reporterMap.put(b, reportersToAdd); } } } return reporterMap; }
From source file:gov.nih.nci.caintegrator.domain.annotation.service.AnnotationManagerImpl.java
License:BSD License
public Collection<GeneExprReporter> getReportersForPlatform(AnnotationCriteria annotationCriteria) { Session currentSession = sessionFactory.getCurrentSession(); Criteria criteria = currentSession.createCriteria(GeneExprReporter.class); criteria.createAlias("geneBiomarkerCollection", "gene", CriteriaSpecification.LEFT_JOIN); criteria.createAlias("geneReporterAnnotationCollection", "annotation", CriteriaSpecification.LEFT_JOIN); criteria.add(Restrictions.eq("platform", annotationCriteria.getArrayPlatformName())); return criteria.list(); }
From source file:gov.nih.nci.caintegrator.domain.annotation.service.AnnotationManagerImpl.java
License:BSD License
public Collection<GeneExprReporter> getReporterAnnotations(AnnotationCriteria annotationCriteria) { Collection<String> reporters = annotationCriteria.getReporterIds(); if (reporters == null || reporters.isEmpty()) { throw new RuntimeException("Reporter list must not be empty"); }//from ww w. j av a 2 s . c om Session currentSession = sessionFactory.getCurrentSession(); List<GeneExprReporter> reporterList = new ArrayList<GeneExprReporter>(); if (reporters.size() > 1000) { for (int i = 0; i < ((reporters.size() / 1000) + 1); i++) { Criteria criteria = currentSession.createCriteria(GeneExprReporter.class); criteria.createAlias("geneBiomarkerCollection", "gene", CriteriaSpecification.LEFT_JOIN); criteria.createAlias("geneReporterAnnotationCollection", "annotation", CriteriaSpecification.LEFT_JOIN); int size; if (i == (reporters.size() / 1000)) { size = reporters.size() % 1000; } else { size = 1000; } String[] tempArray = new String[size]; System.arraycopy(reporters.toArray(), i * 1000, tempArray, 0, size); Collection tempList = new ArrayList(); Collections.addAll(tempList, tempArray); criteria.add(Restrictions.in("name", tempList)); reporterList.addAll(criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list()); } } else { Criteria criteria = currentSession.createCriteria(GeneExprReporter.class); criteria.createAlias("geneBiomarkerCollection", "gene", CriteriaSpecification.LEFT_JOIN); criteria.createAlias("geneReporterAnnotationCollection", "annotation", CriteriaSpecification.LEFT_JOIN); criteria.add(Restrictions.in("name", reporters)); reporterList = criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list(); } return reporterList; }
From source file:gov.nih.nci.cananolab.service.protocol.helper.ProtocolServiceHelper.java
License:BSD License
public List<Protocol> findProtocolsBy(String protocolType, String protocolName, String protocolAbbreviation, String fileTitle) throws Exception { List<Protocol> protocols = new ArrayList<Protocol>(); CaNanoLabApplicationService appService = (CaNanoLabApplicationService) ApplicationServiceProvider .getApplicationService();/* www . ja va 2s . c o m*/ DetachedCriteria crit = DetachedCriteria.forClass(Protocol.class); crit.createAlias("file", "file", CriteriaSpecification.LEFT_JOIN); crit.setFetchMode("file.keywordCollection", FetchMode.JOIN); if (!StringUtils.isEmpty(protocolType)) { // case insensitive crit.add(Restrictions.ilike("type", protocolType, MatchMode.EXACT)); } if (!StringUtils.isEmpty(protocolName)) { TextMatchMode protocolNameMatchMode = new TextMatchMode(protocolName); crit.add(Restrictions.ilike("name", protocolNameMatchMode.getUpdatedText(), protocolNameMatchMode.getMatchMode())); } if (!StringUtils.isEmpty(protocolAbbreviation)) { TextMatchMode protocolAbbreviationMatchMode = new TextMatchMode(protocolAbbreviation); crit.add(Restrictions.ilike("abbreviation", protocolAbbreviationMatchMode.getUpdatedText(), protocolAbbreviationMatchMode.getMatchMode())); } if (!StringUtils.isEmpty(fileTitle)) { TextMatchMode titleMatchMode = new TextMatchMode(fileTitle); crit.add(Restrictions.ilike("file.title", titleMatchMode.getUpdatedText(), titleMatchMode.getMatchMode())); } crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); List results = appService.query(crit); for (int i = 0; i < results.size(); i++) { Protocol protocol = (Protocol) results.get(i); if (springSecurityAclService.currentUserHasReadPermission(protocol.getId(), SecureClassesEnum.PROTOCOL.getClazz()) || springSecurityAclService.currentUserHasWritePermission(protocol.getId(), SecureClassesEnum.PROTOCOL.getClazz())) { protocols.add(protocol); } else { logger.debug("User doesn't have access ot protocol with id " + protocol.getId()); } } return protocols; }
From source file:gov.nih.nci.cananolab.service.sample.helper.AdvancedSampleServiceHelper.java
License:BSD License
private List<Characterization> findCharacterizationsBy(String sampleId, AdvancedSampleSearchBean searchBean) throws Exception { List<Characterization> chars = new ArrayList<Characterization>(); if (searchBean.getCharacterizationQueries().isEmpty()) { return chars; }/*from www . j a v a2 s . c o m*/ Long id = new Long(sampleId); CaNanoLabApplicationService appService = (CaNanoLabApplicationService) ApplicationServiceProvider .getApplicationService(); if (searchBean.getCharacterizationQueries().size() == 1 || searchBean.getCharacterizationLogicalOperator().equals("or")) { DetachedCriteria crit = DetachedCriteria.forClass(Characterization.class, "rootCrit"); crit.createAlias("sample", "sample"); // join finding and datum if (searchBean.getHasDatum()) { crit.createAlias("findingCollection", "finding", CriteriaSpecification.LEFT_JOIN); crit.createAlias("finding.datumCollection", "datum", CriteriaSpecification.LEFT_JOIN); } crit.add(Restrictions.eq("sample.id", id)); Disjunction charDisjunction = getCharacterizationDisjunction(searchBean, crit, ""); crit.add(charDisjunction); crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); List results = appService.query(crit); for (int i = 0; i < results.size(); i++) { Characterization achar = (Characterization) results.get(i); chars.add(achar); } } else { // hibernate doesn't support union have to execute the query one at // a time union the result in Java for (CharacterizationQueryBean charQuery : searchBean.getCharacterizationQueries()) { DetachedCriteria crit = DetachedCriteria.forClass(Characterization.class, "rootCrit"); crit.createAlias("sample", "sample"); crit.add(Restrictions.eq("sample.id", id)); DetachedCriteria subCrit = getCharacterizationSubquery(charQuery, "id"); crit.add(Subqueries.exists(subCrit)); crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); List results = appService.query(crit); for (int i = 0; i < results.size(); i++) { Characterization achar = (Characterization) results.get(i); if (!chars.contains(achar)) { chars.add(achar); } } } } Collections.sort(chars, new Comparators.CharacterizationNameAssayTypeDateComparator()); return chars; }
From source file:gov.nih.nci.cananolab.service.sample.helper.AdvancedSampleServiceHelper.java
License:BSD License
private List<FunctionalizingEntity> findFunctionalizingEntitiesBy(String sampleId, AdvancedSampleSearchBean searchBean) throws Exception { List<FunctionalizingEntity> entities = new ArrayList<FunctionalizingEntity>(); if (!searchBean.getHasAgentMaterial()) { return entities; }//www. jav a 2 s .com Long id = new Long(sampleId); CaNanoLabApplicationService appService = (CaNanoLabApplicationService) ApplicationServiceProvider .getApplicationService(); DetachedCriteria crit = DetachedCriteria.forClass(FunctionalizingEntity.class); Junction junction = getFunctionalizingEntityJunction(searchBean, crit); if (junction != null) { crit.createAlias("sampleComposition", "comp", CriteriaSpecification.LEFT_JOIN); crit.createAlias("comp.sample", "sample", CriteriaSpecification.LEFT_JOIN); crit.add(Restrictions.eq("sample.id", id)); crit.add(junction); crit.setFetchMode("functionCollection", FetchMode.JOIN); crit.setFetchMode("functionCollection.targetCollection", FetchMode.JOIN); crit.setFetchMode("fileCollection", FetchMode.JOIN); crit.setFetchMode("fileCollection.keywordCollection", FetchMode.JOIN); crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); List results = appService.query(crit); for (int i = 0; i < results.size(); i++) { FunctionalizingEntity entity = (FunctionalizingEntity) results.get(i); entities.add(entity); } } else if (searchBean.getFuncEntityCount() > 1) { // Hibernate Criteria API doesn't support union, union in java for (CompositionQueryBean query : searchBean.getCompositionQueries()) { if (query.getCompositionType().equals("functionalizing entity")) { crit = DetachedCriteria.forClass(FunctionalizingEntity.class); crit.createAlias("sampleComposition", "comp", CriteriaSpecification.LEFT_JOIN); crit.createAlias("comp.sample", "sample", CriteriaSpecification.LEFT_JOIN); crit.add(Restrictions.eq("sample.id", id)); DetachedCriteria subCrit = getFunctionalizingEntitySubquery(query, "", "id"); crit.add(Subqueries.exists(subCrit)); crit.setFetchMode("functionCollection", FetchMode.JOIN); crit.setFetchMode("functionCollection.targetCollection", FetchMode.JOIN); crit.setFetchMode("fileCollection", FetchMode.JOIN); crit.setFetchMode("fileCollection.keywordCollection", FetchMode.JOIN); crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); List results = appService.query(crit); for (int i = 0; i < results.size(); i++) { FunctionalizingEntity entity = (FunctionalizingEntity) results.get(i); if (!entities.contains(entity)) { entities.add(entity); } } } } } return entities; }
From source file:gov.nih.nci.cananolab.service.sample.helper.AdvancedSampleServiceHelper.java
License:BSD License
private List<Function> findFunctionsBy(String sampleId, AdvancedSampleSearchBean searchBean) throws Exception { List<Function> functions = new ArrayList<Function>(); if (!searchBean.getHasFunction()) { return functions; }//w ww. j a va 2 s . c o m Long id = new Long(sampleId); CaNanoLabApplicationService appService = (CaNanoLabApplicationService) ApplicationServiceProvider .getApplicationService(); DetachedCriteria crit = DetachedCriteria.forClass(Function.class); Junction junction = getFunctionJunction(searchBean, crit); if (junction != null) { crit.createAlias("composingElement", "ce", CriteriaSpecification.LEFT_JOIN); crit.createAlias("ce.nanomaterialEntity", "nanoEntity", CriteriaSpecification.LEFT_JOIN); crit.createAlias("nanoEntity.sampleComposition", "comp", CriteriaSpecification.LEFT_JOIN); crit.createAlias("comp.sample", "sample", CriteriaSpecification.LEFT_JOIN); crit.createAlias("functionalizingEntity", "funcEntity", CriteriaSpecification.LEFT_JOIN); crit.createAlias("funcEntity.sampleComposition", "comp2", CriteriaSpecification.LEFT_JOIN); crit.createAlias("comp2.sample", "sample2", CriteriaSpecification.LEFT_JOIN); crit.add(Restrictions.or(Restrictions.eq("sample.id", id), Restrictions.eq("sample2.id", id))); crit.add(junction); crit.setFetchMode("targetCollection", FetchMode.JOIN); List results = appService.query(crit); for (int i = 0; i < results.size(); i++) { Function function = (Function) results.get(i); functions.add(function); } } else if (searchBean.getFuncCount() > 1) { // Hibernate Criteria API doesn't support union, union in java for (CompositionQueryBean query : searchBean.getCompositionQueries()) { if (query.getCompositionType().equals("function")) { crit = DetachedCriteria.forClass(Function.class); crit.createAlias("composingElement", "ce", CriteriaSpecification.LEFT_JOIN); crit.createAlias("ce.nanomaterialEntity", "nanoEntity", CriteriaSpecification.LEFT_JOIN); crit.createAlias("nanoEntity.sampleComposition", "comp", CriteriaSpecification.LEFT_JOIN); crit.createAlias("comp.sample", "sample", CriteriaSpecification.LEFT_JOIN); crit.createAlias("functionalizingEntity", "funcEntity", CriteriaSpecification.LEFT_JOIN); crit.createAlias("funcEntity.sampleComposition", "comp2", CriteriaSpecification.LEFT_JOIN); crit.createAlias("comp2.sample", "sample2", CriteriaSpecification.LEFT_JOIN); crit.add(Restrictions.or(Restrictions.eq("sample.id", id), Restrictions.eq("sample2.id", id))); DetachedCriteria subCrit = getFunctionSubquery(query, "", "", "id"); crit.add(Subqueries.exists(subCrit)); crit.setFetchMode("targetCollection", FetchMode.JOIN); crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); List results = appService.query(crit); for (int i = 0; i < results.size(); i++) { Function function = (Function) results.get(i); if (!functions.contains(function)) { functions.add(function); } } } } } return functions; }
From source file:gov.nih.nci.cananolab.service.sample.helper.AdvancedSampleServiceHelper.java
License:BSD License
private List<NanomaterialEntity> findNanomaterialEntitiesBy(String sampleId, AdvancedSampleSearchBean searchBean) throws Exception { List<NanomaterialEntity> entities = new ArrayList<NanomaterialEntity>(); Long id = new Long(sampleId); if (!searchBean.getHasNanomaterial()) { return entities; }/*from w ww . jav a 2 s. c om*/ DetachedCriteria crit = DetachedCriteria.forClass(NanomaterialEntity.class); CaNanoLabApplicationService appService = (CaNanoLabApplicationService) ApplicationServiceProvider .getApplicationService(); Junction junction = getNanomaterialEntityJunction(searchBean, crit); if (junction != null) { // join nanomaterialEntity if (searchBean.getHasNanomaterial() && !searchBean.getHasFunction()) { if (searchBean.getHasChemicalName()) { crit.createAlias("composingElementCollection", "compElement", CriteriaSpecification.LEFT_JOIN); } } crit.createAlias("sampleComposition", "comp"); crit.createAlias("comp.sample", "sample"); crit.add(Restrictions.eq("sample.id", id)); crit.add(junction); crit.setFetchMode("fileCollection", FetchMode.JOIN); crit.setFetchMode("fileCollection.keywordCollection", FetchMode.JOIN); crit.setFetchMode("composingElementCollection", FetchMode.JOIN); crit.setFetchMode("composingElementCollection.inherentFunctionCollection", FetchMode.JOIN); crit.setFetchMode("composingElementCollection.inherentFunctionCollection.targetCollection", FetchMode.JOIN); crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); List results = appService.query(crit); for (int i = 0; i < results.size(); i++) { NanomaterialEntity entity = (NanomaterialEntity) results.get(i); entities.add(entity); } } else if (searchBean.getNanoEntityCount() > 1) { // Hibernate Criteria API doesn't support union, union in java for (CompositionQueryBean query : searchBean.getCompositionQueries()) { if (query.getCompositionType().equals("nanomaterial entity")) { crit = DetachedCriteria.forClass(NanomaterialEntity.class); crit.createAlias("sampleComposition", "comp", CriteriaSpecification.LEFT_JOIN); crit.createAlias("comp.sample", "sample", CriteriaSpecification.LEFT_JOIN); if (!StringUtils.isEmpty(query.getChemicalName())) { crit.createAlias("composingElementCollection", "compElement"); } crit.add(Restrictions.eq("sample.id", id)); crit.setFetchMode("fileCollection", FetchMode.JOIN); crit.setFetchMode("fileCollection.keywordCollection", FetchMode.JOIN); crit.setFetchMode("composingElementCollection", FetchMode.JOIN); crit.setFetchMode("composingElementCollection.inherentFunctionCollection", FetchMode.JOIN); crit.setFetchMode("composingElementCollection.inherentFunctionCollection.targetCollection", FetchMode.JOIN); DetachedCriteria subCrit = getNanomaterialEntitySubquery(query, "", "id"); crit.add(Subqueries.exists(subCrit)); crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); List results = appService.query(crit); for (int i = 0; i < results.size(); i++) { NanomaterialEntity entity = (NanomaterialEntity) results.get(i); if (!entities.contains(entity)) { entities.add(entity); } } } } } return entities; }
From source file:gov.nih.nci.cananolab.service.sample.helper.AdvancedSampleServiceHelper.java
License:BSD License
private DetachedCriteria getCharacterizationSubquery(CharacterizationQueryBean charQuery, String projectionProperty) { DetachedCriteria subCrit = DetachedCriteria.forClass(Characterization.class, "subCrit"); subCrit.setProjection(Projections.distinct(Property.forName(projectionProperty))); // join finding and datum if (!StringUtils.isEmpty(charQuery.getDatumName())) { subCrit.createAlias("subCrit.findingCollection", "finding", CriteriaSpecification.LEFT_JOIN); subCrit.createAlias("finding.datumCollection", "datum", CriteriaSpecification.LEFT_JOIN); }/* w ww . ja v a 2s.com*/ Criterion charCrit = getCharacterizationCriterion(charQuery, ""); subCrit.add(charCrit); subCrit.add(Restrictions.eqProperty("subCrit." + projectionProperty, "rootCrit.id")); return subCrit; }