ContentInfo.java :  » Web-Framework » rife-1.6.1 » com » uwyn » rife » cmf » Java Open Source

Java Open Source » Web Framework » rife 1.6.1 
rife 1.6.1 » com » uwyn » rife » cmf » ContentInfo.java
/*
 * Copyright 2001-2007 Geert Bevin <gbevin[remove] at uwyn dot com>
 * Distributed under the terms of either:
 * - the common development and distribution license (CDDL), v1.0; or
 * - the GNU Lesser General Public License, v2.1 or later
 * $Id: ContentInfo.java 3634 2007-01-08 21:42:24Z gbevin $
 */
package com.uwyn.rife.cmf;

import com.uwyn.rife.site.ConstrainedProperty;
import com.uwyn.rife.site.Validation;
import com.uwyn.rife.tools.Localization;
import java.sql.Timestamp;
import java.text.NumberFormat;
import java.util.Map;

/**
 * This class represents all the information that is stored in the backend
 * about a certain {@link com.uwyn.rife.cmf.Content Content} instance.
 * <p>The setters of this class are only present to make it possible for the
 * back-ends to automatically populate the information.
 *
 * @author Geert Bevin (gbevin[remove] at uwyn dot com)
 * @version $Revision: 3634 $
 * @since 1.0
 */
public class ContentInfo extends Validation
{
  private String              mPath = null;
  private int                 mVersion = -1;
  private Timestamp           mCreated = null;
  private String              mMimeType = null;
  private boolean             mFragment = false;
  private String              mName = null;
  private Map<String, String> mAttributes = null;
  private int                 mSize = -1;
  private Map<String, String> mProperties = null;
  
  /**
   * Instantiates a new <code>ContentInfo</code> instance.
   */
  public ContentInfo()
  {
  }
  
  public void activateValidation()
  {
    addConstraint(new ConstrainedProperty("path")
            .notNull(true)
            .notEmpty(true)
            .maxLength(255));
    addConstraint(new ConstrainedProperty("mimeType")
            .notNull(true)
            .notEmpty(true)
            .maxLength(80));
    addConstraint(new ConstrainedProperty("version")
            .notNull(true)
            .rangeBegin(0)
            .saved(false));
    addConstraint(new ConstrainedProperty("name")
            .maxLength(100));
    addConstraint(new ConstrainedProperty("created")
            .notNull(true)
            .saved(false));
    addConstraint(new ConstrainedProperty("attributes")
            .persistent(false));
    addConstraint(new ConstrainedProperty("size")
            .persistent(false));
    addConstraint(new ConstrainedProperty("properties")
            .persistent(false));
  }
  
  /**
   * Sets the path of the stored <code>Content</code> instance.
   * <p>The path has to be unique and will be used to retrieve this
   * particular <code>Content</code>.
   *
   * @param path the absolute and unique path
   * @see #getPath()
   * @since 1.0
   */
  public void setPath(String path)
  {
    mPath = path;
  }
  
  /**
   * Retrieves the path of the stored <code>Content</code> instance.
   *
   * @return the <code>Content</code>'s path
   * @see #setPath(String)
   * @see #getOptimalPath()
   * @since 1.0
   */
  public String getPath()
  {
    return mPath;
  }
  
  /**
   * Retrieves the path of the stored <code>Content</code> instance in the
   * most optimal form for usage in the cmf.
   *
   * @return the <code>Content</code>'s most optimal path
   * @see #getPath()
   * @since 1.0
   */
  public String getOptimalPath()
  {
    if (null == mPath)
    {
      return null;
    }
    
    if (null == mName)
    {
      return mPath;
    }
    
    StringBuilder result = new StringBuilder(mPath);
    result.append("/");
    result.append(mName);
    return result.toString();
  }
  
  /**
   * Sets the version of the stored <code>Content</code> instance.
   * <p>Version numbers are unique and should be increased successively when
   * the data on a certain <code>Content</code> is updated.
   * <p>The path and the version together identify exactly one particular
   * <code>Content</code> with one particular data.
   *
   * @param version the version as a unique integer
   * @see #getVersion()
   * @since 1.0
   */
  public void setVersion(int version)
  {
    mVersion = version;
  }
  
