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

Commit

Permalink
Work in progress: refactoring validationservice for new state
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Aug 23, 2013
1 parent 8277879 commit 2d27fff
Show file tree
Hide file tree
Showing 15 changed files with 264 additions and 482 deletions.
177 changes: 49 additions & 128 deletions zanata-model/src/main/java/org/zanata/model/HProject.java
Expand Up @@ -25,9 +25,8 @@
import static org.jboss.seam.security.EntityAction.UPDATE;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.persistence.Column;
Expand All @@ -39,11 +38,13 @@
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.MapKeyColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

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

Expand All @@ -52,15 +53,19 @@
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.hibernate.search.annotations.Field;
import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.validator.constraints.NotEmpty;
import org.jboss.seam.annotations.security.Restrict;
import org.zanata.annotation.EntityRestrict;
import org.zanata.common.EntityStatus;
import org.zanata.common.ProjectType;
import org.zanata.model.type.EntityStatusType;
import org.zanata.rest.dto.Project;

import com.beust.jcommander.internal.Maps;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;

/**
* @see Project
*
Expand All @@ -69,165 +74,81 @@
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@TypeDef(name = "entityStatus", typeClass = EntityStatusType.class)
@Restrict
@EntityRestrict({INSERT, UPDATE, DELETE})
@EntityRestrict({ INSERT, UPDATE, DELETE })
@Setter
@Getter
@Indexed
@ToString(callSuper = true, of = "name")
public class HProject extends SlugEntityBase implements Serializable, HasEntityStatus
{
private static final long serialVersionUID = 1L;
private String name;
private String description;
private String homeContent;
private String sourceViewURL;
private String sourceCheckoutURL;
private boolean overrideLocales = false;
private boolean restrictedByRoles = false;
private boolean overrideValidations = false;
private HCopyTransOptions defaultCopyTransOpts;
private Set<HLocale> customizedLocales;
private ProjectType defaultProjectType;

private Set<HPerson> maintainers;
private Set<HAccountRole> allowedRoles;
private Set<String> customizedValidations;

private List<HProjectIteration> projectIterations = new ArrayList<HProjectIteration>();
private EntityStatus status = EntityStatus.ACTIVE;

@OneToMany(mappedBy = "project")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public List<HProjectIteration> getProjectIterations()
{
return projectIterations;
}

public void addIteration(HProjectIteration iteration)
{
projectIterations.add(iteration);
iteration.setProject(this);
}

@Size(max = 80)
@NotEmpty
@Field()
public String getName()
{
return name;
}

public boolean getOverrideLocales()
{
return this.overrideLocales;
}

public boolean getOverrideValidations()
{
return overrideValidations;
}

public boolean isRestrictedByRoles()
{
return restrictedByRoles;
}

@Enumerated(EnumType.STRING)
public ProjectType getDefaultProjectType()
{
return defaultProjectType;
}
private String name;

@Size(max = 100)
@Field()
public String getDescription()
{
return description;
}
private String description;

@Type(type = "text")
public String getHomeContent()
{
return homeContent;
}
private String homeContent;

public String getSourceViewURL()
{
return sourceViewURL;
}
private String sourceViewURL;

public String getSourceCheckoutURL()
{
return sourceCheckoutURL;
}
private String sourceCheckoutURL;

private boolean overrideLocales = false;

private boolean restrictedByRoles = false;

@OneToOne(fetch = FetchType.LAZY, optional = true)
@JoinColumn(name = "default_copy_trans_opts_id")
public HCopyTransOptions getDefaultCopyTransOpts()
{
return defaultCopyTransOpts;
}
private HCopyTransOptions defaultCopyTransOpts;

@ManyToMany
@JoinTable(name = "HProject_Locale", joinColumns = @JoinColumn(name = "projectId"), inverseJoinColumns = @JoinColumn(name = "localeId"))
private Set<HLocale> customizedLocales = Sets.newHashSet();

@Enumerated(EnumType.STRING)
private ProjectType defaultProjectType;

/**
* @see {@link #addMaintainer(HPerson)}
*/
@ManyToMany
@JoinTable(name = "HProject_Maintainer", joinColumns = @JoinColumn(name = "projectId"), inverseJoinColumns = @JoinColumn(name = "personId"))
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public Set<HPerson> getMaintainers()
{
if (maintainers == null)
{
maintainers = new HashSet<HPerson>();
}
return maintainers;
}

public void addMaintainer( HPerson maintainer )
{
this.getMaintainers().add(maintainer);
maintainer.getMaintainerProjects().add(this);
}

@ManyToMany
@JoinTable(name = "HProject_Locale", joinColumns = @JoinColumn(name = "projectId"), inverseJoinColumns = @JoinColumn(name = "localeId"))
public Set<HLocale> getCustomizedLocales()
{
if (customizedLocales == null)
{
customizedLocales = new HashSet<HLocale>();
}
return customizedLocales;
}
private Set<HPerson> maintainers = Sets.newHashSet();

@ManyToMany
@JoinTable(name = "HProject_AllowedRole", joinColumns = @JoinColumn(name = "projectId"), inverseJoinColumns = @JoinColumn(name = "roleId"))
public Set<HAccountRole> getAllowedRoles()
{
if(allowedRoles == null)
{
allowedRoles = new HashSet<HAccountRole>();
}
return allowedRoles;
}
private Set<HAccountRole> allowedRoles;

@JoinTable(name = "HProject_Validation", joinColumns = @JoinColumn(name = "projectId"))
@Type(type = "text")
@ElementCollection(fetch = FetchType.LAZY)
@Column(name = "validation", nullable = false)
public Set<String> getCustomizedValidations()
{
if (customizedValidations == null)
{
customizedValidations = new HashSet<String>();
}
return customizedValidations;
}
@ElementCollection
@JoinTable(name = "HProject_Validation", joinColumns = {@JoinColumn(name = "projectId")})
@MapKeyColumn(name = "validation")
@Column(name = "state", nullable = false)
private Map<String, String> customizedValidations = Maps.newHashMap();

@OneToMany(mappedBy = "project")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
private List<HProjectIteration> projectIterations = Lists.newArrayList();

@Type(type = "entityStatus")
@NotNull
@Override
public EntityStatus getStatus()
private EntityStatus status = EntityStatus.ACTIVE;

public void addIteration(HProjectIteration iteration)
{
projectIterations.add(iteration);
iteration.setProject(this);
}

public void addMaintainer(HPerson maintainer)
{
return status;
this.getMaintainers().add(maintainer);
maintainer.getMaintainerProjects().add(this);
}
}

0 comments on commit 2d27fff

Please sign in to comment.