/**
* Copyright 2013 Apereo Foundation Licensed under the
* Educational Community License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may
* obtain a copy of the License at
*
* http://opensource.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an "AS IS"
* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package org.sakaiproject.gradebook.entity;
import java.util.List;
/**
* Represents a course (really a site) in Sakai
* Allows for better control over the data being input and output (than the core Sakai classes)
*
* @author Aaron Zeckoski (azeckoski @ gmail.com) (azeckoski @ vt.edu) (azeckoski @ unicon.net)
*/
public class Course {
public String id;
public String title;
public String description;
/**
* This is the timecode (seconds) of the time when this course was created
*/
private long createdTime;
public boolean published;
public List<Student> students = null;
public Course(String id, String title) {
this(id, title, null);
}
public Course(String id, String title, String description) {
this(id, title, description, (System.currentTimeMillis() / 1000), true);
}
/**
* @param id the course id
* @param title the title
* @param description
* @param createdTime the timecode (seconds) of the time when this course was created (not in milliseconds)
* @param published true if the course is published/available to students, false otherwise
*/
public Course(String id, String title, String description, long createdTime, boolean published) {
this.id = id;
this.title = title;
this.description = description;
if (createdTime > (System.currentTimeMillis() / 1000)) {
// must have used the milliseconds version instead
createdTime = (createdTime / 1000);
}
this.createdTime = createdTime;
this.published = published;
}
@Override
public String toString() {
return id + ":" + title;
}
public String getId() {
return id;
}
public String getTitle() {
return title;
}
public String getDescription() {
return description;
}
/**
* NOTE: This is the unix timecode in seconds and NOT the milliseconds returned in java normally
*
* @return the unix timecode (seconds) when this course was created
*/
public long getCreatedTime() {
return createdTime;
}
public boolean isPublished() {
return published;
}
public List<Student> getStudents() {
return students;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Course other = (Course) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}