/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-hibernate/src/java/org/sakaiproject/tool/assessment/data/dao/assessment/PublishedSectionData.java $
* $Id: PublishedSectionData.java 106463 2012-04-02 12:20:09Z david.horwitz@uct.ac.za $
***********************************************************************************
*
* Copyright (c) 2004, 2005, 2006, 2008, 2009 The Sakai 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://www.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.tool.assessment.data.dao.assessment;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
//import java.util.Random;
import java.util.Set;
import org.apache.log4j.Category;
//import org.sakaiproject.tool.assessment.data.dao.shared.TypeD;
import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentIfc;
import org.sakaiproject.tool.assessment.data.ifc.assessment.ItemDataIfc;
import org.sakaiproject.tool.assessment.data.ifc.assessment.SectionAttachmentIfc;
import org.sakaiproject.tool.assessment.data.ifc.assessment.SectionDataIfc;
import org.sakaiproject.tool.assessment.data.ifc.shared.TypeIfc;
//import org.sakaiproject.tool.assessment.facade.AgentFacade;
//import org.sakaiproject.tool.assessment.facade.TypeFacadeQueriesAPI;
//import org.sakaiproject.tool.assessment.services.PersistenceService;
public class PublishedSectionData
implements java.io.Serializable, SectionDataIfc, Comparable{
static Category errorLogger = Category.getInstance("errorLogger");
private static final long serialVersionUID = 7526471155622776147L;
public static final Integer ACTIVE_STATUS = Integer.valueOf(1);
public static final Integer INACTIVE_STATUS = Integer.valueOf(0);
public static final Integer ANY_STATUS = Integer.valueOf(2);
private Long id;
private Long assessmentId;
private AssessmentIfc assessment;
private Integer duration;
private Integer sequence;
private String title;
private String description;
private Long typeId;
private Integer status;
private String createdBy;
private Date createdDate;
private String lastModifiedBy;
private Date lastModifiedDate;
private Set itemSet;
private Set sectionMetaDataSet;
private HashMap sectionMetaDataMap;
private Set sectionAttachmentSet;
public PublishedSectionData() {}
public PublishedSectionData(Integer duration, Integer sequence,
String title, String description,
Long typeId, Integer status,
String createdBy, Date createdDate,
String lastModifiedBy, Date lastModifiedDate){
this.duration = duration;
this.sequence = sequence;
this.title = title;
this.description = description;
this.typeId = typeId;
this.status = status;
this.createdBy = createdBy;
this.createdDate = createdDate;
this.lastModifiedBy = lastModifiedBy;
this.lastModifiedDate = lastModifiedDate;
}
public Long getSectionId() {
return this.id;
}
public void setSectionId(Long id) {
this.id = id;
}
public Long getAssessmentId() {
return this.assessmentId;
}
public void setAssessmentId(Long assessmentId) {
this.assessmentId = assessmentId;
}
public void setAssessment(AssessmentIfc assessment)
{
this.assessment = assessment;
}
public AssessmentIfc getAssessment()
{
return assessment;
}
/**
public AssessmentDataIfc getAssessment()
{
return (AssessmentDataIfc)assessment;
}
*/
public Integer getDuration() {
return this.duration;
}
public void setDuration(Integer duration) {
this.duration = duration;
}
public Integer getSequence() {
return this.sequence;
}
public void setSequence(Integer sequence) {
this.sequence = sequence;
}
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return this.description;
}
public void setDescription(String description) {
this.description = description;
}
public Long getTypeId() {
return this.typeId;
}
public void setTypeId(Long typeId) {
this.typeId = typeId;
}
public Integer getStatus() {
return this.status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getCreatedBy() {
return this.createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public Date getCreatedDate() {
return this.createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
public String getLastModifiedBy() {
return this.lastModifiedBy;
}
public void setLastModifiedBy(String lastModifiedBy) {
this.lastModifiedBy = lastModifiedBy;
}
public Date getLastModifiedDate() {
return this.lastModifiedDate;
}
public void setLastModifiedDate(Date lastModifiedDate) {
this.lastModifiedDate = lastModifiedDate;
}
public Set getItemSet() {
return itemSet;
}
public void setItemSet(Set itemSet) {
this.itemSet = itemSet;
}
public Set getSectionMetaDataSet() {
return sectionMetaDataSet;
}
public void setSectionMetaDataSet(Set param) {
this.sectionMetaDataSet= param;
this.sectionMetaDataMap = getSectionMetaDataMap(sectionMetaDataSet);
}
public HashMap getSectionMetaDataMap(Set metaDataSet) {
HashMap metaDataMap = new HashMap();
if (metaDataSet != null){
for (Iterator i = metaDataSet.iterator(); i.hasNext(); ) {
PublishedSectionMetaData metaData = (PublishedSectionMetaData) i.next();
metaDataMap.put(metaData.getLabel(), metaData.getEntry());
}
}
return metaDataMap;
}
public void addSectionMetaData(String label, String entry) {
if (this.sectionMetaDataSet== null) {
setSectionMetaDataSet(new HashSet());
this.sectionMetaDataMap= new HashMap();
}
this.sectionMetaDataMap.put(label, entry);
this.sectionMetaDataSet.add(new SectionMetaData(this, label, entry));
}
public ArrayList getItemArray() {
ArrayList list = new ArrayList();
Iterator iter = itemSet.iterator();
while (iter.hasNext()){
list.add(iter.next());
}
return list;
}
public String getSectionMetaDataByLabel(String label) {
return (String)this.sectionMetaDataMap.get(label);
}
public ArrayList getItemArraySortedForGrading() {
// this returns all items, used for grading
ArrayList list = getItemArray();
Collections.sort(list);
return list;
}
public void addItem(ItemDataIfc item) {
if (itemSet == null)
itemSet = new HashSet();
itemSet.add((ItemData) item);
}
private void writeObject(java.io.ObjectOutputStream out) throws IOException {
out.defaultWriteObject();
}
private void readObject(java.io.ObjectInputStream in) throws IOException,
ClassNotFoundException {
in.defaultReadObject();
}
public TypeIfc getType() {
/*
TypeFacadeQueriesAPI typeFacadeQueries = PersistenceService.getInstance().getTypeFacadeQueries();
TypeIfc type = typeFacadeQueries.getTypeFacadeById(this.typeId);
TypeD typeD = new TypeD(type.getAuthority(), type.getDomain(),
type.getKeyword(), type.getDescription());
typeD.setTypeId(this.typeId);
return typeD;
*/
return null;
}
public int compareTo(Object o) {
PublishedSectionData a = (PublishedSectionData)o;
return sequence.compareTo(a.sequence);
}
public Set getSectionAttachmentSet() {
return sectionAttachmentSet;
}
public void setSectionAttachmentSet(Set sectionAttachmentSet) {
this.sectionAttachmentSet = sectionAttachmentSet;
}
public List getSectionAttachmentList() {
ArrayList list = new ArrayList();
if (sectionAttachmentSet != null){
Iterator iter = sectionAttachmentSet.iterator();
while (iter.hasNext()){
SectionAttachmentIfc a = (SectionAttachmentIfc)iter.next();
list.add(a);
}
}
return list;
}
}