diff --git a/sci-publications/src/main/java/org/scientificcms/publications/PublicationRepository.java b/sci-publications/src/main/java/org/scientificcms/publications/PublicationRepository.java index c8827a2..36a4270 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/PublicationRepository.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/PublicationRepository.java @@ -70,12 +70,12 @@ public class PublicationRepository criteriaBuilder.equal(from.get("publicationId"), publicationId) ); - final TypedQuery query = getEntityManager().createQuery( - criteriaQuery - ); - try { - return Optional.of(query.getSingleResult()); + return Optional.of( + getEntityManager() + .createQuery(criteriaQuery) + .getSingleResult() + ); } catch (NoResultException ex) { return Optional.empty(); } @@ -101,12 +101,19 @@ public class PublicationRepository public Optional findByUuidAndType( final String uuid, final Class type ) { + final CriteriaBuilder criteriaBuilder = getEntityManager() + .getCriteriaBuilder(); + final CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(type); + final Root from = criteriaQuery.from(type); + + criteriaQuery.where( + criteriaBuilder.equal(from.get("uuid"), uuid) + ); + try { return Optional.of( getEntityManager() - .createNamedQuery("Publication.findByUuidAndType", type) - .setParameter("uuid", uuid) - .setParameter("type", type) + .createQuery(criteriaQuery) .getSingleResult() ); } catch (NoResultException ex) { @@ -123,19 +130,33 @@ public class PublicationRepository } public List findByType(final Class type) { + final CriteriaBuilder criteriaBuilder = getEntityManager() + .getCriteriaBuilder(); + final CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(type); + criteriaQuery.from(type); + return getEntityManager() - .createNamedQuery("Publication.findByType", type) - .setParameter("type", type) + .createQuery(criteriaQuery) .getResultList(); } public List findByTitleAndType( final String title, final Class type ) { + final CriteriaBuilder criteriaBuilder = getEntityManager() + .getCriteriaBuilder(); + final CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(type); + final Root from = criteriaQuery.from(type); + + criteriaQuery.where( + criteriaBuilder.like( + criteriaBuilder.lower(from.get("title")), + String.format("%%%s%%", title) + ) + ); + return getEntityManager() - .createNamedQuery("Publication.findByTitleAndType", type) - .setParameter("title", title) - .setParameter("type", type) + .createQuery(criteriaQuery) .getResultList(); } @@ -149,10 +170,17 @@ public class PublicationRepository public List findByAuthorAndType( final Person author, final Class type ) { + final CriteriaBuilder criteriaBuilder = getEntityManager() + .getCriteriaBuilder(); + final CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(type); + final Root from = criteriaQuery.from(type); + + criteriaQuery.where( + criteriaBuilder.equal(from.get("author"), author) + ); + return getEntityManager() - .createNamedQuery("Publication.findByAuthorAndType", type) - .setParameter("author", author) - .setParameter("type", type) + .createQuery(criteriaQuery) .getResultList(); } diff --git a/sci-publications/src/main/java/org/scientificcms/publications/rs/Publications.java b/sci-publications/src/main/java/org/scientificcms/publications/rs/Publications.java index 252ec7c..e23e662 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/rs/Publications.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/rs/Publications.java @@ -114,6 +114,7 @@ public class Publications { final JsonObjectBuilder objectBuilder = Json .createObjectBuilder() .add("publicationId", publication.getPublicationId()) + .add("uuid", publication.getUuid()) .add( "authors", publication @@ -135,7 +136,17 @@ public class Publications { publication.getTitle() ) ) - .add("year", publication.getYearOfPublication()); + .add( + "type", + publication.getClass().getSimpleName() + ); + + + if (publication.getYearOfPublication() == null) { + objectBuilder.addNull("year"); + } else { + publication.getYearOfPublication(); + } if (publication instanceof PublicationWithPublisher) { diff --git a/sci-publications/src/main/resources/META-INF/resources/components/scicms/publicationPicker.xhtml b/sci-publications/src/main/resources/META-INF/resources/components/scicms/publicationPicker.xhtml index 480635e..2cb74e0 100644 --- a/sci-publications/src/main/resources/META-INF/resources/components/scicms/publicationPicker.xhtml +++ b/sci-publications/src/main/resources/META-INF/resources/components/scicms/publicationPicker.xhtml @@ -45,7 +45,7 @@ -
- - - - + + +
+ + + + + + + + +
#{SciPublicationsUiMessageBundle['publicationpicker.column.name']}#{SciPublicationsUiMessageBundle['publicationpicker.column.type']}#{SciPublicationsUiMessageBundle['publicationpicker.column.action']}
+