You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
e1fueg0_intellij-gitea-plugin/src/biz/elfuego/idea/issues/gitea/GiteaTaskImpl.java

121 lines
2.7 KiB

/*
* Copyright © 2018 by elfuego.biz
*/
package biz.elfuego.idea.issues.gitea;
import biz.elfuego.idea.issues.gitea.model.GiteaProject;
import biz.elfuego.idea.issues.gitea.model.GiteaTask;
import biz.elfuego.idea.issues.gitea.util.Consts;
import com.intellij.openapi.util.IconLoader;
import com.intellij.tasks.Comment;
import com.intellij.tasks.Task;
import com.intellij.tasks.TaskRepository;
import com.intellij.tasks.TaskType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.Date;
/**
* @author Roman Pedchenko <elfuego@elfuego.biz>
* @date 2018.06.30
*/
public class GiteaTaskImpl extends Task implements Comparable<GiteaTaskImpl> {
private GiteaProject project;
private GiteaRepository repository;
private Comment[] comments;
GiteaTask task;
GiteaTaskImpl(@NotNull GiteaRepository repository, @NotNull GiteaTask task) {
this.repository = repository;
this.task = task;
this.project = task.getProject();
}
@NotNull
@Override
public String getId() {
return task.getId();
}
@NotNull
@Override
public String getSummary() {
return task.getTitle();
}
@Nullable
@Override
public String getDescription() {
return task.getDescription();
}
@NotNull
@Override
public Comment[] getComments() {
if (comments == null) {
try {
comments = repository.getComments(this);
} catch(Exception ignored) {}
if (comments == null)
comments = new Comment[0];
}
return comments;
}
@NotNull
@Override
public Icon getIcon() {
return IconLoader.getIcon("/resources/gitea.png");
}
@NotNull
@Override
public TaskType getType() {
return TaskType.OTHER;
}
@Nullable
@Override
public Date getUpdated() {
return task.getUpdatedAt();
}
@Nullable
@Override
public Date getCreated() {
return task.getCreatedAt();
}
@Override
public boolean isClosed() {
return Consts.States.CLOSED.name().toLowerCase().equals(task.getState());
}
@Override
public boolean isIssue() {
return true;
}
@Nullable
@Override
public TaskRepository getRepository() {
return repository;
}
@Nullable
@Override
public String getIssueUrl() {
return repository.getUrl() + "/" + project.getName() + Consts.EndPoint.ISSUES + "/" + task.getId();
}
@Override
public int compareTo(@NotNull GiteaTaskImpl o) {
int me = Integer.parseInt(this.task.getId());
int them = Integer.parseInt(o.task.getId());
return Integer.compare(me, them);
}
}