/******************************************************************************* * Copyright (c) 2014, Paul Weingardt * 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: * Paul Weingardt - initial API and implementation *******************************************************************************/ package de.weingardt.mylyn.gitlab.core; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.eclipse.core.runtime.CoreException; import org.eclipse.mylyn.tasks.core.TaskRepository; import org.eclipse.mylyn.tasks.core.data.TaskAttribute; import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper; import org.gitlab.api.models.GitlabMilestone; import org.gitlab.api.models.GitlabProjectMember; public class GitlabAttributeMapper extends TaskAttributeMapper { public GitlabAttributeMapper(TaskRepository taskRepository) throws CoreException, IOException { super(taskRepository); } @Override public Map<String, String> getOptions(TaskAttribute attribute) { if(attribute.getId().equals(GitlabAttribute.MILESTONE.getTaskKey())) { return getAsMap(getMilestones()); } else { return super.getOptions(attribute); } } private GitlabConnection getConnection() throws CoreException { return ConnectionManager.get(getTaskRepository()); } public GitlabProjectMember findProjectMemberByName(String name) { try { List<GitlabProjectMember> members = getConnection().getProjectMembers(); for(GitlabProjectMember member : members) { if(member.getName().equals(name) || member.getUsername().equals(name)) { return member; } } } catch (CoreException e) { } return null; } public GitlabMilestone findMilestoneByName(String name) { try { List<GitlabMilestone> milestones = getConnection().getMilestones(); for(GitlabMilestone m : milestones) { if(m.getTitle().equals(name)) { return m; } } } catch (CoreException e) { } return null; } private List<String> getMilestones() { List<String> target = new ArrayList<String>(); try { List<GitlabMilestone> milestones = getConnection().getMilestones(); for(GitlabMilestone m : milestones) { target.add(m.getTitle()); } } catch (CoreException e) { } return target; } private HashMap<String, String> getAsMap(List<String> list) { HashMap<String, String> map = new HashMap<String, String>(); map.put("", ""); for(String s : list) { map.put(s, s); } return map; } }