// Copyright (c) 2021, Fr.Terrot. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. package io.gitea.mylyn.core; import java.io.IOException; import java.util.ArrayList; import java.util.Date; 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 io.gitea.model.GiteaDateTimeUtils; import io.gitea.model.Label; import io.gitea.model.Milestone; import io.gitea.model.User; public class GiteaAttributeMapper extends TaskAttributeMapper { public GiteaAttributeMapper(TaskRepository taskRepository) throws CoreException, IOException { super(taskRepository); } @Override public Map getOptions(TaskAttribute attribute) { if (attribute.getId().equals(GiteaAttribute.MILESTONE.getTaskKey())) { return getAsMap(getMilestones()); } else { return super.getOptions(attribute); } } private GiteaConnection getConnection() throws CoreException { return ConnectionManager.get(getTaskRepository()); } @Override public Date getDateValue(TaskAttribute attribute) { if (attribute == null) { return null; } Date parsedDate = GiteaDateTimeUtils.parseDate(attribute.getValue()); if (parsedDate != null) { return parsedDate; } return super.getDateValue(attribute); } public User findProjectMemberByName(String name) { try { List members = getConnection().getRepositoryCollaborators(); for (User member : members) { if (member.getFullName().equals(name) || member.getLogin().equals(name)) { return member; } } } catch (CoreException e) { } return null; } public Milestone findMilestoneByName(String name) { try { List milestones = getConnection().getMilestones(); for (Milestone m : milestones) { if (m.getTitle().equals(name)) { return m; } } } catch (CoreException e) { } return null; } private List getMilestones() { List target = new ArrayList(); try { List milestones = getConnection().getMilestones(); for (Milestone m : milestones) { target.add(m.getTitle()); } } catch (CoreException e) { } return target; } public List