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
elementClass, 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.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, remove, remove, remove, save, save, 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, remove, remove, remove, save, save, 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>
-
-