package uk.ac.ox.oucs.vle.resources;
import org.codehaus.jackson.map.annotate.JsonView;
import uk.ac.ox.oucs.vle.CourseCategory;
import uk.ac.ox.oucs.vle.CourseComponent;
import uk.ac.ox.oucs.vle.CourseGroup;
import uk.ac.ox.oucs.vle.Person;
import uk.ac.ox.oucs.vle.resources.Views.*;
import java.util.List;
/**
* This Mixin is so that we can annotate the CourseGroup interface without having the annotations in the main
* API as that forces the whole of Jackson into the shared classloader which we want to avoid. This mixin
* allows a shallow output of the object tree, without walking all the nodes.
*/
public abstract class CourseGroupMixin implements CourseGroup {
@Override
@JsonView(Flat.class)
public abstract int getMuid();
@Override
@JsonView(Flat.class)
public abstract String getCourseId();
@Override
@JsonView(Flat.class)
public abstract String getTitle();
@Override
@JsonView(Flat.class)
public abstract String getDescription();
@Override
@JsonView(Flat.class)
public abstract String getDepartment();
@Override
@JsonView(Flat.class)
public abstract String getDepartmentCode();
@Override
@JsonView(Flat.class)
public abstract String getSubUnit();
@Override
@JsonView(Flat.class)
public abstract String getSubUnitCode();
@Override
@JsonView(Flat.class)
public abstract boolean getSupervisorApproval();
@Override
@JsonView(Flat.class)
public abstract boolean getAdministratorApproval();
@Override
@JsonView(Flat.class)
public abstract boolean getHideGroup();
@Override
@JsonView(Flat.class)
public abstract String getContactEmail();
@Override
@JsonView(Flat.class)
public abstract String getVisibility();
@Override
@JsonView(Flat.class)
public abstract String getPrerequisite();
@Override
@JsonView(Flat.class)
public abstract String getRegulations();
@Override
@JsonView(Flat.class)
public abstract String getSource();
@Override
public abstract List<CourseComponent> getComponents();
@Override
public abstract List<CourseCategory> getCategories();
@Override
public abstract List<CourseCategory> getCategories(CategoryType categoryType);
@Override
public abstract List<Person> getAdministrators();
@Override
public abstract List<Person> getSuperusers();
@Override
@JsonView(Flat.class)
public abstract List<String> getOtherDepartments();
@Override
@JsonView(Flat.class)
public abstract boolean getIsAdmin();
@Override
@JsonView(Flat.class)
public abstract boolean getIsSuperuser();
}