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

Fix workflow in 'Find User to Add Dialog' in language team : https://bugzilla.redhat.com/show_bug.cgi?id=998825 #138

Merged
merged 5 commits into from
Aug 22, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
174 changes: 70 additions & 104 deletions zanata-war/src/main/java/org/zanata/action/LanguageTeamAction.java
Original file line number Diff line number Diff line change
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