58703fd809d3408765b7cb2c5601bf2dabe44d73
[idea/community.git] / python / educational-core / student / src / com / jetbrains / edu / learning / courseFormat / AnswerPlaceholderSubtaskInfo.java
1 package com.jetbrains.edu.learning.courseFormat;
2
3 import com.google.gson.annotations.Expose;
4 import com.google.gson.annotations.SerializedName;
5 import com.intellij.openapi.diagnostic.Logger;
6 import com.intellij.util.xmlb.annotations.Transient;
7 import org.jetbrains.annotations.NotNull;
8 import org.jetbrains.annotations.Nullable;
9
10 import java.util.ArrayList;
11 import java.util.Collections;
12 import java.util.List;
13
14 public class AnswerPlaceholderSubtaskInfo {
15   private static final Logger LOG = Logger.getInstance(AnswerPlaceholderSubtaskInfo.class);
16   @SerializedName("hint")
17   @Expose private String myHint = "";
18
19   @SerializedName("additional_hints")
20   @Expose private List<String> myAdditionalHints = new ArrayList<>();
21
22   @SerializedName("possible_answer")
23   @Expose private String possibleAnswer = "";
24
25   @Expose private String myPlaceholderText;
26
27   private String myAnswer = "";
28   private boolean mySelected = false;
29   private StudyStatus myStatus = StudyStatus.Unchecked;
30   @Expose private boolean myHasFrame = true;
31   @Expose private boolean myNeedInsertText = false;
32
33   public StudyStatus getStatus() {
34     return myStatus;
35   }
36
37   public void setStatus(StudyStatus status) {
38     myStatus = status;
39   }
40
41   @Transient
42   public List<String> getHints() {
43     if (myHint.isEmpty() && myAdditionalHints.isEmpty()) return Collections.emptyList();
44     final ArrayList<String> result = new ArrayList<>();
45     result.add(myHint);
46     result.addAll(myAdditionalHints);
47     return result;
48   }
49
50   @Transient
51   public void setHints(@NotNull final List<String> hints) {
52     if (hints.isEmpty()) {
53       myHint = "";
54       myAdditionalHints.clear();
55     }
56     else {
57       myHint = hints.get(0);
58       myAdditionalHints = hints.subList(1, hints.size());
59     }
60   }
61
62   public void addHint(@NotNull final String text) {
63     if (myHint.isEmpty() && myAdditionalHints.isEmpty()) {
64       myHint = text;
65     }
66     else {
67       myAdditionalHints.add(text);
68     }
69   }
70
71   public void removeHint(int i) {
72     if (i == 0) {
73       myHint = "";
74     }
75     else {
76       if (i - 1 <myAdditionalHints.size()) {
77         myAdditionalHints.remove(i - 1);
78       }
79       else {
80         LOG.warn("Trying to remove nonexistent hint. Hint to remove number: " + (i - 1) + "number of hints: " + getHints().size());
81       }
82     }
83   }
84
85   @NotNull
86   public List<String> getAdditionalHints() {
87     return myAdditionalHints;
88   }
89
90   public void setAdditionalHints(@Nullable final List<String> additionalHints) {
91     myAdditionalHints = additionalHints;
92   }
93
94   public String getPossibleAnswer() {
95     return possibleAnswer;
96   }
97
98   public void setPossibleAnswer(String possibleAnswer) {
99     this.possibleAnswer = possibleAnswer;
100   }
101
102   public String getPlaceholderText() {
103     return myPlaceholderText;
104   }
105
106   public void setPlaceholderText(String placeholderText) {
107     myPlaceholderText = placeholderText;
108   }
109
110   public String getHint() {
111     return myHint;
112   }
113
114   public void setHint(String hint) {
115     myHint = hint;
116   }
117
118   public boolean getSelected() {
119     return mySelected;
120   }
121
122   public void setSelected(boolean selected) {
123     mySelected = selected;
124   }
125
126   public boolean isHasFrame() {
127     return myHasFrame;
128   }
129
130   public void setHasFrame(boolean hasFrame) {
131     myHasFrame = hasFrame;
132   }
133
134   public boolean isNeedInsertText() {
135     return myNeedInsertText;
136   }
137
138   public void setNeedInsertText(boolean needInsertText) {
139     myNeedInsertText = needInsertText;
140   }
141
142   public String getAnswer() {
143     return myAnswer;
144   }
145
146   public void setAnswer(String answer) {
147     myAnswer = answer;
148   }
149 }