  /**
   * Retrieves the version of the stored <code>Content</code> instance.
   *
   * @return the <code>Content</code>'s version
   * @see #setVersion(int)
   * @since 1.0
   */
  public int getVersion()
  {
    return mVersion;
  }
  
  /**
   * Sets the mime type of the stored <code>Content</code> instance.
   *
   * @param mimeType the <code>String</code> that identifies the mime type
   * @see #getMimeType()
   * @since 1.0
   */
  public void setMimeType(String mimeType)
  {
    mMimeType = mimeType;
  }
  
  /**
   * Retrieves the mime type of the stored <code>Content</code> instance.
   *
   * @return the <code>Content</code>'s mime type textual identifier
   * @see #setMimeType(String)
   * @since 1.0
   */
  public String getMimeType()
  {
    return mMimeType;
  }
  
  /**
   * Sets wether the stored <code>Content</code> instance is a fragment or
   * not.
   *
   * @param fragment <code>true</code> if it's a fragment; or
   * <p><code>false</code> otherwise
   * @see #isFragment()
   * @since 1.0
   */
  public void setFragment(boolean fragment)
  {
    mFragment = fragment;
  }
  
  /**
   * Retrieves wether the stored <code>Content</code> instance is a fragment
   * or not.
   *
   * @return <code>true</code> if it's a fragment; or
   * <p><code>false</code> otherwise
   * @see #setFragment(boolean)
   * @since 1.0
   */
  public boolean isFragment()
  {
    return mFragment;
  }
  
  /**
   * Sets the name of the stored <code>Content</code> instance.
   *
   * @param name the name
   * @see #getName()
   * @see #hasName()
   * @since 1.0
   */
  public void setName(String name)
  {
    mName = name;
  }
  
  /**
   * Retrieves the name of the stored <code>Content</code> instance.
   *
   * @return <code>null</code> if the stored <code>Content</code> instance
   * has no name; or
   * <p>the name of the content
   * @see #setName(String)
   * @see #hasName()
   * @since 1.0
   */
  public String getName()
  {
    return mName;
  }
  
  /**
   * Indicates whether the stored <code>Content</code> instance has a name.
   *
   * @return <code>true</code> if it has a name; or
   * <p><code>false</code> otherwise
   * @see #setName(String)
   * @see #getName()
   * @since 1.0
   */
  public boolean hasName()
  {
    return mName != null;
  }
  
  /**
   * Sets the moment when the <code>Content</code> instance was stored.
   *
   * @param created the moment of creation
   * @see #getCreated()
   * @since 1.0
   */
  public void setCreated(Timestamp created)
  {
    mCreated = created;
  }
  
  /**
   * Retrieves the moment when the <code>Content</code> instance was stored.
   *
   * @return the moment of creation
   * @see #setCreated(Timestamp)
   * @since 1.0
   */
  public Timestamp getCreated()
  {
    return mCreated;
  }
  
  /**
   * Sets the attributes map of the stored <code>Content</code> instance.
   *
   * @param attributes the attributes map with <code>String</code> keys and
   * value.
   * @see #getAttributes()
   * @since 1.0
   */
  public void setAttributes(Map<String, String> attributes)
  {
    mAttributes = attributes;
  }
  
  /**
   * Retrieves the attributes map of the stored <code>Content</code>
   * instance.
   *
   * @return the attributes map
   * @see #setAttributes(Map)
   * @since 1.0
   */
  public Map<String, String> getAttributes()
  {
    return mAttributes;
  }
  
  /**
   * Indicates whether named content attributes are present.
   *
   * @return <code>true</code> if named content attributes are present; or
   * <p><code>false</code> otherwise
   * @see #setAttributes(Map)
   * @see #getAttributes()
   * @since 1.0
   */
  public boolean hasAttributes()
  {
    return mAttributes != null && mAttributes.size() > 0;
  }
  
