From c1e471e87deffb41cd0e74a1b1e1d99e0eda4ec0 Mon Sep 17 00:00:00 2001 From: jensp Date: Tue, 20 Dec 2016 09:06:40 +0000 Subject: [PATCH] CCM NG: Hibernate Search annotations for CcmObject, ContentItem and some associated objects git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4494 8810af33-2d31-482b-a856-94f89814c4df --- .../main/java/org/librecms/contentsection/ContentItem.java | 7 ++++--- ccm-core/src/main/java/org/libreccm/core/CcmObject.java | 2 ++ .../src/main/java/org/libreccm/l10n/LocalizedString.java | 2 ++ .../src/main/java/org/libreccm/security/Permission.java | 6 ++++++ ccm-core/src/main/java/org/libreccm/security/Role.java | 2 ++ 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ContentItem.java b/ccm-cms/src/main/java/org/librecms/contentsection/ContentItem.java index 926dd7127..d0a255817 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ContentItem.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ContentItem.java @@ -54,6 +54,7 @@ import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import org.hibernate.search.annotations.IndexedEmbedded; import static org.librecms.CmsConstants.*; @@ -197,7 +198,7 @@ public class ContentItem extends CcmObject implements Serializable, } ) ) -// @Field + @IndexedEmbedded private LocalizedString title; /** @@ -211,7 +212,7 @@ public class ContentItem extends CcmObject implements Serializable, joinColumns = { @JoinColumn(name = "OBJECT_ID")} )) -// @Field + @IndexedEmbedded private LocalizedString description; /** @@ -219,7 +220,7 @@ public class ContentItem extends CcmObject implements Serializable, */ @Column(name = "VERSION") @Enumerated(EnumType.STRING) -// @Field + @Field private ContentItemVersion version; /** diff --git a/ccm-core/src/main/java/org/libreccm/core/CcmObject.java b/ccm-core/src/main/java/org/libreccm/core/CcmObject.java index 77204186d..d6ba5efa3 100644 --- a/ccm-core/src/main/java/org/libreccm/core/CcmObject.java +++ b/ccm-core/src/main/java/org/libreccm/core/CcmObject.java @@ -53,6 +53,7 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA; import org.hibernate.search.annotations.Field; import org.hibernate.search.annotations.FieldBridge; +import org.hibernate.search.annotations.IndexedEmbedded; /** * Root class of all entities in LibreCCM which need categorisation and @@ -121,6 +122,7 @@ public class CcmObject implements Identifiable, Serializable { * Permissions granted on this object. */ @OneToMany(mappedBy = "object") + @IndexedEmbedded(includePaths = {"grantedPrivilege", "grantee.name"}) @XmlElementWrapper(name = "permissions", namespace = CORE_XML_NS) @XmlElement(name = "permission", namespace = CORE_XML_NS) @JsonBackReference(value = "permission-object") diff --git a/ccm-core/src/main/java/org/libreccm/l10n/LocalizedString.java b/ccm-core/src/main/java/org/libreccm/l10n/LocalizedString.java index e86d586e6..32c5c9699 100644 --- a/ccm-core/src/main/java/org/libreccm/l10n/LocalizedString.java +++ b/ccm-core/src/main/java/org/libreccm/l10n/LocalizedString.java @@ -39,6 +39,7 @@ import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import org.hibernate.annotations.Type; +import org.hibernate.search.annotations.Field; /** * A helper class for localisable string properties. This class is declared as @@ -63,6 +64,7 @@ public class LocalizedString implements Serializable { @Basic @Lob @Type(type = "org.hibernate.type.TextType") + @Field @XmlElementWrapper(name = "values", namespace = L10N_XML_NS) @XmlElement(name = "value", namespace = L10N_XML_NS) private Map values; diff --git a/ccm-core/src/main/java/org/libreccm/security/Permission.java b/ccm-core/src/main/java/org/libreccm/security/Permission.java index 5653baf9a..62e9d4cdb 100644 --- a/ccm-core/src/main/java/org/libreccm/security/Permission.java +++ b/ccm-core/src/main/java/org/libreccm/security/Permission.java @@ -42,6 +42,9 @@ import javax.xml.bind.annotation.XmlRootElement; import java.io.Serializable; import java.util.Date; import java.util.Objects; +import org.hibernate.search.annotations.ContainedIn; +import org.hibernate.search.annotations.Field; +import org.hibernate.search.annotations.IndexedEmbedded; import static org.libreccm.core.CoreConstants.CORE_XML_NS; import static org.libreccm.core.CoreConstants.DB_SCHEMA; @@ -90,6 +93,7 @@ public class Permission implements Serializable, Portable { * The granted privilege. */ @Column(name = "granted_privilege") + @Field @XmlElement(name = "privilege", namespace = CORE_XML_NS) private String grantedPrivilege; @@ -98,6 +102,7 @@ public class Permission implements Serializable, Portable { */ @ManyToOne @JoinColumn(name = "OBJECT_ID") + @ContainedIn @JsonManagedReference(value = "permission-object") private CcmObject object; @@ -105,6 +110,7 @@ public class Permission implements Serializable, Portable { * The role to which the permission is granted. */ @ManyToOne + @IndexedEmbedded @JoinColumn(name = "GRANTEE_ID") @JsonManagedReference(value = "permission-role") private Role grantee; diff --git a/ccm-core/src/main/java/org/libreccm/security/Role.java b/ccm-core/src/main/java/org/libreccm/security/Role.java index 0499257d4..6c73ecb0b 100644 --- a/ccm-core/src/main/java/org/libreccm/security/Role.java +++ b/ccm-core/src/main/java/org/libreccm/security/Role.java @@ -55,6 +55,7 @@ import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; +import org.hibernate.search.annotations.Field; import static org.libreccm.core.CoreConstants.CORE_XML_NS; import static org.libreccm.core.CoreConstants.DB_SCHEMA; @@ -140,6 +141,7 @@ public class Role implements Serializable, Portable { * numbers 0 to 9, the {@code -} (dash) and the {@code _} (underscore). */ @Column(name = "NAME", length = 512, nullable = false) + @Field @NotBlank @Pattern(regexp = "[a-zA-Z0-9\\-_]*") @XmlElement(name = "name", namespace = CORE_XML_NS)