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

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge branch '1.4' of github.com:zanata/zanata into 1.4
  • Loading branch information
Alex Eng committed Oct 13, 2011
2 parents bf93402 + 01fd298 commit ee25bf5
Show file tree
Hide file tree
Showing 45 changed files with 1,588 additions and 102 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -29,6 +29,7 @@ bin/
/*/target/
/*/*/target/
*.orig
.pages.xml.spdia
# eclipse scrapbook page:
*.jpage

Expand Down
Expand Up @@ -36,7 +36,8 @@ public class HApplicationConfiguration extends ModelEntityBase
public static String KEY_HOST = "flies.host";
public static String KEY_REGISTER = "flies.register";
public static String KEY_DOMAIN = "flies.email.domain";
public static String KEY_ADMIN_EMAIL = "flies.admin.email";
public static String KEY_ADMIN_EMAIL = "email.admin.addr";
public static String KEY_EMAIL_FROM_ADDRESS = "email.from.addr";
public static String KEY_HOME_CONTENT = "flies.home.content";
public static String KEY_HELP_CONTENT = "flies.help.content";

Expand Down
Expand Up @@ -40,6 +40,7 @@
import org.hibernate.annotations.IndexColumn;
import org.hibernate.annotations.NaturalId;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.Where;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotEmpty;
Expand All @@ -51,6 +52,7 @@
import org.zanata.common.ContentType;
import org.zanata.model.po.HPoHeader;
import org.zanata.model.po.HPoTargetHeader;
import org.zanata.model.type.ContentTypeType;
import org.zanata.rest.dto.resource.AbstractResourceMeta;
import org.zanata.rest.dto.resource.Resource;
import org.zanata.rest.dto.resource.ResourceMeta;
Expand All @@ -64,6 +66,7 @@
*
*/
@Entity
@TypeDef(name = "contentType", typeClass = ContentTypeType.class)
public class HDocument extends ModelEntityBase implements IDocumentHistory
{

Expand Down
24 changes: 14 additions & 10 deletions server/zanata-model/src/main/java/org/zanata/model/HLocale.java
Expand Up @@ -24,10 +24,12 @@
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;

import org.hibernate.annotations.NaturalId;
import org.hibernate.annotations.Type;
Expand All @@ -45,9 +47,9 @@ public class HLocale extends ModelEntityBase implements Serializable
private static final long serialVersionUID = 1L;
private LocaleId localeId;
private boolean active;
private Set<HPerson> members;
private Set<HProject> supportedProjects;
private Set<HProjectIteration> supportedIterations;
private Set<HLocaleMember> members;


@NaturalId
Expand Down Expand Up @@ -82,17 +84,19 @@ public HLocale(LocaleId localeId)
{
this.localeId = localeId;
}

@ManyToMany
@JoinTable(name = "HLocale_Member", joinColumns = @JoinColumn(name = "supportedLanguageId"), inverseJoinColumns = @JoinColumn(name = "personId"))
public Set<HPerson> getMembers()
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name = "supportedLanguageId")
public Set<HLocaleMember> getMembers()
{
if (members == null)
members = new HashSet<HPerson>();
return members;
if( this.members == null )
{
this.members = new HashSet<HLocaleMember>();
}
return this.members;
}

public void setMembers(Set<HPerson> members)
public void setMembers(Set<HLocaleMember> members)
{
this.members = members;
}
Expand Down
183 changes: 183 additions & 0 deletions server/zanata-model/src/main/java/org/zanata/model/HLocaleMember.java
@@ -0,0 +1,183 @@
/*
* Copyright 2010, Red Hat, Inc. and individual contributors as indicated by the
* @author tags. See the copyright.txt file in the distribution for a full
* listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This software is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this software; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
* site: http://www.fsf.org.
*/
package org.zanata.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;