  /**
   * Indicates whether a specific named content attribute is present.
   *
   * @param name the name of the attribute
   * @return <code>true</code> if the name content attribute is present; or
   * <p><code>false</code> otherwise
   * @see #getAttribute(String)
   * @since 1.0
   */
  public boolean hasAttribute(String name)
  {
    if (null == mAttributes)
    {
      return false;
    }
    
    return mAttributes.containsKey(name);
  }
  
  /**
   * Retrieves the value of a named content attribute.
   *
   * @param name the name of the attribute
   * @return the value of the named content attribute; or
   * <p><code>null</code> if no such attribute could be found
   * @see #hasAttribute(String)
   * @since 1.0
   */
  public String getAttribute(String name)
  {
    if (null == mAttributes)
    {
      return null;
    }
    
    return mAttributes.get(name);
  }
  
  /**
   * Sets the size of the stored <code>Content</code> instance.
   *
   * @param size the size of the cotent data
   * @see #getSize()
   * @since 1.0
   */
  public void setSize(int size)
  {
    mSize = size;
  }
  
  /**
   * Retrieves the size of the stored <code>Content</code> instance.
   *
   * @return the <code>Content</code>'s size
   * @see #setSize(int)
   * @see #getFormattedSize()
   * @since 1.0
   */
  public int getSize()
  {
    return mSize;
  }
  
  /**
   * Retrieves the size of the stored <code>Content</code> instance as a
   * formatted string.
   *
   * @return the <code>Content</code>'s formatted size
   * @see #getSize()
   * @since 1.0
   */
  public String getFormattedSize()
  {
    NumberFormat format = NumberFormat.getNumberInstance(Localization.getLocale());
    double size = getSize();
    double size_kb = size / 1024;
    if (size_kb >= 1024)
    {
      double size_mb = size_kb / 1024;
      if (size_mb >= 1024)
      {
        double size_gb = size_mb / 1024;
        format.setMaximumFractionDigits(2);
        return format.format(size_gb) + "GB";
      }
      else
      {
        format.setMaximumFractionDigits(2);
        return format.format(size_mb) + "MB";
      }
    }
    else
    {
      if (size_kb >= 100)
      {
        format.setMaximumFractionDigits(0);
      }
      else
      {
        format.setMaximumFractionDigits(2);
      }
      return format.format(size_kb) + "KB";
    }
  }
  
  /**
   * Sets the content data properties of the stored <code>Content</code>
   * instance.
   *
   * @param properties the content data properties
   * @see #hasProperties()
   * @see #getProperties()
   * @since 1.0
   */
  public void setProperties(Map<String, String> properties)
  {
    mProperties = properties;
  }
  
  /**
   * Indicates whether content data properties are present for the stored
   * <code>Content</code> instance.
   *
   * @return <code>true</code> if properties are present; or
   * <p><code>false</code> otherwise
   * @see #setProperties(Map)
   * @see #getProperties()
   * @since 1.0
   */
  public boolean hasProperties()
  {
    return mProperties != null && mProperties.size() > 0;
  }
  
  /**
   * Indicates whether a specific named content property is present.
   *
   * @param name the name of the property
   * @return <code>true</code> if the name content property is present; or
   * <p><code>false</code> otherwise
   * @see #getProperty(String)
   * @since 1.0
   */
  public boolean hasProperty(String name)
  {
    if (null == mProperties)
    {
      return false;
    }
    
    return mProperties.containsKey(name);
  }
  
  /**
   * Retrieves the value of a named content property.
   *
   * @param name the name of the property
   * @return the value of the named content property; or
   * <p><code>null</code> if no such property could be found
   * @see #hasProperty(String)
   * @since 1.0
   */
  public String getProperty(String name)
  {
    if (null == mProperties)
    {
      return null;
    }
    
    return mProperties.get(name);
  }
  
  /**
   * Retrieves the content data properties of the stored
   * <code>Content</code> instance.
   *
   * @return the content data properties; or
   * <p><code>null</code> if no content data properties are present
   * @see #setProperties(Map)
   * @see #hasProperties()
   * @since 1.0
   */
  public Map<String, String> getProperties()
  {
    return mProperties;
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.