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 #138 from zanata/rhbz998825
Browse files Browse the repository at this point in the history
Fix workflow in 'Find User to Add Dialog' in language team : https://bugzilla.redhat.com/show_bug.cgi?id=998825
  • Loading branch information
davidmason committed Aug 22, 2013
2 parents 21fe071 + 8e4167e commit dc28f93
Show file tree
Hide file tree
Showing 2 changed files with 200 additions and 245 deletions.
174 changes: 70 additions & 104 deletions zanata-war/src/main/java/org/zanata/action/LanguageTeamAction.java
Expand Up @@ -24,6 +24,9 @@
import java.util.ArrayList;
import java.util.List;

import lombok.Getter;
import lombok.Setter;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
Expand Down Expand Up @@ -69,39 +72,23 @@ public class LanguageTeamAction implements Serializable
private LocaleService localeServiceImpl;

@In(required = false, value = JpaIdentityStore.AUTHENTICATED_USER)
HAccount authenticatedAccount;
private HAccount authenticatedAccount;

@Logger
Log log;
private Log log;

@Getter
@Setter
private String language;

@Getter
@Setter
private String searchTerm;
private List<SelectablePerson> searchResults;
private boolean selectAll = false;

public String getLanguage()
{
return language;
}

public void setLanguage(String language)
{
this.language = language;
}

public String getSearchTerm()
{
return searchTerm;
}

public void setSearchTerm(String searchTerm)
{
this.searchTerm = searchTerm;
}

public List<SelectablePerson> getSearchResults()
{
if(searchResults == null)
if (searchResults == null)
{
searchResults = new ArrayList<SelectablePerson>();
}
Expand All @@ -111,18 +98,7 @@ public List<SelectablePerson> getSearchResults()

public boolean isUserInTeam()
{
return authenticatedAccount != null && this.isPersonInTeam( this.authenticatedAccount.getId() );
}

public void selectAll()
{
for (SelectablePerson selectablePerson : getSearchResults())
{
if (!isPersonInTeam(selectablePerson.getPerson().getId()))
{
selectablePerson.setSelected(selectAll);
}
}
return authenticatedAccount != null && this.isPersonInTeam(this.authenticatedAccount.getId());
}

@Restrict("#{s:hasPermission(languageTeamAction.locale, 'manage-language-team')}")
Expand All @@ -132,7 +108,8 @@ public void addSelected()
{
if (selectablePerson.isSelected())
{
addTeamMember(selectablePerson.getPerson().getId(), selectablePerson.isTranslator, selectablePerson.isReviewer, selectablePerson.isCoordinator);
addTeamMember(selectablePerson.getPerson().getId(), selectablePerson.isTranslator,
selectablePerson.isReviewer, selectablePerson.isCoordinator);
}
}
}
Expand All @@ -147,7 +124,7 @@ public HLocale getLocale()
* evaluate rules.
*/
HLocale locale = localeServiceImpl.getByLocaleId(new LocaleId(language));
if( locale != null )
if (locale != null)
{
locale.getMembers();
}
Expand All @@ -156,7 +133,7 @@ public HLocale getLocale()

public List<HLocaleMember> getLocaleMembers()
{
return localeMemberDAO.findAllByLocale( new LocaleId(language) );
return localeMemberDAO.findAllByLocale(new LocaleId(language));
}

@Transactional
Expand All @@ -171,11 +148,13 @@ public void joinTribe()
}
try
{
languageTeamServiceImpl.joinOrUpdateRoleInLanguageTeam(this.language, authenticatedAccount.getPerson().getId(), true, true, true);
languageTeamServiceImpl.joinOrUpdateRoleInLanguageTeam(this.language,
authenticatedAccount.getPerson().getId(), true, true, true);
Events.instance().raiseEvent("personJoinedTribe");
log.info("{0} joined tribe {1}", authenticatedAccount.getUsername(), this.language);
// FIXME use localizable string
FacesMessages.instance().add("You are now a member of the {0} language team", getLocale().retrieveNativeName());
FacesMessages.instance()
.add("You are now a member of the {0} language team", getLocale().retrieveNativeName());
}
catch (Exception e)
{
Expand All @@ -199,78 +178,85 @@ public void leaveTribe()
}

@Restrict("#{s:hasPermission(languageTeamAction.locale, 'manage-language-team')}")
public void saveTeamCoordinator( HLocaleMember member )
public void saveTeamCoordinator(HLocaleMember member)
{
this.localeDAO.makePersistent(getLocale());
this.localeDAO.flush();
if( member.isCoordinator() )
if (member.isCoordinator())
{
FacesMessages.instance().add("{0} has been made a Team Coordinator", member.getPerson().getAccount().getUsername());
FacesMessages.instance().add("{0} has been made a Team Coordinator",
member.getPerson().getAccount().getUsername());
}
else
{
FacesMessages.instance().add("{0} has been removed from as Team Coordinators", member.getPerson().getAccount().getUsername());
FacesMessages.instance().add("{0} has been removed from as Team Coordinators",
member.getPerson().getAccount().getUsername());
}
}

