Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Merge pull request #200 from zanata/lombok-refactor
Browse files Browse the repository at this point in the history
Lombok refactor
  • Loading branch information
seanf committed Oct 1, 2013
2 parents 886883d + 9bd1746 commit aea644b
Show file tree
Hide file tree
Showing 34 changed files with 610 additions and 1,287 deletions.
16 changes: 7 additions & 9 deletions zanata-model/src/main/java/org/zanata/model/AccountKeyBase.java
Expand Up @@ -20,33 +20,31 @@
*/
package org.zanata.model;

import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToOne;
import javax.validation.constraints.Size;

import lombok.Getter;
import lombok.Setter;

import org.hibernate.validator.constraints.NotEmpty;

@MappedSuperclass
@Setter
@Getter
@Access(AccessType.FIELD)
public class AccountKeyBase {
private String keyHash;
private HAccount account;

@NotEmpty
@Size(min = 32, max = 32)
@Id
public String getKeyHash() {
return keyHash;
}
private String keyHash;

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "accountId")
public HAccount getAccount() {
return account;
}
private HAccount account;
}
101 changes: 34 additions & 67 deletions zanata-model/src/main/java/org/zanata/model/HAccount.java
Expand Up @@ -25,6 +25,8 @@
import java.util.Map;
import java.util.Set;

import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
Expand Down Expand Up @@ -55,7 +57,11 @@
import org.zanata.model.type.UserApiKey;
import org.zanata.rest.dto.Account;

import com.google.common.collect.Maps;
import com.google.common.collect.Sets;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

Expand All @@ -68,105 +74,66 @@
@Table(uniqueConstraints = @UniqueConstraint(columnNames = "username"))
@Indexed
@Setter
@Getter
@Access(AccessType.FIELD)
@ToString(callSuper = true, of = "username")
@EqualsAndHashCode(callSuper = true, of = { "enabled", "passwordHash",
"username", "apiKey" })
public class HAccount extends ModelEntityBase implements Serializable {
private static final long serialVersionUID = 1L;

private String username;
private String passwordHash;
private boolean enabled;
private String apiKey;
private HPerson person;
private Set<HAccountRole> roles;
private HAccountActivationKey accountActivationKey;
private HAccountResetPasswordKey accountResetPasswordKey;
private Set<HCredentials> credentials;
private HAccount mergedInto;
private Map<String, HAccountOption> editorOptions;

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@OneToOne(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY,
mappedBy = "account")
public HAccountActivationKey getAccountActivationKey() {
return accountActivationKey;
}

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@OneToOne(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY,
mappedBy = "account")
public HAccountResetPasswordKey getAccountResetPasswordKey() {
return accountResetPasswordKey;
}

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@OneToOne(mappedBy = "account", cascade = CascadeType.ALL)
public HPerson getPerson() {
return person;
}

@NaturalId
@UserPrincipal
@Field()
public String getUsername() {
return username;
}

@Transient
public boolean isPersonAccount() {
return person != null;
}
private String username;

@UserPassword(hash = PasswordHash.ALGORITHM_MD5)
public String getPasswordHash() {
return passwordHash;
}
private String passwordHash;

@UserEnabled
public boolean isEnabled() {
return enabled;
}
private boolean enabled;

@UserApiKey
@Size(min = 32, max = 32)
public String getApiKey() {
return apiKey;
}
private String apiKey;

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@OneToOne(mappedBy = "account", cascade = CascadeType.ALL)
private HPerson person;

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@UserRoles
@ManyToMany(targetEntity = HAccountRole.class)
@JoinTable(name = "HAccountMembership", joinColumns = @JoinColumn(
name = "accountId"), inverseJoinColumns = @JoinColumn(
name = "memberOf"))
public Set<HAccountRole> getRoles() {
if (roles == null) {
roles = new HashSet<HAccountRole>();
setRoles(roles);
}
return roles;
}
private Set<HAccountRole> roles = Sets.newHashSet();

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@OneToOne(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY,
mappedBy = "account")
private HAccountActivationKey accountActivationKey;

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@OneToOne(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY,
mappedBy = "account")
private HAccountResetPasswordKey accountResetPasswordKey;

@OneToMany(mappedBy = "account", cascade = { CascadeType.ALL })
@Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
public Set<HCredentials> getCredentials() {
if (credentials == null) {
credentials = new HashSet<HCredentials>();
}
return credentials;
}
private Set<HCredentials> credentials = Sets.newHashSet();

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "mergedInto")
public HAccount getMergedInto() {
return mergedInto;
}
private HAccount mergedInto;

