/* * Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ package com.arsdigita.cms; import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.mimetypes.MimeType; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; import java.io.File; import java.io.IOException; /** * Assets are extra content associated with a content item. An image, * for instance, may be an asset of a news article. * * @author Jack Chung * * @version $Revision: #21 $ $DateTime: 2004/08/17 23:15:09 $ * @version $Id: Asset.java 2090 2010-04-17 08:04:14Z pboy $ */ public abstract class Asset extends ContentItem { public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.cms.Asset"; public static final String NAME = "name"; public static final String DESCRIPTION = "description"; public static final String MIME_TYPE = "mimeType"; public Asset() { super(BASE_DATA_OBJECT_TYPE); } /** * Constructor. The contained DataObject is retrieved * from the persistent storage mechanism with an OID * specified by oid. * * @param oid The OID for the retrieved * DataObject. **/ public Asset(OID oid) throws DataObjectNotFoundException { super(oid); } public Asset(DataObject obj) { super(obj); } protected Asset(String type) { super(type); } /** * @return the base PDL object type for this item. Child classes should * override this method to return the correct value */ public String getBaseDataObjectType() { return BASE_DATA_OBJECT_TYPE; } public String getDescription() { return (String) get(DESCRIPTION); } /** * A description of what this asset represents. For example, an * image might have the caption "Happy kids." The description might * say "This is a photo of some happy day-care children playing at * the park by the riverbank." For text assets, the description * could be used to store a short summary of that asset. For * example, if you upload a PDF of a thesis, the description could * be used to store an abstract. * * @param value The description to store **/ public void setDescription(String value) { set(DESCRIPTION, value); } public MimeType getMimeType() { DataObject type = (DataObject) get(MIME_TYPE); if (type == null) { return null; } else { return new MimeType(type); } } public void setMimeType(MimeType value) { setAssociation(MIME_TYPE, value); } /** * Write the content of this asset to a file. * * @param file The file on the server to write to. */ public abstract void writeToFile(File file) throws IOException; }