Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
17 changed files
with
314 additions
and
82 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
New optional query parameters added to ``api/metadatablocks`` and ``api/dataverses/{id}/metadatablocks`` endpoints: | ||
|
||
- ``returnDatasetFieldTypes``: Whether or not to return the dataset field types present in each metadata block. If not set, the default value is false. | ||
- ``onlyDisplayedOnCreate``: Whether or not to return only the metadata blocks that are displayed on dataset creation. If ``returnDatasetFieldTypes`` is true, only the dataset field types shown on dataset creation will be returned within each metadata block. If not set, the default value is false. | ||
|
||
Added new ``displayOnCreate`` field to the MetadataBlock and DatasetFieldType payloads. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
61 changes: 46 additions & 15 deletions
61
src/main/java/edu/harvard/iq/dataverse/MetadataBlockServiceBean.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,43 +1,74 @@ | ||
package edu.harvard.iq.dataverse; | ||
|
||
import java.util.List; | ||
import jakarta.ejb.Stateless; | ||
import jakarta.inject.Named; | ||
import jakarta.persistence.EntityManager; | ||
import jakarta.persistence.NoResultException; | ||
import jakarta.persistence.PersistenceContext; | ||
import jakarta.persistence.TypedQuery; | ||
import jakarta.persistence.criteria.*; | ||
|
||
import java.util.List; | ||
|
||
/** | ||
* | ||
* @author michael | ||
*/ | ||
@Stateless | ||
@Named | ||
public class MetadataBlockServiceBean { | ||
|
||
@PersistenceContext(unitName = "VDCNet-ejbPU") | ||
private EntityManager em; | ||
|
||
public MetadataBlock save(MetadataBlock mdb) { | ||
return em.merge(mdb); | ||
} | ||
|
||
|
||
return em.merge(mdb); | ||
} | ||
|
||
public List<MetadataBlock> listMetadataBlocks() { | ||
return listMetadataBlocks(false); | ||
} | ||
|
||
public List<MetadataBlock> listMetadataBlocks(boolean onlyDisplayedOnCreate) { | ||
if (onlyDisplayedOnCreate) { | ||
return listMetadataBlocksDisplayedOnCreate(null); | ||
} | ||
return em.createNamedQuery("MetadataBlock.listAll", MetadataBlock.class).getResultList(); | ||
} | ||
public MetadataBlock findById( Long id ) { | ||
|
||
public MetadataBlock findById(Long id) { | ||
return em.find(MetadataBlock.class, id); | ||
} | ||
public MetadataBlock findByName( String name ) { | ||
|
||
public MetadataBlock findByName(String name) { | ||
try { | ||
return em.createNamedQuery("MetadataBlock.findByName", MetadataBlock.class) | ||
.setParameter("name", name) | ||
.getSingleResult(); | ||
} catch ( NoResultException nre ) { | ||
.setParameter("name", name) | ||
.getSingleResult(); | ||
} catch (NoResultException nre) { | ||
return null; | ||
} | ||
} | ||
|
||
public List<MetadataBlock> listMetadataBlocksDisplayedOnCreate(Dataverse ownerDataverse) { | ||
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder(); | ||
CriteriaQuery<MetadataBlock> criteriaQuery = criteriaBuilder.createQuery(MetadataBlock.class); | ||
Root<MetadataBlock> metadataBlockRoot = criteriaQuery.from(MetadataBlock.class); | ||
Join<MetadataBlock, DatasetFieldType> datasetFieldTypeJoin = metadataBlockRoot.join("datasetFieldTypes"); | ||
Predicate displayOnCreatePredicate = criteriaBuilder.isTrue(datasetFieldTypeJoin.get("displayOnCreate")); | ||
|
||
if (ownerDataverse != null) { | ||
Root<Dataverse> dataverseRoot = criteriaQuery.from(Dataverse.class); | ||
criteriaQuery.where(criteriaBuilder.and( | ||
criteriaBuilder.equal(dataverseRoot.get("id"), ownerDataverse.getId()), | ||
metadataBlockRoot.in(dataverseRoot.get("metadataBlocks")), | ||
displayOnCreatePredicate | ||
)); | ||
} else { | ||
criteriaQuery.where(displayOnCreatePredicate); | ||
} | ||
|
||
criteriaQuery.select(metadataBlockRoot).distinct(true); | ||
TypedQuery<MetadataBlock> typedQuery = em.createQuery(criteriaQuery); | ||
return typedQuery.getResultList(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 13 additions & 14 deletions
27
src/main/java/edu/harvard/iq/dataverse/api/MetadataBlocks.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,34 +1,33 @@ | ||
package edu.harvard.iq.dataverse.api; | ||
|
||
import edu.harvard.iq.dataverse.MetadataBlock; | ||
import jakarta.ws.rs.GET; | ||
import jakarta.ws.rs.Path; | ||
import jakarta.ws.rs.Produces; | ||
import jakarta.ws.rs.*; | ||
import jakarta.ws.rs.core.Response; | ||
import static edu.harvard.iq.dataverse.util.json.JsonPrinter.brief; | ||
import jakarta.ws.rs.PathParam; | ||
|
||
import java.util.List; | ||
|
||
import static edu.harvard.iq.dataverse.util.json.JsonPrinter.json; | ||
import static edu.harvard.iq.dataverse.util.json.JsonPrinter.toJsonArray; | ||
|
||
/** | ||
* Api bean for managing metadata blocks. | ||
* | ||
* @author michael | ||
*/ | ||
@Path("metadatablocks") | ||
@Produces("application/json") | ||
public class MetadataBlocks extends AbstractApiBean { | ||
|
||
@GET | ||
public Response list() { | ||
return ok(metadataBlockSvc.listMetadataBlocks().stream().map(brief::json).collect(toJsonArray())); | ||
public Response listMetadataBlocks(@QueryParam("onlyDisplayedOnCreate") boolean onlyDisplayedOnCreate, | ||
@QueryParam("returnDatasetFieldTypes") boolean returnDatasetFieldTypes) { | ||
List<MetadataBlock> metadataBlocks = metadataBlockSvc.listMetadataBlocks(onlyDisplayedOnCreate); | ||
return ok(json(metadataBlocks, returnDatasetFieldTypes, onlyDisplayedOnCreate)); | ||
} | ||
|
||
@Path("{identifier}") | ||
@GET | ||
public Response getBlock( @PathParam("identifier") String idtf ) { | ||
public Response getMetadataBlock(@PathParam("identifier") String idtf) { | ||
MetadataBlock b = findMetadataBlock(idtf); | ||
|
||
return (b != null ) ? ok(json(b)) : notFound("Can't find metadata block '" + idtf + "'"); | ||
return (b != null) ? ok(json(b)) : notFound("Can't find metadata block '" + idtf + "'"); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.