org.eclipse.skalli.model.ext.scrum.internal.ScrumRoleProvider.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.skalli.model.ext.scrum.internal.ScrumRoleProvider.java

Source

/*******************************************************************************
 * Copyright (c) 2010-2014 SAP AG and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     SAP AG - initial API and implementation
 *******************************************************************************/
package org.eclipse.skalli.model.ext.scrum.internal;

import java.text.MessageFormat;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;

import org.apache.commons.lang.StringUtils;
import org.eclipse.skalli.commons.CollectionUtils;
import org.eclipse.skalli.model.Member;
import org.eclipse.skalli.model.Project;
import org.eclipse.skalli.model.ext.scrum.ScrumProjectExt;
import org.eclipse.skalli.services.role.RoleProviderBase;
import org.osgi.service.component.ComponentConstants;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ScrumRoleProvider extends RoleProviderBase {
    private static final Logger LOG = LoggerFactory.getLogger(ScrumRoleProvider.class);

    private static final String ROLE_SM = "scrummaster"; //$NON-NLS-1$
    private static final String ROLE_PO = "productowner"; //$NON-NLS-1$

    protected void activate(ComponentContext context) {
        LOG.info(MessageFormat.format("[RoleService][scrum] {0} : activated",
                (String) context.getProperties().get(ComponentConstants.COMPONENT_NAME)));
    }

    protected void deactivate(ComponentContext context) {
        LOG.info(MessageFormat.format("[RoleService][scrum] {0} : deactivated",
                (String) context.getProperties().get(ComponentConstants.COMPONENT_NAME)));
    }

    private static final Set<String> SUPPORTED_ROLES = CollectionUtils.asSet(ROLE_SM, ROLE_PO);

    @Override
    public Set<String> getSupportedRoles() {
        return SUPPORTED_ROLES;
    }

    @Override
    public Map<String, SortedSet<Member>> getMembersByRole(Project project) {
        Map<String, SortedSet<Member>> ret = new HashMap<String, SortedSet<Member>>();
        if (project != null) {
            ScrumProjectExt ext = project.getExtension(ScrumProjectExt.class);
            if (ext == null) {
                return Collections.emptyMap();
            }
            ret.put(ROLE_SM, ext.getScrumMasters());
            ret.put(ROLE_PO, ext.getProductOwners());
        }
        return ret;
    }

    @Override
    public SortedSet<Member> getMembers(Project project) {
        TreeSet<Member> result = new TreeSet<Member>();
        if (project != null) {
            ScrumProjectExt ext = project.getExtension(ScrumProjectExt.class);
            if (ext == null) {
                return result;
            }
            result.addAll(ext.getScrumMasters());
            SortedSet<Member> set = ext.getProductOwners();
            result.addAll(set);
        }
        return result;
    }

    @Override
    public boolean addMember(Project project, Member person, String role) {
        if (project == null || !SUPPORTED_ROLES.contains(role)) {
            return false;
        }
        if (project.isInherited(ScrumProjectExt.class)) {
            return false;
        }
        ScrumProjectExt ext = project.getExtension(ScrumProjectExt.class);
        if (ext == null) {
            ext = new ScrumProjectExt();
            project.addExtension(ext);
        }
        if (StringUtils.equalsIgnoreCase(role, ROLE_SM)) {
            ext.addScrumMaster(person);
        } else {
            ext.addProductOwner(person);
        }
        return true;
    }
}