/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/content/trunk/content-tool/tool/src/java/org/sakaiproject/content/tool/ResourcesItem.java $ * $Id: ResourcesItem.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $ *********************************************************************************** * * Copyright (c) 2007, 2008 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.content.tool; import java.util.Collection; import java.util.Hashtable; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeSet; import java.util.Vector; import org.sakaiproject.content.api.ContentCollection; import org.sakaiproject.content.api.ContentEntity; import org.sakaiproject.content.api.ContentResource; import org.sakaiproject.content.api.ResourceToolActionPipe; import org.sakaiproject.content.api.GroupAwareEntity.AccessMode; import org.sakaiproject.entity.api.EntityPropertyNotDefinedException; import org.sakaiproject.entity.api.EntityPropertyTypeException; import org.sakaiproject.entity.api.ResourceProperties; import org.sakaiproject.exception.ServerOverloadException; import org.sakaiproject.time.api.Time; public class ResourcesItem { protected byte[] content; protected String contentType; protected String resourceType; protected boolean collection = false; protected AccessMode accessMode = AccessMode.INHERITED; protected String createdBy; protected Time createdTime; protected String displayName; protected String entityId; protected String collectionId; protected String siteCollectionId; protected Set groups; protected String modifiedBy; protected Time modifiedTime; protected Map propertyValues = new Hashtable(); protected int prioritySortOrder; protected Time retractDate; protected String uuid; protected int version; protected boolean hasPrioritySort = false; protected boolean hidden = false; protected Time releaseDate; protected int notification; protected boolean hasQuota = false; protected boolean canSetQuota = false; protected String quota; protected String description; protected boolean useReleaseDate; protected boolean useRetractDate; protected String copyrightStatus; protected String copyrightInfo; protected boolean copyrightAlert = false; /** * @param entityId * @param collectionId * @param propertyValues * @param resourceType */ public ResourcesItem(String entityId, String collectionId, String resourceType, Map propertyValues) { super(); this.entityId = entityId; this.collectionId = collectionId; this.resourceType = resourceType; if(propertyValues != null) { this.propertyValues.putAll(propertyValues); } } public ResourcesItem(ContentEntity entity) { ResourceProperties props = entity.getProperties(); this.accessMode = entity.getAccess(); //this.canSetQuota = //this.collection = this.collectionId = entity.getContainingCollection().getId(); this.createdBy = props.getProperty(ResourceProperties.PROP_CREATOR); this.modifiedBy = props.getProperty(ResourceProperties.PROP_MODIFIED_BY); this.entityId = entity.getId(); try { this.createdTime = props.getTimeProperty(ResourceProperties.PROP_CREATION_DATE); this.modifiedTime = props.getTimeProperty(ResourceProperties.PROP_MODIFIED_DATE); } catch (EntityPropertyNotDefinedException e1) { // TODO Auto-generated catch block ResourcesAction.logger.warn("EntityPropertyNotDefinedException for createdTime or modifiedTime of " + this.entityId); } catch (EntityPropertyTypeException e1) { // TODO Auto-generated catch block ResourcesAction.logger.warn("EntityPropertyTypeException for createdTime or modifiedTime of " + this.entityId); } this.displayName = props.getProperty(ResourceProperties.PROP_DISPLAY_NAME); this.description = props.getProperty(ResourceProperties.PROP_DESCRIPTION); this.groups = new TreeSet( entity.getGroupObjects() ); // this.hasQuota = this.hidden = entity.isHidden(); // this.notification = entity. // this.prioritySortOrder = props.getLongProperty() // this.propertyValues = props; // this.quota = this.releaseDate = entity.getReleaseDate(); this.retractDate = entity.getRetractDate(); this.useReleaseDate = (this.releaseDate != null); this.useRetractDate = (this.retractDate != null); this.resourceType = entity.getResourceType(); // this.siteCollectionId = // this.version if(entity.isCollection()) { ContentCollection collection = (ContentCollection) entity; // this.hasPrioritySort = collection.; this.collection = true; } else { this.collection = false; ContentResource resource = (ContentResource) entity; try { this.content = resource.getContent(); } catch (ServerOverloadException e) { // TODO Auto-generated catch block ResourcesAction.logger.warn("ServerOverloadException ", e); } this.copyrightStatus = props.getProperty(ResourceProperties.PROP_COPYRIGHT_CHOICE); this.copyrightInfo = props.getProperty(ResourceProperties.PROP_COPYRIGHT); String crAlert = props.getProperty(ResourceProperties.PROP_COPYRIGHT_ALERT); if(crAlert != null && Boolean.TRUE.toString().equalsIgnoreCase(crAlert)) { this.copyrightAlert = true; } else { this.copyrightAlert = false; } // this.uuid = resource. } } public ResourcesItem(String entityId, String collectionId, String resourceType, ResourceToolActionPipe pipe) { super(); this.entityId = entityId; this.collectionId = collectionId; this.resourceType = resourceType; this.content = pipe.getContent(); this.propertyValues.putAll(pipe.getRevisedResourceProperties()); if(pipe.getRevisedMimeType() == null) { // this.propertyValues.remove(ResourceProperties.PROP_CONTENT_TYPE); } else { this.propertyValues.put(ResourceProperties.PROP_CONTENT_TYPE, pipe.getRevisedMimeType()); } } public void update(ResourceToolActionPipe pipe) { // TODO: update the ResourcesItem based on the pipe } /** * @return the useRetractDate */ public boolean useRetractDate() { return this.useRetractDate; } /** * @param useRetractDate the useRetractDate to set */ public void setUseRetractDate(boolean useRetractDate) { this.useRetractDate = useRetractDate; } /** * @return the useReleaseDate */ public boolean useReleaseDate() { return this.useReleaseDate; } /** * @param useReleaseDate the useReleaseDate to set */ public void setUseReleaseDate(boolean useReleaseDate) { this.useReleaseDate = useReleaseDate; } /** * @return the description */ public String getDescription() { return this.description; } /** * @param description the description to set */ public void setDescription(String description) { this.description = description; } /** * @return the accessMode */ public AccessMode getAccessMode() { return this.accessMode; } /** * @param accessMode the accessMode to set */ public void setAccessMode(AccessMode accessMode) { this.accessMode = accessMode; } /** * @return the canSetQuota */ public boolean isCanSetQuota() { return this.canSetQuota; } /** * @param canSetQuota the canSetQuota to set */ public void setCanSetQuota(boolean canSetQuota) { this.canSetQuota = canSetQuota; } /** * @return the collection */ public boolean isCollection() { return this.collection; } /** * @param collection the collection to set */ public void setCollection(boolean collection) { this.collection = collection; } /** * @return the collectionId */ public String getCollectionId() { return this.collectionId; } /** * @param collectionId the collectionId to set */ public void setCollectionId(String collectionId) { this.collectionId = collectionId; } /** * @return the content */ public byte[] getContent() { return this.content; } /** * @param content the content to set */ public void setContent(byte[] content) { this.content = content; } /** * @return the createdBy */ public String getCreatedBy() { return this.createdBy; } /** * @param createdBy the createdBy to set */ public void setCreatedBy(String createdBy) { this.createdBy = createdBy; } /** * @return the createdTime */ public Time getCreatedTime() { return this.createdTime; } /** * @param createdTime the createdTime to set */ public void setCreatedTime(Time createdTime) { this.createdTime = createdTime; } /** * @return the displayName */ public String getDisplayName() { return this.displayName; } /** * @param displayName the displayName to set */ public void setDisplayName(String displayName) { this.displayName = displayName; } /** * @return the entityId */ public String getEntityId() { return this.entityId; } /** * @param entityId the entityId to set */ public void setEntityId(String entityId) { this.entityId = entityId; } /** * @return the groups */ public Set getGroups() { return this.groups; } /** * @param groups the groups to set */ public void setGroups(Set groups) { this.groups = groups; } /** * @return the hasPrioritySort */ public boolean hasPrioritySort() { return this.hasPrioritySort; } /** * @param hasPrioritySort the hasPrioritySort to set */ public void setHasPrioritySort(boolean hasPrioritySort) { this.hasPrioritySort = hasPrioritySort; } /** * @return the hasQuota */ public boolean hasQuota() { return this.hasQuota; } /** * @param hasQuota the hasQuota to set */ public void setHasQuota(boolean hasQuota) { this.hasQuota = hasQuota; } /** * @return the hidden */ public boolean isHidden() { return this.hidden; } /** * @param hidden the hidden to set */ public void setHidden(boolean hidden) { this.hidden = hidden; } /** * @return the modifiedBy */ public String getModifiedBy() { return this.modifiedBy; } /** * @param modifiedBy the modifiedBy to set */ public void setModifiedBy(String modifiedBy) { this.modifiedBy = modifiedBy; } /** * @return the modifiedTime */ public Time getModifiedTime() { return this.modifiedTime; } /** * @param modifiedTime the modifiedTime to set */ public void setModifiedTime(Time modifiedTime) { this.modifiedTime = modifiedTime; } /** * @return the notification */ public int getNotification() { return this.notification; } /** * @param notification the notification to set */ public void setNotification(int notification) { this.notification = notification; } /** * @return the prioritySortOrder */ public int getPrioritySortOrder() { return this.prioritySortOrder; } /** * @param prioritySortOrder the prioritySortOrder to set */ public void setPrioritySortOrder(int prioritySortOrder) { this.prioritySortOrder = prioritySortOrder; } /** * @param name * @return */ public String getPropertyValue(String name) { String rv = null; Object value = this.propertyValues.get(name); if(value == null) { // do nothing, return null } else if (value instanceof String) { rv = (String) value; } else if (value instanceof List) { List list = (List) value; if(list.isEmpty()) { // do nothing, return null } else { rv = (String) list.get(0); } } return rv; } /** * @param name * @return */ public List getPropertyValues(String name) { List rv = new Vector(); Object value = this.propertyValues.get(name); if(value == null) { // do nothing, return empty list } else if (value instanceof String) { rv.add(value); } else if (value instanceof List) { rv.addAll((Collection) value); } return rv; } /** * @param name * @param value */ public void setPropertyValue(String name, List value) { this.propertyValues.put(name, value); } /** * @param name * @param index * @param value */ public void setPropertyValue(String name, int index, String value) { Object obj = this.propertyValues.get(name); if(obj != null && obj instanceof List) { List list = (List) obj; if(index < 0) { // throw exception?? } else if(index < list.size()) { list.add(index, value); } else if(index == list.size()) { list.add(value); } else { // throw exception?? } } else { if(index > 0) { // throw exception?? } else { List list = new Vector(); this.propertyValues.put(name, list); list.add(value); } } } /** * @return the propertyValues */ public Map getPropertyValues() { return this.propertyValues; } /** * @param propertyValues the propertyValues to set */ public void setPropertyValues(Map propertyValues) { this.propertyValues = propertyValues; } /** * @return the quota */ public String getQuota() { return this.quota; } /** * @param quota the quota to set */ public void setQuota(String quota) { this.quota = quota; } /** * @return the releaseDate */ public Time getReleaseDate() { return this.releaseDate; } /** * @param releaseDate the releaseDate to set */ public void setReleaseDate(Time releaseDate) { this.releaseDate = releaseDate; } /** * @return the resourceType */ public String getResourceType() { return this.resourceType; } /** * @param resourceType the resourceType to set */ public void setResourceType(String resourceType) { this.resourceType = resourceType; } /** * @return the retractDate */ public Time getRetractDate() { return this.retractDate; } /** * @param retractDate the retractDate to set */ public void setRetractDate(Time retractDate) { this.retractDate = retractDate; } /** * @return the siteCollectionId */ public String getSiteCollectionId() { return this.siteCollectionId; } /** * @param siteCollectionId the siteCollectionId to set */ public void setSiteCollectionId(String siteCollectionId) { this.siteCollectionId = siteCollectionId; } /** * @return the uuid */ public String getUuid() { return this.uuid; } /** * @param uuid the uuid to set */ public void setUuid(String uuid) { this.uuid = uuid; } /** * @return the version */ public int getVersion() { return this.version; } /** * @param version the version to set */ public void setVersion(int version) { this.version = version; } /** * @return the copyrightAlert */ public boolean hasCopyrightAlert() { return copyrightAlert; } /** * @param copyrightAlert the copyrightAlert to set */ public void setCopyrightAlert(boolean copyrightAlert) { this.copyrightAlert = copyrightAlert; } /** * @return the copyrightInfo */ public String getCopyrightInfo() { return copyrightInfo; } /** * @param copyrightInfo the copyrightInfo to set */ public void setCopyrightInfo(String copyrightInfo) { this.copyrightInfo = copyrightInfo; } /** * @return the copyrightStatus */ public String getCopyrightStatus() { return copyrightStatus; } /** * @param copyrightStatus the copyrightStatus to set */ public void setCopyrightStatus(String copyrightStatus) { this.copyrightStatus = copyrightStatus; } /** * @return the contentType */ public String getContentType() { return contentType; } /** * @param contentType the contentType to set */ public void setContentType(String contentType) { this.contentType = contentType; } }