CCM NG: Some enhancements in the JPA mapping

git-svn-id: https://svn.libreccm.org/ccm/jpa@3390 8810af33-2d31-482b-a856-94f89814c4df
pull/2/head
jensp 2015-05-11 18:22:15 +00:00
parent 985579e224
commit fe957e93a5
8 changed files with 88 additions and 28 deletions

View File

@ -32,6 +32,8 @@ import org.libreccm.core.CcmObject;
import java.util.Objects;
import javax.persistence.JoinColumn;
/**
* Association class describing the association between a category and an
* object. Instances of these class should not created manually.
@ -59,19 +61,21 @@ public class Categorization implements Serializable {
* The category to which this {@code Categorization} object belongs.
*/
@ManyToOne
@JoinColumn(name = "category_id")
private Category category;
/**
* The categorised object.
*/
@ManyToOne
@JoinColumn(name = "object_id")
private CcmObject categorizedObject;
/**
* If the categorised object is the index object of the category this
* property is set to {@code true}.
*/
@Column(name = "index")
@Column(name = "category_index")
private boolean index;
/**

View File

@ -22,7 +22,6 @@ import org.hibernate.validator.constraints.NotBlank;
import org.libreccm.core.CcmObject;
import java.io.Serializable;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;

View File

@ -21,6 +21,7 @@ package org.libreccm.categorization;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.URL;
import org.libreccm.core.CcmObject;
import org.libreccm.jpautils.UriConverter;
import org.libreccm.l10n.LocalizedString;
import java.io.Serializable;
@ -33,6 +34,8 @@ import java.util.Objects;
import javax.persistence.AssociationOverride;
import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Converter;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
@ -86,6 +89,7 @@ public class Domain extends CcmObject implements Serializable {
* </pre>
*/
@Column(name = "uri", nullable = false, unique = true, length = 2048)
@Convert(converter = UriConverter.class)
@NotBlank
@URL
private URI uri;

View File

