ConvertedSection.java

package edu.ucsb.cs156.courses.documents;

import com.fasterxml.jackson.annotation.JsonIgnore;
import edu.ucsb.cs156.courses.entities.EnrollmentDataPoint;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.core.mapping.Document;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "courses")
public class ConvertedSection {
  private ObjectId _id;
  private CourseInfo courseInfo;
  private Section section;

  @Override
  public Object clone() throws CloneNotSupportedException {

    ConvertedSection newConvertedSection = new ConvertedSection();

    newConvertedSection.set_id(this._id);

    CourseInfo newCourseInfo = (CourseInfo) this.getCourseInfo().clone();
    newConvertedSection.setCourseInfo(newCourseInfo);

    Section newSection = (Section) this.getSection().clone();
    newConvertedSection.setSection(newSection);

    return newConvertedSection;
  }

  @JsonIgnore
  public EnrollmentDataPoint getEnrollmentDataPoint() {
    EnrollmentDataPoint edp =
        EnrollmentDataPoint.builder()
            .yyyyq(this.getCourseInfo().getQuarter())
            .enrollCd(this.getSection().getEnrollCode())
            .enrollment(this.getSection().getEnrolledTotal())
            .courseId(this.getCourseInfo().getCourseId())
            .section(this.getSection().getSection())
            .build();
    return edp;
  }

  public static class ConvertedSectionSortDescendingByQuarterComparator
      implements java.util.Comparator<ConvertedSection> {
    @Override
    public int compare(ConvertedSection o1, ConvertedSection o2) {
      return o2.getCourseInfo().getQuarter().compareTo(o1.getCourseInfo().getQuarter());
    }
  }
}