Class CharacteristicDaoImpl
- java.lang.Object
-
- ubic.gemma.persistence.service.AbstractDao<O>
-
- ubic.gemma.persistence.service.AbstractVoEnabledDao<O,VO>
-
- ubic.gemma.persistence.service.AbstractNoopFilteringVoEnabledDao<Characteristic,CharacteristicValueObject>
-
- ubic.gemma.persistence.service.common.description.CharacteristicDaoImpl
-
- All Implemented Interfaces:
BaseDao<Characteristic>
,BaseVoEnabledDao<Characteristic,CharacteristicValueObject>
,BrowsingDao<Characteristic>
,CharacteristicDao
,FilteringDao<Characteristic>
,FilteringVoEnabledDao<Characteristic,CharacteristicValueObject>
@Repository public class CharacteristicDaoImpl extends AbstractNoopFilteringVoEnabledDao<Characteristic,CharacteristicValueObject> implements CharacteristicDao
- Author:
- Luke, Paul
- See Also:
Characteristic
-
-
Field Summary
-
Fields inherited from class ubic.gemma.persistence.service.AbstractVoEnabledDao
REPORT_SLOW_QUERY_AFTER_MS
-
Fields inherited from class ubic.gemma.persistence.service.AbstractDao
log
-
Fields inherited from interface ubic.gemma.persistence.service.common.description.CharacteristicDao
OBJECT_ALIAS
-
-
Constructor Summary
Constructors Constructor Description CharacteristicDaoImpl(SessionFactory sessionFactory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<Characteristic>
browse(int start, int limit)
Browse through the characteristics, excluding GO annotations.List<Characteristic>
browse(int start, int limit, String orderField, boolean descending)
Browse through the characteristics, excluding GO annotations, with sorting.Map<String,Long>
countByValueUriGroupedByNormalizedValue(Collection<String> uris, Collection<Class<?>> parentClasses)
Count characteristics matching the provided value URIs.protected CharacteristicValueObject
doLoadValueObject(Characteristic entity)
Load a value object for a given entity.Characteristic
findBestByUri(String uri)
Return the characteristic with the most frequently used non-null value by URI.Collection<Characteristic>
findByCategory(String value)
Collection<Characteristic>
findByCategoryLike(String query)
Collection<Characteristic>
findByCategoryUri(String uri)
Collection<Characteristic>
findByUri(String uri)
Collection<Characteristic>
findByUri(Collection<String> uris)
Collection<Characteristic>
findByValue(String value)
Collection<Characteristic>
findByValueLike(String search)
Finds all Characteristics whose value match the given search termMap<String,Characteristic>
findByValueLikeGroupedByNormalizedValue(String valueLike, Collection<Class<?>> parentClasses)
Find characteristics by value matching the provided LIKE pattern.Map<String,Characteristic>
findByValueUriGroupedByNormalizedValue(String valueUri, Collection<Class<?>> parentClasses)
Find characteristics by URI.Map<Class<? extends Identifiable>,Map<String,Set<ExpressionExperiment>>>
findExperimentReferencesByUris(Collection<String> uris, Taxon taxon, int limit, boolean rankByLevel)
Since proxies are returned, they cannot be collected in aHashSet
which would otherwise cause their initialization by accessingObject.hashCode()
.Map<Class<? extends Identifiable>,Map<String,Set<ExpressionExperiment>>>
findExperimentsByUris(Collection<String> uris, Taxon taxon, int limit, boolean rankByLevel)
This search looks at direct annotations, factor values and biomaterials in that order.Map<Characteristic,Identifiable>
getParents(Collection<Characteristic> characteristics, Collection<Class<?>> parentClasses, int maxResults)
Obtain the parents (i.e. owners) of the given characteristics.String
normalizeByValue(Characteristic characteristic)
Normalize a characteristic by value.-
Methods inherited from class ubic.gemma.persistence.service.AbstractNoopFilteringVoEnabledDao
count, getFilter, getFilter, getFilter, getFilter, getFilter, getFilter, getFilterableProperties, getFilterablePropertyAllowedValues, getFilterablePropertyDescription, getFilterablePropertyIsUsingSubquery, getFilterablePropertyType, getSort, load, load, loadIds, loadValueObjects, loadValueObjects
-
Methods inherited from class ubic.gemma.persistence.service.AbstractVoEnabledDao
doLoadValueObjects, loadAllValueObjects, loadValueObject, loadValueObjectById, loadValueObjects, loadValueObjectsByIds, postProcessValueObjects
-
Methods inherited from class ubic.gemma.persistence.service.AbstractDao
countAll, create, create, find, findByProperty, findByPropertyIn, findOneByProperty, findOrCreate, getBatchSize, getElementClass, getIdentifierPropertyName, getSessionFactory, load, load, loadAll, loadReference, loadReference, reload, reload, remove, remove, remove, save, save, streamAll, streamAll, streamQuery, update, update
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface ubic.gemma.persistence.service.BaseDao
countAll, create, create, find, findOrCreate, getElementClass, getIdentifierPropertyName, load, load, loadAll, loadReference, loadReference, reload, reload, remove, remove, remove, save, save, streamAll, streamAll, update, update
-
Methods inherited from interface ubic.gemma.persistence.service.BaseVoEnabledDao
loadAllValueObjects, loadValueObject, loadValueObjectById, loadValueObjects, loadValueObjectsByIds
-
Methods inherited from interface ubic.gemma.persistence.service.FilteringDao
count, getFilter, getFilter, getFilter, getFilter, getFilter, getFilter, getFilterableProperties, getFilterablePropertyAllowedValues, getFilterablePropertyDescription, getFilterablePropertyIsUsingSubquery, getFilterablePropertyType, getSort, load, load, loadIds
-
Methods inherited from interface ubic.gemma.persistence.service.FilteringVoEnabledDao
loadValueObjects, loadValueObjects
-
-
-
-
Constructor Detail
-
CharacteristicDaoImpl
@Autowired public CharacteristicDaoImpl(SessionFactory sessionFactory)
-
-
Method Detail
-
browse
public List<Characteristic> browse(int start, int limit)
Description copied from interface:CharacteristicDao
Browse through the characteristics, excluding GO annotations.- Specified by:
browse
in interfaceBrowsingDao<Characteristic>
- Specified by:
browse
in interfaceCharacteristicDao
- Parameters:
start
- How far into the list to startlimit
- Maximum records to retrieve (might be subject to security filtering)- Returns:
- characteristics
-
browse
public List<Characteristic> browse(int start, int limit, String orderField, boolean descending)
Description copied from interface:CharacteristicDao
Browse through the characteristics, excluding GO annotations, with sorting.- Specified by:
browse
in interfaceBrowsingDao<Characteristic>
- Specified by:
browse
in interfaceCharacteristicDao
- Parameters:
start
- query offsetlimit
- maximum amount of entriesorderField
- order fielddescending
- order direction- Returns:
- characteristics
-
findByCategory
public Collection<Characteristic> findByCategory(String value)
- Specified by:
findByCategory
in interfaceCharacteristicDao
-
findByCategoryLike
public Collection<Characteristic> findByCategoryLike(String query)
- Specified by:
findByCategoryLike
in interfaceCharacteristicDao
-
findByCategoryUri
public Collection<Characteristic> findByCategoryUri(String uri)
- Specified by:
findByCategoryUri
in interfaceCharacteristicDao
-
findExperimentsByUris
public Map<Class<? extends Identifiable>,Map<String,Set<ExpressionExperiment>>> findExperimentsByUris(Collection<String> uris, @Nullable Taxon taxon, int limit, boolean rankByLevel)
Description copied from interface:CharacteristicDao
This search looks at direct annotations, factor values and biomaterials in that order.Resulting EEs are filtered by ACLs.
The returned collection of EEs is effectively a
Set
, but since we cannot use since this should be interchangable withCharacteristicDao.findExperimentReferencesByUris(Collection, Taxon, int, boolean)
.Ranking results by level guarantees correctness if a limit is used as datasets matched by direct annotation will be considered before those matched by factor values or biomaterials. It is however expensive.
- Specified by:
findExperimentsByUris
in interfaceCharacteristicDao
- Parameters:
uris
- collection of URIs used for matching characteristics (viaCharacteristic.getValueUri()
)taxon
- taxon to restrict EEs to, or null to ignorelimit
- limit how many results to return. Set to -1 for no limit.rankByLevel
- rank results by level before limiting, has no effect if limit is -1- Returns:
- map of classes (
ExpressionExperiment
,FactorValue
,BioMaterial
) to the matching URI to EEs which have an associated characteristic using the given URI. The class lets us track where the annotation was.
-
findExperimentReferencesByUris
public Map<Class<? extends Identifiable>,Map<String,Set<ExpressionExperiment>>> findExperimentReferencesByUris(Collection<String> uris, @Nullable Taxon taxon, int limit, boolean rankByLevel)
Since proxies are returned, they cannot be collected in aHashSet
which would otherwise cause their initialization by accessingObject.hashCode()
. Thus we need to create aTreeSet
over the EE IDs.- Specified by:
findExperimentReferencesByUris
in interfaceCharacteristicDao
- See Also:
Session.load(Object, Serializable)
-
findByUri
public Collection<Characteristic> findByUri(Collection<String> uris)
- Specified by:
findByUri
in interfaceCharacteristicDao
-
findByUri
public Collection<Characteristic> findByUri(String uri)
- Specified by:
findByUri
in interfaceCharacteristicDao
-
findBestByUri
public Characteristic findBestByUri(String uri)
Description copied from interface:CharacteristicDao
Return the characteristic with the most frequently used non-null value by URI.- Specified by:
findBestByUri
in interfaceCharacteristicDao
-
findByValueUriGroupedByNormalizedValue
public Map<String,Characteristic> findByValueUriGroupedByNormalizedValue(String valueUri, @Nullable Collection<Class<?>> parentClasses)
Description copied from interface:CharacteristicDao
Find characteristics by URI.The mapping key is the normalized value of the characteristics as per
CharacteristicDao.normalizeByValue(Characteristic)
.- Specified by:
findByValueUriGroupedByNormalizedValue
in interfaceCharacteristicDao
-
findByValueLikeGroupedByNormalizedValue
public Map<String,Characteristic> findByValueLikeGroupedByNormalizedValue(String valueLike, @Nullable Collection<Class<?>> parentClasses)
Description copied from interface:CharacteristicDao
Find characteristics by value matching the provided LIKE pattern.The mapping key is the normalized value of the characteristics as per
CharacteristicDao.normalizeByValue(Characteristic)
.- Specified by:
findByValueLikeGroupedByNormalizedValue
in interfaceCharacteristicDao
-
countByValueUriGroupedByNormalizedValue
public Map<String,Long> countByValueUriGroupedByNormalizedValue(Collection<String> uris, @Nullable Collection<Class<?>> parentClasses)
Description copied from interface:CharacteristicDao
Count characteristics matching the provided value URIs.The mapping key is the normalized value of the characteristics as per
CharacteristicDao.normalizeByValue(Characteristic)
.- Specified by:
countByValueUriGroupedByNormalizedValue
in interfaceCharacteristicDao
-
normalizeByValue
public String normalizeByValue(Characteristic characteristic)
Description copied from interface:CharacteristicDao
Normalize a characteristic by value.This is obtained by taking the value URI or value if the former is null and converting it to lowercase.
- Specified by:
normalizeByValue
in interfaceCharacteristicDao
-
findByValue
public Collection<Characteristic> findByValue(String value)
- Specified by:
findByValue
in interfaceCharacteristicDao
-
findByValueLike
public Collection<Characteristic> findByValueLike(String search)
Description copied from interface:CharacteristicDao
Finds all Characteristics whose value match the given search term- Specified by:
findByValueLike
in interfaceCharacteristicDao
- Parameters:
search
- search- Returns:
- characteristics
-
getParents
public Map<Characteristic,Identifiable> getParents(Collection<Characteristic> characteristics, @Nullable Collection<Class<?>> parentClasses, int maxResults)
Description copied from interface:CharacteristicDao
Obtain the parents (i.e. owners) of the given characteristics.If a characteristic lacks a parent, its entry will be missing from the returned map.
- Specified by:
getParents
in interfaceCharacteristicDao
-
doLoadValueObject
protected CharacteristicValueObject doLoadValueObject(Characteristic entity)
Description copied from class:AbstractVoEnabledDao
Load a value object for a given entity.This should be fast and efficient, and avoid any database query or post-processing. If you need to perform additional queries, implement
AbstractVoEnabledDao.postProcessValueObjects(List)
instead.- Specified by:
doLoadValueObject
in classAbstractVoEnabledDao<Characteristic,CharacteristicValueObject>
-
-