Source for org.jfree.repository.file.FileContentEntity

   1: /**
   2:  * ===========================================================
   3:  * LibRepository : a free Java content repository access layer
   4:  * ===========================================================
   5:  *
   6:  * Project Info:  http://jfreereport.pentaho.org/librepository/
   7:  *
   8:  * (C) Copyright 2006, by Pentaho Corporation and Contributors.
   9:  *
  10:  * This library is free software; you can redistribute it and/or modify it under the terms
  11:  * of the GNU Lesser General Public License as published by the Free Software Foundation;
  12:  * either version 2.1 of the License, or (at your option) any later version.
  13:  *
  14:  * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  15:  * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  16:  * See the GNU Lesser General Public License for more details.
  17:  *
  18:  * You should have received a copy of the GNU Lesser General Public License along with this
  19:  * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  20:  * Boston, MA 02111-1307, USA.
  21:  *
  22:  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
  23:  * in the United States and other countries.]
  24:  *
  25:  * ------------
  26:  * FileContentEntity.java
  27:  * ------------
  28:  * (C) Copyright 2006, by Pentaho Corporation.
  29:  */
  30: 
  31: package org.jfree.repository.file;
  32: 
  33: import java.io.File;
  34: import java.util.Date;
  35: 
  36: import org.jfree.repository.ContentEntity;
  37: import org.jfree.repository.ContentLocation;
  38: import org.jfree.repository.LibRepositoryBoot;
  39: import org.jfree.repository.Repository;
  40: 
  41: /**
  42:  * Creation-Date: 13.11.2006, 12:01:47
  43:  *
  44:  * @author Thomas Morgner
  45:  */
  46: public abstract class FileContentEntity implements ContentEntity
  47: {
  48:   private File backend;
  49:   private ContentLocation parent;
  50:   private Repository repository;
  51: 
  52:   protected FileContentEntity(final ContentLocation parent, final File backend)
  53:   {
  54:     this.repository = parent.getRepository();
  55:     this.parent = parent;
  56:     this.backend = backend;
  57:   }
  58: 
  59:   protected FileContentEntity(final Repository repository, final File backend)
  60:   {
  61:     this.repository = repository;
  62:     this.backend = backend;
  63:   }
  64: 
  65:   public Repository getRepository()
  66:   {
  67:     return repository;
  68:   }
  69: 
  70:   public String getName()
  71:   {
  72:     return backend.getName();
  73:   }
  74: 
  75:   protected File getBackend()
  76:   {
  77:     return backend;
  78:   }
  79: 
  80:   public Object getContentId()
  81:   {
  82:     return getName();
  83:   }
  84: 
  85:   public Object getAttribute(final String domain, final String key)
  86:   {
  87:     if (LibRepositoryBoot.REPOSITORY_DOMAIN.equals(domain))
  88:     {
  89:       if (LibRepositoryBoot.SIZE_ATTRIBUTE.equals(key))
  90:       {
  91:         return new Long(backend.length());
  92:       }
  93:       else if (LibRepositoryBoot.VERSION_ATTRIBUTE.equals(key))
  94:       {
  95:         return new Date(backend.lastModified());
  96:       }
  97:     }
  98:     return null;
  99:   }
 100: 
 101:   public boolean setAttribute(final String domain, final String key, final Object value)
 102:   {
 103:     if (LibRepositoryBoot.REPOSITORY_DOMAIN.equals(domain))
 104:     {
 105:       if (LibRepositoryBoot.VERSION_ATTRIBUTE.equals(key))
 106:       {
 107:         if (value instanceof Date)
 108:         {
 109:           final Date date = (Date) value;
 110:           return backend.setLastModified(date.getTime());
 111:         }
 112:         else if (value instanceof Number)
 113:         {
 114:           final Number time = (Number) value;
 115:           return backend.setLastModified(time.longValue());
 116:         }
 117:       }
 118:     }
 119:     return false;
 120:   }
 121: 
 122:   public ContentLocation getParent()
 123:   {
 124:     return parent;
 125:   }
 126: 
 127:   public boolean delete()
 128:   {
 129:     return backend.delete();
 130:   }
 131: }