@Restrict("#{s:hasPermission(languageTeamAction.locale, 'manage-language-team')}")
public void saveTeamReviewer( HLocaleMember member )
public void saveTeamReviewer(HLocaleMember member)
{
this.localeDAO.makePersistent(getLocale());
this.localeDAO.flush();
if( member.isReviewer() )
if (member.isReviewer())
{
FacesMessages.instance().add("{0} has been made a Team Reviewer", member.getPerson().getAccount().getUsername());
FacesMessages.instance().add("{0} has been made a Team Reviewer",
member.getPerson().getAccount().getUsername());
}
else
{
FacesMessages.instance().add("{0} has been removed from as Team Reviewer", member.getPerson().getAccount().getUsername());
FacesMessages.instance().add("{0} has been removed from as Team Reviewer",
member.getPerson().getAccount().getUsername());
}
}

@Restrict("#{s:hasPermission(languageTeamAction.locale, 'manage-language-team')}")
public void saveTeamTranslator( HLocaleMember member )
public void saveTeamTranslator(HLocaleMember member)
{
this.localeDAO.makePersistent(getLocale());
this.localeDAO.flush();
if( member.isReviewer() )
if (member.isReviewer())
{
FacesMessages.instance().add("{0} has been made a Team Translator", member.getPerson().getAccount().getUsername());
FacesMessages.instance().add("{0} has been made a Team Translator",
member.getPerson().getAccount().getUsername());
}
else
{
FacesMessages.instance().add("{0} has been removed from as Team Translator", member.getPerson().getAccount().getUsername());
FacesMessages.instance().add("{0} has been removed from as Team Translator",
member.getPerson().getAccount().getUsername());
}
}

private void addTeamMember( final Long personId, boolean isTranslator, boolean isReviewer, boolean isCoordinator )
private void addTeamMember(final Long personId, boolean isTranslator, boolean isReviewer, boolean isCoordinator)
{
this.languageTeamServiceImpl.joinOrUpdateRoleInLanguageTeam(this.language, personId, isTranslator, isReviewer, isCoordinator);
this.languageTeamServiceImpl.joinOrUpdateRoleInLanguageTeam(this.language, personId, isTranslator, isReviewer,
isCoordinator);
}

@Restrict("#{s:hasPermission(languageTeamAction.locale, 'manage-language-team')}")
public void removeMembership( HLocaleMember member )
public void removeMembership(HLocaleMember member)
{
this.languageTeamServiceImpl.leaveLanguageTeam(this.language, member.getPerson().getId());
}

public boolean isPersonInTeam( final Long personId )
public boolean isPersonInTeam(final Long personId)
{
for( HLocaleMember lm : getLocale().getMembers() )
for (HLocaleMember lm : getLocale().getMembers())
{
if( lm.getPerson().getId().equals( personId ) )
if (lm.getPerson().getId().equals(personId))
{
return true;
}
}
return false;
}

private HLocaleMember getLocaleMember( final Long personId )
private HLocaleMember getLocaleMember(final Long personId)
{
for( HLocaleMember lm : getLocale().getMembers() )
for (HLocaleMember lm : getLocale().getMembers())
{
if( lm.getPerson().getId().equals( personId ) )
if (lm.getPerson().getId().equals(personId))
{
return lm;
}
Expand All @@ -280,17 +266,17 @@ private HLocaleMember getLocaleMember( final Long personId )

public void searchForTeamMembers()
{
getSearchResults().clear();
List<HPerson> results = this.personDAO.findAllContainingName( this.searchTerm );
for(HPerson person: results)
clearSearchResult();
List<HPerson> results = this.personDAO.findAllContainingName(this.searchTerm);
for (HPerson person : results)
{
HLocaleMember localeMember = getLocaleMember(person.getId());
boolean isMember = localeMember == null ? false : true;
boolean isReviewer = false;
boolean isTranslator = false;
boolean isCoordinator = false;
if(isMember)

if (isMember)
{
isTranslator = localeMember.isTranslator();
isReviewer = localeMember.isReviewer();
Expand All @@ -300,26 +286,30 @@ public void searchForTeamMembers()
}
}

public boolean isSelectAll()
public void clearSearchResult()
{
return selectAll;
}

public void setSelectAll(boolean selectAll)
{
this.selectAll = selectAll;
getSearchResults().clear();
}

public final class SelectablePerson
{
@Getter
private HPerson person;

@Getter
private boolean selected;

@Getter
private boolean isReviewer;

@Getter
private boolean isCoordinator;

@Getter
private boolean isTranslator;

public SelectablePerson(HPerson person, boolean selected, boolean isTranslator, boolean isReviewer, boolean isCoordinator)
public SelectablePerson(HPerson person, boolean selected, boolean isTranslator, boolean isReviewer,
boolean isCoordinator)
{
this.person = person;
this.selected = selected;
Expand All @@ -328,51 +318,27 @@ public SelectablePerson(HPerson person, boolean selected, boolean isTranslator,
this.isTranslator = isTranslator;
}

public boolean isReviewer()
{
return isReviewer;
}

public void setReviewer(boolean isReviewer)
{
this.isReviewer = isReviewer;
}

public boolean isCoordinator()
{
return isCoordinator;
refreshSelected();
}

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

public boolean isTranslator()
{
return isTranslator;
refreshSelected();
}

public void setTranslator(boolean isTranslator)
{
this.isTranslator = isTranslator;
refreshSelected();
}

public HPerson getPerson()
{
return person;
}
public void setPerson(HPerson person)
private void refreshSelected()
{
this.person = person;
}
public boolean isSelected()
{
return selected;
}
public void setSelected(boolean selected)
{
this.selected = selected;
this.selected = isReviewer || isTranslator || isCoordinator;
}
}

Expand Down

0 comments on commit dc28f93

Please sign in to comment.