added opportunity to create task files of all supported file types
[idea/community.git] / python / educational / course-creator / src / com / jetbrains / edu / coursecreator / format / Course.java
1 package com.jetbrains.edu.coursecreator.format;
2
3 import com.google.gson.annotations.Expose;
4 import com.intellij.psi.PsiDirectory;
5 import org.jetbrains.annotations.NotNull;
6
7 import java.util.*;
8
9 public class Course {
10   @Expose private List<Lesson> lessons = new ArrayList<Lesson>();
11   @Expose private String description;
12
13   @Expose private String name;
14   @Expose private String author;
15
16   @Expose private String language;
17
18   private Map<String, Lesson> myLessonsMap = new HashMap<String, Lesson>();
19
20   public Map<String, Lesson> getLessonsMap() {
21     return myLessonsMap;
22   }
23
24   public Lesson getLesson(@NotNull final String name) {
25     return myLessonsMap.get(name);
26   }
27
28   public Course() {
29   }
30
31   public Course(@NotNull final String name, @NotNull final String author, @NotNull final String description) {
32     this.description = description;
33     this.name = name;
34     this.author = author;
35   }
36
37   public List<Lesson> getLessons() {
38     return lessons;
39   }
40
41   public void addLesson(@NotNull final Lesson lesson, @NotNull final PsiDirectory directory) {
42     lessons.add(lesson);
43     myLessonsMap.put(directory.getName(), lesson);
44   }
45
46   public String getName() {
47     return name;
48   }
49
50   public String getDescription() {
51     return description;
52   }
53
54   public void init() {
55     lessons.clear();
56     for (Lesson lesson: myLessonsMap.values()) {
57       lessons.add(lesson);
58       lesson.init();
59     }
60     Collections.sort(lessons);
61   }
62
63   public String getAuthor() {
64     return author;
65   }
66
67   public void setAuthor(String author) {
68     this.author = author;
69   }
70
71   public void setName(String name) {
72     this.name = name;
73   }
74
75   public void setDescription(String description) {
76     this.description = description;
77   }
78
79   public void setLessons(List<Lesson> lessons) {
80     this.lessons = lessons;
81   }
82
83   public void setLessonsMap(Map<String, Lesson> lessonsMap) {
84     myLessonsMap = lessonsMap;
85   }
86
87   public String getLanguage() {
88     return language;
89   }
90
91   public void setLanguage(String language) {
92     this.language = language;
93   }
94 }