mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-11 12:03:09 +00:00
DS-4316 Support querying MetadataValues by field and value
This commit is contained in:
@@ -71,6 +71,12 @@ public class MetadataValueServiceImpl implements MetadataValueService {
|
||||
return metadataValueDAO.findByField(context, metadataField);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<MetadataValue> findByFieldAndValue(Context context, MetadataField metadataField, String value)
|
||||
throws SQLException {
|
||||
return metadataValueDAO.findByFieldAndValue(context, metadataField, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Context context, MetadataValue metadataValue) throws SQLException {
|
||||
metadataValueDAO.save(context, metadataValue);
|
||||
|
@@ -28,6 +28,9 @@ public interface MetadataValueDAO extends GenericDAO<MetadataValue> {
|
||||
|
||||
public List<MetadataValue> findByField(Context context, MetadataField fieldId) throws SQLException;
|
||||
|
||||
public Iterator<MetadataValue> findByFieldAndValue(Context context, MetadataField metadataField, String value)
|
||||
throws SQLException;
|
||||
|
||||
public Iterator<MetadataValue> findByValueLike(Context context, String value) throws SQLException;
|
||||
|
||||
public void deleteByMetadataField(Context context, MetadataField metadataField) throws SQLException;
|
||||
|
@@ -49,6 +49,17 @@ public class MetadataValueDAOImpl extends AbstractHibernateDAO<MetadataValue> im
|
||||
return list(context, criteriaQuery, false, MetadataValue.class, -1, -1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<MetadataValue> findByFieldAndValue(Context context, MetadataField metadataField, String value)
|
||||
throws SQLException {
|
||||
String queryString = "SELECT m from MetadataValue m where metadata_field_id = :metadata_field_id " +
|
||||
"and text_value = :text_value ";
|
||||
Query query = createQuery(context, queryString);
|
||||
query.setParameter("metadata_field_id", metadataField.getID());
|
||||
query.setParameter("text_value", value);
|
||||
return iterate(query);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<MetadataValue> findByValueLike(Context context, String value) throws SQLException {
|
||||
String queryString = "SELECT m FROM MetadataValue m JOIN m.metadataField f " +
|
||||
|
@@ -63,6 +63,18 @@ public interface MetadataValueService {
|
||||
public List<MetadataValue> findByField(Context context, MetadataField metadataField)
|
||||
throws IOException, SQLException;
|
||||
|
||||
/**
|
||||
* Retrieves matching MetadataValues for a given field and value.
|
||||
*
|
||||
* @param context dspace context
|
||||
* @param metadataField The field that must match
|
||||
* @param value The value that must match
|
||||
* @return the matching MetadataValues
|
||||
* @throws SQLException if database error
|
||||
*/
|
||||
public Iterator<MetadataValue> findByFieldAndValue(Context context, MetadataField metadataField, String value)
|
||||
throws SQLException;
|
||||
|
||||
/**
|
||||
* Update the metadata value in the database.
|
||||
*
|
||||
|
Reference in New Issue
Block a user