/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-hibernate/src/java/org/sakaiproject/tool/assessment/data/dao/questionpool/QuestionPoolData.java $ * $Id: QuestionPoolData.java 106463 2012-04-02 12:20:09Z david.horwitz@uct.ac.za $ *********************************************************************************** * * Copyright (c) 2004, 2005, 2006, 2007, 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.questionpool; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.HashSet; import java.util.Set; import org.sakaiproject.tool.assessment.data.ifc.questionpool.QuestionPoolDataIfc; import org.sakaiproject.tool.assessment.data.ifc.questionpool.QuestionPoolItemIfc; import org.sakaiproject.tool.assessment.data.ifc.shared.AgentDataIfc; import org.sakaiproject.tool.assessment.data.ifc.shared.TypeIfc; /** * DOCUMENTATION PENDING * * @author $author$ * @version $Id: QuestionPoolData.java 106463 2012-04-02 12:20:09Z david.horwitz@uct.ac.za $ */ public class QuestionPoolData implements Serializable, QuestionPoolDataIfc, Cloneable { /** Use serialVersionUID for interoperability. */ private static final long serialVersionUID = 9180085666292824370L; public static final Long ACCESS_DENIED = Long.valueOf(30); public static final Long READ_ONLY = Long.valueOf(31); public static final Long READ_COPY = Long.valueOf(32); public static final Long READ_WRITE = Long.valueOf(33); public static final Long ADMIN = Long.valueOf(34); public static final Long DEFAULT_TYPEID = Long.valueOf(0); public static final Long DEFAULT_INTELLECTUAL_PROPERTYID = Long.valueOf(0); public static final Long ROOT_POOL = Long.valueOf(0); private Long questionPoolId; private String title; private String description; private Long parentPoolId = ROOT_POOL; private String ownerId = null; private AgentDataIfc owner; private Date dateCreated; private Date lastModified; private String lastModifiedById; private AgentDataIfc lastModifiedBy; private Long accessTypeId = null; private TypeIfc accessType; private String objectives; private String keywords; private String rubric; private Long typeId; private TypeIfc type; private Long intellectualPropertyId; private String organizationName; private Set questionPoolItems; private Collection items = new ArrayList(); private Integer subPoolSize; public QuestionPoolData(){ } /** * This is a cheap object created for holding just the Id & title. This is * used by the pulldown list in authoring when we only need the Id & title * and nothing else. This object is not used for persistence. * @param poolId * @param title */ public QuestionPoolData(Long poolId, String title){ this.questionPoolId= poolId; this.title = title; } public QuestionPoolData(Long poolId, String title, Long parentPoolId){ this.questionPoolId= poolId; this.parentPoolId=parentPoolId; this.title = title; } public Long getQuestionPoolId() { return questionPoolId; } public void setQuestionPoolId(Long questionPoolId) { this.questionPoolId = questionPoolId; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } // added to faciliate Hibernate POJO requirement, parentPool is not part of the orginal // QuestionPoolProperties. Will see if I can make it part of it later - daisyf on 8/25/04 public Long getParentPoolId() { return parentPoolId; } // added to faciliate Hibernate POJO requirement - daisyf on 8/25/04 public void setParentPoolId(Long parentPoolId) { this.parentPoolId = parentPoolId; } // added to faciliate Hibernate POJO requirement - daisyf on 8/25/04 public String getOwnerId() { return ownerId; } // added to faciliate Hibernate POJO requirement - daisyf on 8/25/04 public void setOwnerId(String ownerId) { this.ownerId = ownerId; } public AgentDataIfc getOwner() { return owner; } // added to faciliate Hibernate POJO requirement - daisyf on 8/25/04 public void setOwner(AgentDataIfc owner) { this.owner = owner; } /** * DOCUMENTATION PENDING * * @return DOCUMENTATION PENDING */ public Date getDateCreated() { return dateCreated; } /** * DOCUMENTATION PENDING * * @param dateCreated DOCUMENTATION PENDING */ public void setDateCreated(Date dateCreated) { this.dateCreated = dateCreated; } /** * DOCUMENTATION PENDING * * @return DOCUMENTATION PENDING */ public Date getLastModified() { return lastModified; } /** * DOCUMENTATION PENDING * * @param lastModified DOCUMENTATION PENDING */ public void setLastModified(Date lastModified) { this.lastModified = lastModified; } public String getLastModifiedById() { return lastModifiedById; } public void setLastModifiedById(String lastModifiedById) { this.lastModifiedById = lastModifiedById; } public AgentDataIfc getLastModifiedBy() { return lastModifiedBy; } public void setLastModifiedBy(AgentDataIfc lastModifiedBy) { this.lastModifiedBy = lastModifiedBy; } /** * DOCUMENTATION PENDING * * @return DOCUMENTATION PENDING */ // added to faciliate Hibernate POJO requirement - daisyf on 8/25/04 public Long getAccessTypeId() { return this.accessTypeId; } // added to faciliate Hibernate POJO requirement, also for getting the Type without // making a trip to the DB - daisyf on 8/25/04 public void setAccessTypeId(Long accessTypeId) { this.accessTypeId = accessTypeId; } public TypeIfc getAccessType() { return this.accessType; } public void setAccessType(TypeIfc accessType) { this.accessType = accessType; } /** * DOCUMENTATION PENDING * * @return DOCUMENTATION PENDING */ public String getObjectives() { return objectives; } /** * DOCUMENTATION PENDING * * @param objectives DOCUMENTATION PENDING */ public void setObjectives(String objectives) { this.objectives = objectives; } /** * DOCUMENTATION PENDING * * @return DOCUMENTATION PENDING */ public String getKeywords() { return keywords; } /** * DOCUMENTATION PENDING * * @param newKeywords DOCUMENTATION PENDING */ public void setKeywords(String keywords) { this.keywords = keywords; } /** * DOCUMENTATION PENDING * * @return DOCUMENTATION PENDING */ public String getRubric() { return rubric; } /** * DOCUMENTATION PENDING * * @param rubric DOCUMENTATION PENDING */ public void setRubric(String rubric) { this.rubric = rubric; } // added to faciliate Hibernate POJO requirement - daisyf on 8/25/04 public Long getTypeId() { return typeId; } // added to faciliate Hibernate POJO requirement, also for getting the Type // without making a trip to the DB - daisyf on 8/25/04 public void setTypeId(Long typeId) { this.typeId = typeId; } public TypeIfc getType() { return this.type; } public void setType(TypeIfc type) { this.type = type; } /** * DOCUMENTATION PENDING * * @return DOCUMENTATION PENDING */ public Long getIntellectualPropertyId() { return intellectualPropertyId; } /** * DOCUMENTATION PENDING * * @param intellectualProperty DOCUMENTATION PENDING */ public void setIntellectualPropertyId(Long intellectualPropertyId) { this.intellectualPropertyId = intellectualPropertyId; } public void setIntellectualProperty(String intellectualProperty) { setIntellectualPropertyId(new Long(intellectualProperty)); } /** * DOCUMENTATION PENDING * * @return DOCUMENTATION PENDING */ public String getOrganizationName() { return organizationName; } /** * DOCUMENTATION PENDING * * @param organizationName DOCUMENTATION PENDING */ public void setOrganizationName(String organizationName) { this.organizationName = organizationName; } // added to faciliate Hibernate POJO requirement - daisyf on 8/25/04 public Set getQuestionPoolItems() { return questionPoolItems; } // added to faciliate Hibernate POJO requirement - daisyf on 8/25/04 public void setQuestionPoolItems(Set questionPoolItems) { this.questionPoolItems = questionPoolItems; } public void addQuestionPoolItem(QuestionPoolItemIfc questionPoolItem){ questionPoolItems.add(questionPoolItem); } /** * DOCUMENTATION PENDING * * @return an ArrayList of org.sakaiproject.tool.assessment.data.dao.ItemData */ public Collection getQuestions() { return items; } /** * DOCUMENTATION PENDING * * @param newItems DOCUMENTATION PENDING */ public void setQuestions(Collection items) { this.items = items; } // for JSF, sigh - daisyf public Integer getQuestionSize() { return Integer.valueOf(items.size()); } // for JSF, sigh - daisyf public void setSubPoolSize(Integer subPoolSize) { this.subPoolSize = subPoolSize; } // for JSF, sigh - daisyf public Integer getSubPoolSize() { return subPoolSize; } public Object clone(){ QuestionPoolData newQ = new QuestionPoolData(); newQ.setQuestionPoolId(questionPoolId); newQ.setTitle(title); newQ.setDescription(description); newQ.setParentPoolId(parentPoolId); newQ.setOwnerId(ownerId); newQ.setOwner(owner); newQ.setDateCreated(dateCreated); newQ.setLastModified(lastModified); newQ.setLastModifiedById(lastModifiedById); newQ.setLastModifiedBy(lastModifiedBy); newQ.setAccessTypeId(accessTypeId); newQ.setAccessType(accessType); newQ.setObjectives(objectives); newQ.setKeywords(keywords); newQ.setRubric(rubric); newQ.setTypeId(typeId); newQ.setType(type); newQ.setIntellectualPropertyId(intellectualPropertyId); newQ.setOrganizationName(organizationName); return newQ; } public Integer getQuestionPoolItemSize() { return Integer.valueOf(questionPoolItems.size()); } }