blob: da775aab3fa84c49e54950305c831af56d618701 [file] [log] [blame]
package com.intellij.tasks.mantis;
import com.intellij.tasks.Comment;
import com.intellij.tasks.Task;
import com.intellij.tasks.TaskRepository;
import com.intellij.tasks.TaskType;
import com.intellij.tasks.mantis.model.IssueData;
import com.intellij.tasks.mantis.model.IssueHeaderData;
import com.intellij.tasks.mantis.model.IssueNoteData;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import icons.TasksIcons;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.Date;
public class MantisTask extends Task {
private final String myId;
private final String mySummary;
private final String myDescription;
private final Date myUpdated;
private final Date myCreated;
private final boolean myClosed;
private String myProjectName;
private MantisRepository myRepository;
private final Comment[] myComments;
public MantisTask(@NotNull IssueData data, @NotNull MantisRepository repository) {
myRepository = repository;
myId = String.valueOf(data.getId());
mySummary = data.getSummary();
myDescription = data.getDescription();
myProjectName = data.getProject() == null ? null : data.getProject().getName();
myClosed = data.getStatus().getId().intValue() >= 90;
myCreated = data.getDate_submitted().getTime();
myUpdated = data.getLast_updated().getTime();
if (data.getNotes() == null) {
myComments = Comment.EMPTY_ARRAY;
}
else {
myComments = ContainerUtil.map2Array(data.getNotes(), Comment.class, new Function<IssueNoteData, Comment>() {
@Override
public Comment fun(final IssueNoteData data) {
return new Comment() {
@Override
public String getText() {
return data.getText();
}
@Nullable
@Override
public String getAuthor() {
return data.getReporter().getName();
}
@Nullable
@Override
public Date getDate() {
return data.getDate_submitted().getTime();
}
};
}
});
}
}
public MantisTask(@NotNull IssueHeaderData header, @NotNull MantisRepository repository) {
myRepository = repository;
myId = String.valueOf(header.getId());
mySummary = header.getSummary();
myProjectName = null;
myClosed = header.getStatus().intValue() >= 90;
myDescription = null; // unavailable from header
myCreated = null; // unavailable from header
myUpdated = header.getLast_updated().getTime();
myComments = Comment.EMPTY_ARRAY;
}
@NotNull
@Override
public String getId() {
return myId;
}
@NotNull
@Override
public String getSummary() {
return mySummary;
}
@Nullable
@Override
public String getDescription() {
return myDescription;
}
@NotNull
@Override
public Comment[] getComments() {
return myComments;
}
@NotNull
@Override
public Icon getIcon() {
return TasksIcons.Mantis;
}
@NotNull
@Override
public TaskType getType() {
return TaskType.OTHER;
}
@Nullable
@Override
public Date getUpdated() {
return myUpdated;
}
@Nullable
@Override
public Date getCreated() {
return myCreated;
}
@Override
public boolean isClosed() {
return myClosed;
}
@Override
public boolean isIssue() {
return true;
}
@Override
public String getIssueUrl() {
return myRepository.getUrl() + "/view.php?id=" + getId();
}
@Override
public TaskRepository getRepository() {
return myRepository;
}
@Nullable
@Override
public String getProject() {
return myProjectName;
}
@NotNull
@Override
public String getNumber() {
return getId();
}
}