package elw.vo; import java.util.*; import org.akraievoy.couch.Squab; public class Enrollment extends Squab implements IdNamed, Cloneable { private String id; public String getId() { return id; } public void setId(String id) { this.id = id; } private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } private String groupId; public String getGroupId() { return groupId; } public void setGroupId(String groupId) { this.groupId = groupId; } private String courseId; public String getCourseId() { return courseId; } public void setCourseId(String courseId) { this.courseId = courseId; } private String timeZone; public String getTimeZone() { return timeZone; } public void setTimeZone(String timeZone) { this.timeZone = timeZone; } private SortedMap<String, Class> classes = new TreeMap<String, Class>(); public SortedMap<String, Class> getClasses() { return Collections.unmodifiableSortedMap(classes); } public void setClasses(SortedMap<String, Class> classes) { this.classes.clear(); if (classes != null) { this.classes.putAll(classes); } } private SortedMap<String, IndexEntry> index = new TreeMap<String, IndexEntry>(); public SortedMap<String, IndexEntry> getIndex() { return Collections.unmodifiableSortedMap(index); } public void setIndex(SortedMap<String, IndexEntry> index) { this.index.clear(); if (index != null) { this.index.putAll(index); } } @Override protected String[] pathElems() { return new String[] { groupId, courseId, id }; } public boolean checkOnTime(elw.vo.Stamped stamped) { for (Class aClass : classes.values()) { if (aClass.checkOnTime(stamped)) { return true; } } return false; } public int cmpTotalBudget() { int totalBudget = 0; for (IndexEntry ie : getIndex().values()) { totalBudget += ie.getScoreBudget(); } return totalBudget; } @Override public Enrollment clone() throws CloneNotSupportedException { Enrollment clone = (Enrollment) super.clone(); clone.index = new TreeMap<String, IndexEntry>(); for (Map.Entry<String, IndexEntry> indexEntry : index.entrySet()) { clone.index.put( indexEntry.getKey(), indexEntry.getValue().clone() ); } clone.classes = new TreeMap<String, Class>(); for (Map.Entry<String, Class> classEntry : classes.entrySet()) { clone.classes.put( classEntry.getKey(), classEntry.getValue().clone() ); } return clone; } }