/**
* @author camunoz@redhat.com
*
*/
@Entity
@Table(name="HLocale_Member")
public class HLocaleMember implements Serializable
{
private static final long serialVersionUID = 1L;

private HLocaleMemberPk id;

private boolean isCoordinator;


public HLocaleMember()
{
this.id = new HLocaleMemberPk();
}

public HLocaleMember( HPerson person, HLocale supportedLanguage, boolean isCoordinator )
{
this();
this.id.setPerson(person);
this.id.setSupportedLanguage(supportedLanguage);
this.setCoordinator(isCoordinator);
}

@EmbeddedId
protected HLocaleMemberPk getId()
{
return id;
}

protected void setId(HLocaleMemberPk id)
{
this.id = id;
}

@Column(name="isCoordinator")
public boolean isCoordinator()
{
return isCoordinator;
}

public void setCoordinator(boolean isCoordinator)
{
this.isCoordinator = isCoordinator;
}

@Transient
public HPerson getPerson()
{
return id.getPerson();
}

public void setPerson(HPerson person)
{
id.setPerson(person);
}

@Transient
public HLocale getSupportedLanguage()
{
return id.getSupportedLanguage();
}

public void setSupportedLanguage(HLocale supportedLanguage)
{
id.setSupportedLanguage(supportedLanguage);
}

@Embeddable
public static class HLocaleMemberPk implements Serializable
{
private static final long serialVersionUID = 1L;

private HPerson person;

private HLocale supportedLanguage;

public HLocaleMemberPk()
{
}

public HLocaleMemberPk(final HPerson person, final HLocale supportedLanguage)
{
this.person = person;
this.supportedLanguage = supportedLanguage;
}

@ManyToOne(fetch=FetchType.EAGER, optional=false)
@JoinColumn(name="personId", nullable=false)
public HPerson getPerson()
{
return person;
}

public void setPerson(HPerson person)
{
this.person = person;
}

@ManyToOne(fetch=FetchType.EAGER, optional=false)
@JoinColumn(name="supportedLanguageId")
public HLocale getSupportedLanguage()
{
return supportedLanguage;
}

public void setSupportedLanguage(HLocale supportedLanguage)
{
this.supportedLanguage = supportedLanguage;
}

@Override
public boolean equals(Object obj)
{
if(obj == null)
{
return false;
}
else if( !(obj instanceof HLocaleMemberPk) )
{
return false;
}
else
{
final HLocaleMemberPk other = (HLocaleMemberPk)obj;
return new EqualsBuilder()
.append(this.person.getId(), other.getPerson().getId())
.append(this.supportedLanguage.getId(), other.getSupportedLanguage().getId())
.isEquals();
}
}

@Override
public int hashCode()
{
return new HashCodeBuilder()
.append(this.person.getId())
.append(this.supportedLanguage.getId())
.toHashCode();
}
}
}
48 changes: 40 additions & 8 deletions server/zanata-model/src/main/java/org/zanata/model/HPerson.java
Expand Up @@ -29,6 +29,7 @@
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Transient;

Expand All @@ -52,8 +53,8 @@ public class HPerson extends ModelEntityBase implements Serializable
private String email;

private Set<HProject> maintainerProjects;

private Set<HLocale> languageMemberships;
private Set<HLocaleMember> languageTeamMemberships;


@NotEmpty
Expand Down Expand Up @@ -113,18 +114,36 @@ public void setMaintainerProjects(Set<HProject> maintainerProjects)
this.maintainerProjects = maintainerProjects;
}

@ManyToMany
@JoinTable(name = "HLocale_Member", joinColumns = @JoinColumn(name = "personId"), inverseJoinColumns = @JoinColumn(name = "supportedLanguageId"))
@Transient
public Set<HLocale> getLanguageMemberships()
{
if (languageMemberships == null)
languageMemberships = new HashSet<HLocale>();
return languageMemberships;
final Set<HLocale> memberships = new HashSet<HLocale>();
for( HLocaleMember locMem : this.languageTeamMemberships )
{
memberships.add( locMem.getSupportedLanguage() );
}
return memberships;
}

public void setLanguageMemberships(Set<HLocale> tribeMemberships)
{
this.languageMemberships = tribeMemberships;

}

@OneToMany
@JoinColumn(name = "personId")
protected Set<HLocaleMember> getLanguageTeamMemberships()
{
if( this.languageTeamMemberships == null )
{
this.languageTeamMemberships = new HashSet<HLocaleMember>();
}
return languageTeamMemberships;
}

protected void setLanguageTeamMemberships(Set<HLocaleMember> languageTeamMemberships)
{
this.languageTeamMemberships = languageTeamMemberships;
}

@Override
Expand Down Expand Up @@ -198,5 +217,18 @@ public boolean isMaintainer(HProject proj)
}
return false;
}

@Transient
public boolean isCoordinator(HLocale locale)
{
// TODO consider implementing business key equality
for (HLocaleMember membership : locale.getMembers())
{
if (membership.getPerson().getId().equals( this.getId() )
&& membership.isCoordinator())
return true;
}
return false;
}

}

0 comments on commit ee25bf5

Please sign in to comment.