| /* |
| * 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; |
| } |
| } |