@ -38,7 +38,7 @@ import org.libreccm.core.CcmObject;
* @author <a href="jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@Entity
@Table(name = "domain_ownerships;")
@Table(name = "domain_ownerships")
public class DomainOwnership implements Serializable {
private static final long serialVersionUID = 201504301305L;

View File

@ -90,6 +90,12 @@ public class CcmObject implements Serializable {
@OneToMany(mappedBy = "categorizedObject")
private List<Categorization> categories;
public CcmObject() {
super();
domains = new ArrayList<>();
categories = new ArrayList<>();
}
public long getObjectId() {
return objectId;
@ -107,11 +113,6 @@ public class CcmObject implements Serializable {
this.displayName = displayName;
}
public CcmObject() {
domains = new ArrayList<>();
categories = new ArrayList<>();
}
/**
* Gets an <strong>unmodifiable</strong> list of the domains which are owned
* by the {@code CcmObject}.

View File

@ -24,8 +24,10 @@ import java.util.Collections;
import java.util.List;
import java.util.Objects;
import javax.persistence.CollectionTable;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.Table;
import javax.validation.constraints.Size;
@ -39,8 +41,11 @@ import javax.validation.constraints.Size;
public class Party extends CcmObject implements Serializable {
private static final long serialVersionUID = 6303836654273293979L;
@ElementCollection
@CollectionTable(name = "party_email_addresses",
joinColumns = {
@JoinColumn(name = "party_id")})
@Size(min = 1)
private List<EmailAddress> eMailAddresses;
@ -51,11 +56,11 @@ public class Party extends CcmObject implements Serializable {
protected void setEmailAddresses(final List<EmailAddress> eMailAddresses) {
this.eMailAddresses = eMailAddresses;
}
protected void addEmailAddress(final EmailAddress emailAddress) {
eMailAddresses.add(emailAddress);
}
protected void removeEmailAddress(final EmailAddress emailAddress) {
eMailAddresses.remove(emailAddress);
}
@ -72,7 +77,7 @@ public class Party extends CcmObject implements Serializable {
if (!super.equals(obj)) {
return false;
}
if (obj == null) {
return false;
}
@ -83,10 +88,10 @@ public class Party extends CcmObject implements Serializable {
if (!other.canEqual(this)) {
return false;
}
return Objects.equals(this.eMailAddresses, other.getEmailAddresses());
}
@Override
public boolean canEqual(final Object obj) {
return obj instanceof Party;

View File

@ -20,6 +20,7 @@ package org.libreccm.core;
import java.io.Serializable;
import java.util.Objects;
import javax.persistence.AssociationOverride;
import javax.persistence.Column;
import javax.persistence.Embedded;
@ -28,8 +29,15 @@ import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.Table;
import org.hibernate.validator.constraints.NotBlank;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.persistence.OneToMany;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -42,10 +50,10 @@ public class User extends Party implements Serializable {
@Embedded
@AssociationOverride(
name = "user_names",
joinTable = @JoinTable(name = "user_names",
joinColumns = {
@JoinColumn(name = " user_id")}))
name = "user_names",
joinTable = @JoinTable(name = "user_names",
joinColumns = {
@JoinColumn(name = " user_id")}))
private PersonName name;
@Column(name = "screen_name", length = 255, nullable = false)
@ -70,6 +78,15 @@ public class User extends Party implements Serializable {
@Column(name = "password_answer", length = 2048)
private String passwordAnswer;
@OneToMany(mappedBy = "user")
private List<GroupMembership> groupMemberships;
public User() {
super();
this.groupMemberships = new ArrayList<>();
}
public PersonName getName() {
return name;
}
@ -134,6 +151,24 @@ public class User extends Party implements Serializable {
this.passwordAnswer = passwordAnswer;
}
public List<GroupMembership> getGroupMemberships() {
return Collections.unmodifiableList(groupMemberships);
}
protected void setGroupMemberships(
final List<GroupMembership> groupMemberships) {
this.groupMemberships = groupMemberships;
}
protected void addGroupMembership(final GroupMembership groupMembership) {
groupMemberships.add(groupMembership);
}
protected void removeGroupMembership(
final GroupMembership groupMembership) {
groupMemberships.remove(groupMembership);
}
@Override
public int hashCode() {
int hash = super.hashCode();
@ -153,7 +188,7 @@ public class User extends Party implements Serializable {
if (!super.equals(obj)) {
return false;
}
if (obj == null) {
return false;
}
@ -197,9 +232,9 @@ public class User extends Party implements Serializable {
@Override
public String toString(final String data) {
return super.toString(String.format(", name = %s, "
+ "screenName = \"%s\", "
+ "banned = %b, "
+ "ssoLogin = \"%s\"%s",
+ "screenName = \"%s\", "
+ "banned = %b, "
+ "ssoLogin = \"%s\"%s",
Objects.toString(name),
screenName,
banned,

View File

@ -48,13 +48,13 @@ public class UserGroup extends Party implements Serializable {
private List<Role> roles;
@OneToMany(mappedBy = "group")
private List<GroupMembership> groupMemberships;
private List<GroupMembership> members;
public UserGroup() {
super();
roles = new ArrayList<>();
groupMemberships = new ArrayList<>();
members = new ArrayList<>();
}
public String getName() {
@ -81,8 +81,20 @@ public class UserGroup extends Party implements Serializable {
roles.remove(role);
}
public List<GroupMembership> getGroupMembership() {
return Collections.unmodifiableList(groupMemberships);
public List<GroupMembership> getMembers() {
return Collections.unmodifiableList(members);
}
protected void setMembers(final List<GroupMembership> members) {
this.members = members;
}
protected void addMember(final GroupMembership member) {
members.add(member);
}
protected void removeMember(final GroupMembership member) {
members.remove(member);
}
@Override
@ -110,10 +122,10 @@ public class UserGroup extends Party implements Serializable {
return false;
}
if (!Objects.equals(this.name, other.name)) {
if (!Objects.equals(this.name, other.getName())) {
return false;
}
return Objects.equals(this.roles, other.roles);
return Objects.equals(this.roles, other.getRoles());
}
public boolean canEquals(final Object obj) {