package com.instructure.canvasapi.model;
import android.os.Parcel;
import com.instructure.canvasapi.utilities.APIHelpers;
import java.util.Date;
/**
* Created by Joshua Dutton on 9/5/13.
*
* Copyright (c) 2014 Instructure. All rights reserved.
*/
public class Term extends CanvasModel<Term>{
//currently only part of a course
/*
term: {
id: 1,
name: 'Default Term',
start_at: "2012-06-01T00:00:00-06:00",
end_at: null
}
*/
// Variables from API
private long id;
private String name;
private String start_at;
private String end_at;
// Helper variables
private Date startDate;
private Date endDate;
private boolean isGroupTerm = false;
///////////////////////////////////////////////////////////////////////////
// Getters
///////////////////////////////////////////////////////////////////////////
@Override
public long getId() {
return id;
}
public String getName() {
return name;
}
public Date getStartAt() {
if (startDate == null) {
startDate = APIHelpers.stringToDate(start_at);
}
return startDate;
}
public Date getEndAt() {
if (endDate == null) {
endDate = APIHelpers.stringToDate(end_at);
}
return endDate;
}
///////////////////////////////////////////////////////////////////////////
// Required Overrides
///////////////////////////////////////////////////////////////////////////
@Override
public Date getComparisonDate() {
return getStartAt();
}
@Override
public String getComparisonString() {
return getName();
}
///////////////////////////////////////////////////////////////////////////
// Constructors
///////////////////////////////////////////////////////////////////////////
public Term() {}
public Term(String name) {
this.name = name;
}
public Term(boolean isGroupTerm, String name) {
id = Long.MAX_VALUE;
this.startDate = null;
this.name = name;
this.isGroupTerm = isGroupTerm;
}
@Override
public int compareTo(Term term) {
if (isGroupTerm && term.isGroupTerm) {
return 0;
} else if (isGroupTerm) {
return 1;
} else if (term.isGroupTerm) {
return -1;
}
return ((CanvasComparable)this).compareTo(term);
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(this.id);
dest.writeString(this.name);
dest.writeString(this.start_at);
dest.writeString(this.end_at);
dest.writeLong(startDate != null ? startDate.getTime() : -1);
dest.writeLong(endDate != null ? endDate.getTime() : -1);
dest.writeByte(isGroupTerm ? (byte) 1 : (byte) 0);
}
private Term(Parcel in) {
this.id = in.readLong();
this.name = in.readString();
this.start_at = in.readString();
this.end_at = in.readString();
long tmpStartDate = in.readLong();
this.startDate = tmpStartDate == -1 ? null : new Date(tmpStartDate);
long tmpEndDate = in.readLong();
this.endDate = tmpEndDate == -1 ? null : new Date(tmpEndDate);
this.isGroupTerm = in.readByte() != 0;
}
public static Creator<Term> CREATOR = new Creator<Term>() {
public Term createFromParcel(Parcel source) {
return new Term(source);
}
public Term[] newArray(int size) {
return new Term[size];
}
};
}