| /* |
| * 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.intellij.util.xmlb.annotations.Attribute; |
| import org.jetbrains.annotations.NotNull; |
| |
| /** |
| * @author Mikhail Golubev |
| */ |
| public abstract class TrelloModel { |
| public static final String ILLEGAL_ID = "ILLEGAL_ID"; |
| |
| private String id = ILLEGAL_ID; |
| |
| |
| /** |
| * Trello always provides objects IDs as part of its REST responses. But it may still be null |
| * if e.g. object was incorrectly created manually, or it is some kind of stub implementation |
| * as for UNSPECIFIED_BOARD and UNSPECIFIED_LIST in TrelloRepositoryEditor. ILLEGAL_ID |
| * value serves as fallback in such cases. |
| */ |
| @Attribute("id") |
| @NotNull |
| public String getId() { |
| return id; |
| } |
| |
| /** |
| * For serialization purposes only |
| */ |
| public void setId(@NotNull String id) { |
| this.id = id; |
| } |
| |
| /** |
| * Every model has human-readable name |
| */ |
| @NotNull |
| public abstract String getName(); |
| |
| |
| /** |
| * Only for serialization |
| */ |
| public abstract void setName(@NotNull String name); |
| |
| /** |
| * Object can be compared by their unique id. |
| */ |
| @Override |
| public final boolean equals(Object obj) { |
| if (obj == this) return true; |
| if (!(obj instanceof TrelloModel)) return false; |
| TrelloModel model = (TrelloModel) obj; |
| return !id.equals(ILLEGAL_ID) && id.equals(model.id); |
| } |
| |
| @Override |
| public final int hashCode() { |
| return id.hashCode(); |
| } |
| } |