Package org.zanata.service.impl

Source Code of org.zanata.service.impl.LanguageTeamServiceImpl

package org.zanata.service.impl;

import java.util.List;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.zanata.common.LocaleId;
import org.zanata.dao.LocaleDAO;
import org.zanata.dao.LocaleMemberDAO;
import org.zanata.dao.PersonDAO;
import org.zanata.exception.ZanataServiceException;
import org.zanata.model.HLocale;
import org.zanata.model.HLocaleMember;
import org.zanata.model.HLocaleMember.HLocaleMemberPk;
import org.zanata.model.HPerson;
import org.zanata.service.LanguageTeamService;

@Name("languageTeamServiceImpl")
@Scope(ScopeType.STATELESS)
public class LanguageTeamServiceImpl implements LanguageTeamService {
    private PersonDAO personDAO;

    private LocaleDAO localeDAO;

    private LocaleMemberDAO localeMemberDAO;

    @In
    public void setPersonDAO(PersonDAO personDAO) {
        this.personDAO = personDAO;
    }

    @In
    public void setLocaleDAO(LocaleDAO localeDAO) {
        this.localeDAO = localeDAO;
    }

    @In
    public void setLocaleMemberDAO(LocaleMemberDAO localeMemberDAO) {
        this.localeMemberDAO = localeMemberDAO;
    }

    public List<HLocale> getLanguageMemberships(String userName) {
        return personDAO.getLanguageMembershipByUsername(userName);
    }

    public void joinOrUpdateRoleInLanguageTeam(String locale, Long personId,
            boolean isTranslator, boolean isReviewer, boolean isCoordinator)
            throws ZanataServiceException {
        LocaleId localeId = new LocaleId(locale);
        HPerson currentPerson = personDAO.findById(personId, false);

        boolean alreadyJoined =
                localeMemberDAO.isLocaleMember(personId, localeId);
        HLocaleMember localeMember;
        if (!alreadyJoined) {
            if (currentPerson.getLanguageMemberships().size() >= MAX_NUMBER_MEMBERSHIP) {
                throw new ZanataServiceException(
                        "You can only be a member of up to "
                                + MAX_NUMBER_MEMBERSHIP
                                + " languages at one time.");
            }
            HLocale lang = localeDAO.findByLocaleId(localeId);
            localeMember =
                    new HLocaleMember(currentPerson, lang, isTranslator,
                            isReviewer, isCoordinator);
            lang.getMembers().add(localeMember);
        } else {
            localeMember =
                    localeMemberDAO.findByPersonAndLocale(personId, localeId);
            localeMember.setTranslator(isTranslator);
            localeMember.setReviewer(isReviewer);
            localeMember.setCoordinator(isCoordinator);
        }
        localeMemberDAO.makePersistent(localeMember);
        localeMemberDAO.flush();
    }

    public boolean leaveLanguageTeam(String locale, Long personId) {
        HLocale lang = localeDAO.findByLocaleId(new LocaleId(locale));
        HPerson currentPerson = personDAO.findById(personId, false);
        final HLocaleMember membership =
                localeMemberDAO.findById(new HLocaleMemberPk(currentPerson,
                        lang), true);

        if (membership != null) {
            localeMemberDAO.makeTransient(membership);
            lang.getMembers().remove(membership);
            localeMemberDAO.flush();
            return true;
        }

        return false;
    }

    @Override
    public boolean isUserReviewer(Long personId) {
        return !localeMemberDAO.findByPersonWithReviewerRole(personId)
                .isEmpty();
    }
}
TOP

Related Classes of org.zanata.service.impl.LanguageTeamServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.