mylyn-gitea/io.gitea.mylyn.core/src/io/gitea/mylyn/core/GiteaAttribute.java

117 lines
3.6 KiB
Java

// 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<GiteaFlag> 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<GiteaFlag> getFlags() {
return flags;
}
public void setFlags(Set<GiteaFlag> 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;
}
}