blob: 4aebd6a673850e6466e3be0195bb62a90fb26ab8 [file] [log] [blame]
/*
* Copyright 2000-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.tasks.trello.model;
import com.google.gson.annotations.SerializedName;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.xmlb.annotations.Attribute;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Date;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import static com.intellij.tasks.trello.model.TrelloLabel.LabelColor;
/**
* @author Mikhail Golubev
*/
@SuppressWarnings("UnusedDeclaration")
public class TrelloCard extends TrelloModel {
public static final String REQUIRED_FIELDS = "closed,desc,idMembers,idBoard,idList,labels,name,url,dateLastActivity";
private String idBoard, idList;
private List<String> idMembers;
private String name;
@SerializedName("desc")
private String description;
private String url;
private boolean closed;
private Date dateLastActivity;
private List<TrelloLabel> labels;
@SerializedName("actions")
private List<TrelloCommentAction> comments = ContainerUtil.emptyList();
/**
* This field is not part of card representation downloaded from server
* and set explicitly in {@code com.intellij.tasks.trello.TrelloRepository}
*/
private boolean isVisible = true;
/**
* Serialization constructor
*/
@SuppressWarnings("UnusedDeclaration")
public TrelloCard() {
}
@Override
public String toString() {
return String.format("TrelloCard(id='%s', name='%s')", getId(), name);
}
@NotNull
public String getIdBoard() {
return idBoard;
}
@NotNull
public String getIdList() {
return idList;
}
@NotNull
public List<String> getIdMembers() {
return idMembers;
}
@NotNull
@Attribute("name")
@Override
public String getName() {
return name;
}
@Override
public void setName(@NotNull String name) {
this.name = name;
}
@NotNull
public String getDescription() {
return description;
}
@NotNull
public String getUrl() {
return url;
}
public boolean isClosed() {
return closed;
}
@NotNull
public List<TrelloLabel> getLabels() {
return labels;
}
@NotNull
public List<TrelloCommentAction> getComments() {
return comments;
}
@NotNull
public Set<LabelColor> getColors() {
if (labels == null || labels.isEmpty()) {
return EnumSet.noneOf(LabelColor.class);
}
return EnumSet.copyOf(ContainerUtil.map(labels, new Function<TrelloLabel, LabelColor>() {
@Override
public LabelColor fun(TrelloLabel label) {
return label.getColor();
}
}));
}
public boolean isVisible() {
return isVisible;
}
public void setVisible(boolean visible) {
isVisible = visible;
}
@Nullable
public Date getDateLastActivity() {
return dateLastActivity;
}
}