List of usage examples for org.hibernate Query setCacheable
Query<R> setCacheable(boolean cacheable);
From source file:org.gbif.portal.dao.taxonomy.impl.hibernate.TaxonConceptDAOImpl.java
License:Open Source License
/** * @see org.gbif.portal.dao.taxonomy.TaxonConceptDAO#countChildConcepts(java.lang.Long, * org.gbif.portal.model.taxonomy.TaxonRank, org.gbif.portal.model.taxonomy.TaxonRank) *///from w ww.j av a2s. c o m public int countChildConcepts(final long parentId, final TaxonRank parentRank, final TaxonRank childRank, final boolean countSynonyms, final boolean onlyCountAccepted, final boolean allowUnconfirmed) { HibernateTemplate template = getHibernateTemplate(); Long count = (Long) template.execute(new HibernateCallback() { public Object doInHibernate(Session session) { StringBuffer sb = new StringBuffer("select count(tc.id) from TaxonConcept tc where"); if (countSynonyms) { sb.append(" tc."); sb.append(parentRank.getName()); sb.append("ConceptId = :parentId "); } else { sb.append(" tc.parentConceptId = :parentId"); } sb.append(" and tc.taxonRank = :childRank"); if (onlyCountAccepted) sb.append(" and tc.isAccepted=true"); if (!allowUnconfirmed) { sb.append(" and tc.taxonomicPriority <= " + taxonomicPriorityThreshold); } Query query = session.createQuery(sb.toString()); query.setParameter("parentId", parentId); query.setParameter("childRank", childRank); query.setCacheable(true); return query.uniqueResult(); } }); return count.intValue(); }
From source file:org.gbif.portal.dao.taxonomy.impl.hibernate.TaxonConceptDAOImpl.java
License:Open Source License
/** * @see org.gbif.portal.dao.taxonomy.TaxonConceptDAO#countTaxonConcepts(java.lang.String, boolean, * org.gbif.portal.model.taxonomy.TaxonRank, java.lang.Long, java.lang.Long, java.lang.Long, java.lang.String, * java.util.Date)//from ww w . ja va 2 s . com */ @SuppressWarnings("unchecked") public Long countTaxonConcepts(final String nameStub, final boolean fuzzy, final TaxonRank taxonRank, final Long dataProviderId, final Long dataResourceId, final Long resourceNetworkId, final String hostIsoCountryCode, final Date modifiedSince) { HibernateTemplate template = getHibernateTemplate(); Object result = template.execute(new HibernateCallback() { public Object doInHibernate(Session session) { if (logger.isDebugEnabled()) logger.debug("searching with: " + nameStub); String searchString = nameStub; if (searchString != null && fuzzy) searchString = searchString + '%'; StringBuffer sb = new StringBuffer("select count(tc.id) from TaxonConcept tc"); if (resourceNetworkId != null) { sb.append(" left join tc.dataResource dr left join dr.networkMemberships nm"); sb.append(" left join nm.resourceNetwork rn"); } String connector = " where"; if (searchString != null) { sb.append(connector); sb.append(" tc.taxonName.canonical like :searchString"); connector = " and"; } if (taxonRank != null && taxonRank != TaxonRank.UNKNOWN) { sb.append(connector); sb.append(" tc.taxonRank = :taxonRank"); connector = " and"; } if (dataProviderId != null) { sb.append(connector); sb.append(" tc.dataProvider.id = :dataProviderId"); connector = " and"; } if (dataResourceId != null) { sb.append(connector); if (dataResourceId == 1) { sb.append(" tc.isNubConcept = true"); } else { sb.append(" tc.dataResource.id = :dataResourceId"); } connector = " and"; } if (resourceNetworkId != null) { sb.append(connector); sb.append(" rn.id = :resourceNetworkId"); connector = " and"; } if (hostIsoCountryCode != null) { sb.append(connector); sb.append(" tc.dataProvider.isoCountryCode = :hostIsoCountryCode"); connector = " and"; } if (modifiedSince != null) { sb.append(connector); sb.append(" tc.modified >= :modifiedSince"); } // set the query object Query query = session.createQuery(sb.toString()); if (searchString != null) query.setParameter("searchString", searchString); if (taxonRank != null && taxonRank != TaxonRank.UNKNOWN) query.setParameter("taxonRank", taxonRank); if (dataProviderId != null) query.setParameter("dataProviderId", dataProviderId); if (dataResourceId != null && dataResourceId > 1) query.setParameter("dataResourceId", dataResourceId); if (resourceNetworkId != null) query.setParameter("resourceNetworkId", resourceNetworkId); if (hostIsoCountryCode != null) query.setParameter("hostIsoCountryCode", hostIsoCountryCode); if (modifiedSince != null) query.setParameter("modifiedSince", modifiedSince); query.setCacheable(true); return query.uniqueResult(); } }); if (result instanceof Integer) return ((Integer) result).longValue(); return (Long) result; }
From source file:org.gbif.portal.dao.taxonomy.impl.hibernate.TaxonConceptDAOImpl.java
License:Open Source License
/** * @see org.gbif.portal.dao.taxonomy.TaxonConceptDAO#findTaxonConcepts(java.lang.String, java.lang.String, boolean, * org.gbif.portal.model.taxonomy.TaxonRank, java.lang.Long, java.lang.Long, java.lang.Long, java.lang.String, * java.util.Date, int, int)//from w w w . j a v a2s . c om */ @SuppressWarnings("unchecked") public List<TaxonConcept> findTaxonConcepts(final String canonical, final String specificEpithet, final boolean fuzzy, final TaxonRank taxonRank, final Long dataProviderId, final Long dataResourceId, final Long resourceNetworkId, final String hostIsoCountryCode, final Date modifiedSince, final boolean allowUnconfirmed, final boolean sortAlphabetically, final int startIndex, final int maxResults) { HibernateTemplate template = getHibernateTemplate(); return (List<TaxonConcept>) template.execute(new HibernateCallback() { public Object doInHibernate(Session session) { if (logger.isDebugEnabled()) logger.debug("searching with: '" + canonical + "' and specificEpithet: '" + specificEpithet + "', max results:" + maxResults + ", start index: " + startIndex); StringBuffer sb = new StringBuffer("select tc from TaxonConcept tc"); sb.append(" inner join fetch tc.taxonName"); sb.append(" left join fetch tc.parentConcept pc left join fetch pc.taxonName"); sb.append(" left join fetch tc.kingdomConcept kc left join fetch kc.taxonNameLite"); sb.append(" left join fetch tc.phylumConcept phc left join fetch phc.taxonNameLite"); sb.append(" left join fetch tc.orderConcept oc left join fetch oc.taxonNameLite"); sb.append(" left join fetch tc.classConcept cc left join fetch cc.taxonNameLite"); sb.append(" left join fetch tc.familyConcept fc left join fetch fc.taxonNameLite"); sb.append(" left join fetch tc.genusConcept gc left join fetch gc.taxonNameLite"); sb.append(" left join fetch tc.speciesConcept sc left join fetch sc.taxonNameLite"); if (resourceNetworkId != null) { sb.append(" left join tc.dataResource dr left join dr.networkMemberships nm"); sb.append(" left join nm.resourceNetwork rn"); } // FIXME including this left join fetch causes hibernate to exclude the limit!!! // sb.append(" left join fetch tc.relationshipAssertions"); // sb.append(" left join fetch tc.commonNames"); String connector = " where"; if (canonical != null) { sb.append(connector); sb.append(" tc.taxonName.canonical like :canonical"); connector = " and"; } if (specificEpithet != null) { sb.append(connector); sb.append(" tc.taxonName.specificEpithet like :specificEpithet"); connector = " and"; } if (taxonRank != null && taxonRank != TaxonRank.UNKNOWN) { sb.append(connector); sb.append(" tc.taxonRank = :taxonRank"); connector = " and"; } if (dataProviderId != null) { sb.append(connector); sb.append(" tc.dataProvider.id = :dataProviderId"); connector = " and"; } if (dataResourceId != null) { sb.append(connector); // if (dataResourceId == 1) { // sb.append(" tc.isNubConcept = true"); // } // else { sb.append(" tc.dataResource.id = :dataResourceId"); // } connector = " and"; } if (resourceNetworkId != null) { sb.append(connector); // sb.append(" tc.dataResource.networkMemberships.resourceNetwork.id = :resourceNetworkId"); sb.append(" rn.id = :resourceNetworkId"); connector = " and"; } if (hostIsoCountryCode != null) { sb.append(connector); sb.append(" tc.dataProvider.isoCountryCode = :hostIsoCountryCode"); connector = " and"; } if (modifiedSince != null) { sb.append(connector); sb.append(" tc.modified >= :modifiedSince"); } if (!allowUnconfirmed) { sb.append(connector); sb.append(" tc.taxonomicPriority <= " + taxonomicPriorityThreshold); } if (sortAlphabetically) { sb.append(" order by tc.taxonName.canonical"); } // set the query object Query query = session.createQuery(sb.toString()); if (canonical != null) { String canonicalString = canonical; if (fuzzy) canonicalString = canonicalString + '%'; query.setParameter("canonical", canonicalString); } if (specificEpithet != null) { String specificEpithetString = specificEpithet; if (fuzzy) specificEpithetString = specificEpithetString + '%'; query.setParameter("specificEpithet", specificEpithetString); } if (taxonRank != null && taxonRank != TaxonRank.UNKNOWN) query.setParameter("taxonRank", taxonRank); if (dataProviderId != null) query.setParameter("dataProviderId", dataProviderId); // if(dataResourceId!=null && dataResourceId > 1) if (dataResourceId != null) query.setParameter("dataResourceId", dataResourceId); if (resourceNetworkId != null) query.setParameter("resourceNetworkId", resourceNetworkId); if (hostIsoCountryCode != null) query.setParameter("hostIsoCountryCode", hostIsoCountryCode); if (modifiedSince != null) query.setParameter("modifiedSince", modifiedSince); query.setCacheable(true); query.setMaxResults(maxResults); query.setFirstResult(startIndex); return query.list(); } }); }
From source file:org.gbif.portal.dao.taxonomy.impl.hibernate.TaxonConceptDAOImpl.java
License:Open Source License
/** * Return an list of object arrays of length 2, a TaxonConcept and a Common Name * //from w w w .j a va 2 s .c om * @see org.gbif.portal.dao.taxonomy.TaxonConceptDAO#findTaxonConceptsForCommonName(java.lang.String, boolean, int, * int) */ @SuppressWarnings("unchecked") public List<CommonName> findTaxonConceptsForCommonName(final String commonNameStub, final boolean fuzzy, final int startIndex, final int maxResults) { HibernateTemplate template = getHibernateTemplate(); return (List<CommonName>) template.execute(new HibernateCallback() { public Object doInHibernate(Session session) { StringBuffer sb = new StringBuffer("from CommonName cn" + " inner join fetch cn.taxonConcepts tc" + " inner join fetch tc.taxonName" + " left join fetch tc.kingdomConcept kc left join fetch kc.taxonNameLite" + " left join fetch tc.phylumConcept pc left join fetch pc.taxonNameLite" + " left join fetch tc.orderConcept oc left join fetch oc.taxonNameLite" + " left join fetch tc.classConcept cc left join fetch cc.taxonNameLite" + " left join fetch tc.familyConcept fc left join fetch fc.taxonNameLite" + " left join fetch tc.genusConcept gc left join fetch gc.taxonNameLite" + " left join fetch tc.speciesConcept sc left join fetch sc.taxonNameLite" + " where cn.name like :commonNameStub and tc.isNubConcept=true"); Query query = session.createQuery(sb.toString()); String searchString = commonNameStub; if (fuzzy) searchString += '%'; query.setParameter("commonNameStub", searchString); query.setCacheable(true); query.setMaxResults(maxResults); query.setFirstResult(startIndex); return query.list(); } }); }
From source file:org.gbif.portal.dao.taxonomy.impl.hibernate.TaxonConceptDAOImpl.java
License:Open Source License
/** * @see org.gbif.portal.dao.taxonomy.TaxonConceptDAO#findTaxonConceptsWithSameCanonicalAndRankAs(long, int, int) *//*w ww . j a v a 2 s . c om*/ @SuppressWarnings("unchecked") public List<TaxonConcept> findTaxonConceptsWithSameCanonicalAndRankAs(final long taxonConceptId, final Long dataProviderId, final Long dataResourceId, final int startIndex, final int maxResults) { HibernateTemplate template = getHibernateTemplate(); return (List<TaxonConcept>) template.execute(new HibernateCallback() { public Object doInHibernate(Session session) { StringBuffer sb = new StringBuffer("select target from TaxonConcept target, TaxonConcept source" + " inner join fetch target.dataResource" + " inner join fetch target.dataProvider" + " inner join fetch target.taxonName" + " where source.taxonName.canonical = target.taxonName.canonical" + " and source.taxonName.taxonRank = target.taxonName.taxonRank" + " and target.id <> :id" + " and source.id = :id"); if (dataProviderId != null) sb.append(" and target.dataProviderId = :dataProviderId"); if (dataResourceId != null) sb.append(" and target.dataResourceId = :dataResourceId"); Query query = session.createQuery(sb.toString()); query.setParameter("id", taxonConceptId); if (dataProviderId != null) query.setParameter("dataProviderId", dataProviderId); if (dataResourceId != null) query.setParameter("dataResourceId", dataResourceId); query.setCacheable(true); query.setMaxResults(maxResults); query.setFirstResult(startIndex); return query.list(); } }); }
From source file:org.gbif.portal.dao.taxonomy.impl.hibernate.TaxonConceptDAOImpl.java
License:Open Source License
@SuppressWarnings("unchecked") public List<TaxonConcept> getAuthoritativeTaxonConceptsForNubTaxonConcept(final Long nubConceptId) { if (logger.isDebugEnabled()) logger.debug("Retrieving authoritative taxon concepts for nub concept:" + nubConceptId); HibernateTemplate template = getHibernateTemplate(); return (List<TaxonConcept>) template.execute(new HibernateCallback() { public Object doInHibernate(Session session) { // First get the main partner Query query = session.createQuery("select partner from TaxonConcept partner, TaxonConcept nub" + " inner join fetch partner.taxonName" + " where partner.partnerConceptId = :nubConceptId" + " and nub.id = partner.partnerConceptId" + " and nub.partnerConceptId = partner.id" + " and partner.isNubConcept = false" + " and partner.taxonomicPriority <= 10"); query.setParameter("nubConceptId", nubConceptId); query.setCacheable(true); List<TaxonConcept> list = query.list(); if (logger.isDebugEnabled()) logger.debug("Nub partner " + list.size()); // Then get any other authoritative partners query = session.createQuery("select partner from TaxonConcept partner, TaxonConcept nub" + " inner join fetch partner.taxonName" + " where partner.partnerConceptId = :nubConceptId" + " and nub.id = partner.partnerConceptId" + " and nub.partnerConceptId != partner.id" + " and partner.isNubConcept = false" + " and partner.taxonomicPriority <= 10"); query.setParameter("nubConceptId", nubConceptId); query.setCacheable(true);/*from ww w .j a v a 2 s .c om*/ list.addAll(query.list()); if (logger.isDebugEnabled()) logger.debug("All partners " + list.size()); return list; } }); }
From source file:org.gbif.portal.dao.taxonomy.impl.hibernate.TaxonConceptDAOImpl.java
License:Open Source License
/** * @see org.gbif.portal.dao.taxonomy.TaxonConceptDAO#getTaxonConcept(long) *//*w ww .jav a 2s. com*/ @SuppressWarnings("unchecked") public List<TaxonConcept> getChildConceptsFor(final long taxonConceptId, final boolean allowUnconfirmed) { HibernateTemplate template = getHibernateTemplate(); return (List<TaxonConcept>) template.execute(new HibernateCallback() { public Object doInHibernate(Session session) { StringBuffer sb = new StringBuffer("from TaxonConcept tc" + " inner join fetch tc.taxonName" + " left join fetch tc.kingdomConcept left join fetch tc.kingdomConcept.taxonNameLite" + " left join fetch tc.phylumConcept left join fetch tc.phylumConcept.taxonNameLite" + " left join fetch tc.orderConcept left join fetch tc.orderConcept.taxonNameLite" + " left join fetch tc.classConcept left join fetch tc.classConcept.taxonNameLite" + " left join fetch tc.familyConcept left join fetch tc.familyConcept.taxonNameLite" + " left join fetch tc.genusConcept left join fetch tc.genusConcept.taxonNameLite" + " left join fetch tc.speciesConcept left join fetch tc.speciesConcept.taxonNameLite" + " where tc.parentConcept.id = ? and tc.isAccepted=true "); if (!allowUnconfirmed) { sb.append(" and tc.taxonomicPriority<="); sb.append(taxonomicPriorityThreshold); } sb.append(" order by tc.rank, tc.taxonName.canonical"); Query query = session.createQuery(sb.toString()); query.setParameter(0, taxonConceptId); query.setCacheable(true); query.setMaxResults(maxChildConcepts); return query.list(); } }); }
From source file:org.gbif.portal.dao.taxonomy.impl.hibernate.TaxonConceptDAOImpl.java
License:Open Source License
/** * @see org.gbif.portal.dao.taxonomy.TaxonConceptDAO#getCountryRootConceptsFor(java.lang.String) *//*from ww w.ja v a 2 s .c om*/ @SuppressWarnings("unchecked") public List<TaxonConceptLite> getCountryRootConceptsFor(final String isoCountryCode) { HibernateTemplate template = getHibernateTemplate(); return (List<TaxonConceptLite>) template.execute(new HibernateCallback() { public Object doInHibernate(Session session) { // FIXME This query hardcodes the root rank to be // kingdom - not very elegant but the alternative query // select..where parent_concept_id is null was soo slooow Query query = session.createQuery("select tct.taxonConceptLite from TaxonCountry tct" + " inner join fetch tct.taxonConceptLite.taxonNameLite" + " where tct.key.isoCountryCode = :isoCountryCode" + " and tct.taxonConceptLite.taxonRank=:taxonRank" + " and tct.taxonConceptLite.isAccepted=true" + " order by tct.taxonConceptLite.taxonRank asc, tct.taxonConceptLite.taxonNameLite.canonical"); query.setParameter("isoCountryCode", isoCountryCode); query.setParameter("taxonRank", TaxonRank.KINGDOM); query.setCacheable(true); return query.list(); } }); }
From source file:org.gbif.portal.dao.taxonomy.impl.hibernate.TaxonConceptDAOImpl.java
License:Open Source License
/** * @see org.gbif.portal.dao.taxonomy.TaxonConceptDAO#getDataProviderRootConceptsFor(long) *///w w w . ja va 2s.c om @SuppressWarnings("unchecked") public List<TaxonConcept> getDataProviderRootConceptsFor(final long dataProviderId) { if (logger.isDebugEnabled()) logger.debug("Retrieving root concepts for data provider id:" + dataProviderId); HibernateTemplate template = getHibernateTemplate(); return (List<TaxonConcept>) template.execute(new HibernateCallback() { public Object doInHibernate(Session session) { Query query = session.createQuery("from TaxonConcept tc" + " inner join fetch tc.taxonName" + " where tc.dataProvider.id = :dataProviderId" + " and tc.parentConcept.id is null" + " and tc.isAccepted=true" + " order by tc.taxonRank asc, tc.taxonName.canonical"); query.setParameter("dataProviderId", dataProviderId); query.setCacheable(true); query.setMaxResults(maxChildConcepts); return query.list(); } }); }
From source file:org.gbif.portal.dao.taxonomy.impl.hibernate.TaxonConceptDAOImpl.java
License:Open Source License
/** * @see org.gbif.portal.dao.taxonomy.TaxonConceptDAO#getDataResourceRootConceptsFor(long) *//*from www . j a v a2s . co m*/ @SuppressWarnings("unchecked") public List<TaxonConcept> getDataResourceRootConceptsFor(final long dataResourceId) { if (logger.isDebugEnabled()) logger.debug("Retrieving root concepts for data resource id:" + dataResourceId); HibernateTemplate template = getHibernateTemplate(); return (List<TaxonConcept>) template.execute(new HibernateCallback() { public Object doInHibernate(Session session) { Query query = session.createQuery("from TaxonConcept tc" + " inner join fetch tc.taxonName" + " where tc.dataResource.id = :dataResourceId" + " and tc.parentConcept.id is null" + " and tc.isAccepted=true" + " order by tc.taxonRank asc, tc.taxonName.canonical"); query.setParameter("dataResourceId", dataResourceId); query.setCacheable(true); query.setMaxResults(maxChildConcepts); return query.list(); } }); }