@OneToMany(mappedBy = "account", cascade = { CascadeType.ALL })
@Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
@MapKey(name = "name")
public Map<String, HAccountOption> getEditorOptions() {
return editorOptions;
private Map<String, HAccountOption> editorOptions = Maps.newHashMap();

@Transient
public boolean isPersonAccount() {
return person != null;
}
}
Expand Up @@ -23,31 +23,32 @@
import java.io.Serializable;
import java.util.Date;

import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.PrePersist;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Entity
@Setter
@Getter
@Access(AccessType.FIELD)
@ToString
@NoArgsConstructor
public class HAccountActivationKey extends AccountKeyBase implements
Serializable {
private static final long serialVersionUID = 1L;

private Date creationDate;

@Temporal(TemporalType.TIMESTAMP)
@Column(nullable = false)
public Date getCreationDate() {
return creationDate;
}
private Date creationDate;

@SuppressWarnings("unused")
@PrePersist
Expand Down
21 changes: 7 additions & 14 deletions zanata-model/src/main/java/org/zanata/model/HAccountOption.java
Expand Up @@ -20,11 +20,14 @@
*/
package org.zanata.model;

import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Transient;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
Expand All @@ -35,6 +38,8 @@
*/
@Entity
@Setter
@Getter
@Access(AccessType.FIELD)
@ToString
@NoArgsConstructor
public class HAccountOption extends ModelEntityBase {
Expand All @@ -44,27 +49,15 @@ public class HAccountOption extends ModelEntityBase {

private String value;

@ManyToOne(optional = false)
@JoinColumn(name = "account_id")
private HAccount account;

public HAccountOption(String name, String value) {
this.name = name;
this.value = value;
}

public String getName() {
return name;
}

public String getValue() {
return value;
}

@ManyToOne(optional = false)
@JoinColumn(name = "account_id")
public HAccount getAccount() {
return account;
}

@Transient
public Boolean getValueAsBoolean() {
return Boolean.parseBoolean(getValue());
Expand Down
44 changes: 17 additions & 27 deletions zanata-model/src/main/java/org/zanata/model/HAccountRole.java
Expand Up @@ -23,6 +23,8 @@
import java.io.Serializable;
import java.util.Set;

import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
Expand All @@ -38,52 +40,40 @@
import org.jboss.seam.annotations.security.management.RoleName;
import org.zanata.model.type.RoleTypeType;

import com.google.common.collect.Sets;

import lombok.Getter;
import lombok.Setter;

@Entity
@Setter
@Getter
@Access(AccessType.FIELD)
@TypeDef(name = "roleType", typeClass = RoleTypeType.class)
public class HAccountRole implements Serializable {
private static final long serialVersionUID = 9177366120789064801L;

private Integer id;
private String name;
private boolean conditional;
private RoleType roleType = RoleType.MANUAL;

private Set<HAccountRole> groups;

@Id
@GeneratedValue
public Integer getId() {
return id;
}
private Integer id;

// TODO PERF @NaturalId(mutable=false) for better criteria caching
@RoleName
public String getName() {
return name;
}
private String name;

@RoleConditional
private boolean conditional;

@Type(type = "roleType")
@NotNull
private RoleType roleType = RoleType.MANUAL;

@RoleGroups
@ManyToMany(targetEntity = HAccountRole.class)
@JoinTable(name = "HAccountRoleGroup", joinColumns = @JoinColumn(
name = "roleId"), inverseJoinColumns = @JoinColumn(
name = "memberOf"))
public Set<HAccountRole> getGroups() {
return groups;
}

@RoleConditional
public boolean isConditional() {
return conditional;
}

@Type(type = "roleType")
@NotNull
public RoleType getRoleType() {
return roleType;
}
private Set<HAccountRole> groups = Sets.newHashSet();

public enum RoleType {
AUTO, MANUAL;
Expand Down

0 comments on commit aea644b

Please sign in to comment.