// 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.util.Arrays; import java.util.EnumSet; import java.util.Set; import org.eclipse.mylyn.tasks.core.data.TaskAttribute; public enum GiteaAttribute { BODY("Description", TaskAttribute.DESCRIPTION, TaskAttribute.TYPE_LONG_RICH_TEXT), TITLE("Summary", TaskAttribute.SUMMARY, TaskAttribute.TYPE_SHORT_RICH_TEXT), STATUS("Status", TaskAttribute.STATUS, TaskAttribute.TYPE_SHORT_TEXT, GiteaFlag.ATTRIBUTE, GiteaFlag.READ_ONLY), LABELS("Labels", "io.gitea.mylyn.issue.labels", TaskAttribute.TYPE_LONG_TEXT, GiteaFlag.ATTRIBUTE), UPDATED("Updated", TaskAttribute.DATE_MODIFICATION, TaskAttribute.TYPE_DATETIME, GiteaFlag.READ_ONLY, GiteaFlag.ATTRIBUTE), CREATED("Created", TaskAttribute.DATE_CREATION, TaskAttribute.TYPE_DATETIME, GiteaFlag.READ_ONLY, GiteaFlag.ATTRIBUTE), COMPLETED("Completed", TaskAttribute.DATE_COMPLETION, TaskAttribute.TYPE_DATETIME, GiteaFlag.READ_ONLY), DUE_DATE("Due Date", TaskAttribute.DATE_DUE, TaskAttribute.TYPE_DATE, GiteaFlag.ATTRIBUTE), AUTHOR("Author", TaskAttribute.USER_REPORTER, TaskAttribute.TYPE_PERSON, GiteaFlag.READ_ONLY, GiteaFlag.ATTRIBUTE), PROJECT("Project", TaskAttribute.PRODUCT, TaskAttribute.TYPE_SHORT_TEXT, GiteaFlag.READ_ONLY, GiteaFlag.ATTRIBUTE), ASSIGNEE("Assignee", TaskAttribute.USER_ASSIGNED, TaskAttribute.TYPE_PERSON, GiteaFlag.ATTRIBUTE), MILESTONE("Milestone", "io.gitea.mylyn.issue.milestone", TaskAttribute.TYPE_SINGLE_SELECT, GiteaFlag.ATTRIBUTE), IID("IID", TaskAttribute.TASK_KEY, TaskAttribute.TYPE_INTEGER, GiteaFlag.READ_ONLY), PRIORITY("Priority", TaskAttribute.PRIORITY, TaskAttribute.TYPE_SHORT_TEXT, GiteaFlag.READ_ONLY), TYPE("Type", TaskAttribute.TASK_KIND, TaskAttribute.TYPE_SHORT_TEXT, GiteaFlag.READ_ONLY); private Set flags; private final String prettyName; private final String taskKey; private final String type; public String getKind() { if (type.equals(TaskAttribute.TYPE_PERSON)) { return TaskAttribute.KIND_PEOPLE; } else if (flags.contains(GiteaFlag.ATTRIBUTE)) { return TaskAttribute.KIND_DEFAULT; } return null; } public boolean isReadOnly() { return flags.contains(GiteaFlag.READ_ONLY); } GiteaAttribute(String prettyName, String taskKey, String type, GiteaFlag... flags) { this.taskKey = taskKey; this.prettyName = prettyName; this.type = type; if (flags == null || flags.length == 0) { this.setFlags(EnumSet.noneOf(GiteaFlag.class)); } else { this.setFlags(EnumSet.copyOf(Arrays.asList(flags))); } } GiteaAttribute(String prettyName, String taskKey, String type) { this(prettyName, taskKey, type, new GiteaFlag[] {}); } public Set getFlags() { return flags; } public void setFlags(Set flags) { this.flags = flags; } public String getPrettyName() { return prettyName; } public String getTaskKey() { return taskKey; } public String getType() { return type; } public String toString() { return this.prettyName; } public static GiteaAttribute get(String key) { for (GiteaAttribute attr : GiteaAttribute.values()) { if (attr.getTaskKey().equals(key)) { return attr; } } return null; } }