Source for org.jfree.resourceloader.DependencyCollector

   1: /**
   2:  * ================================================
   3:  * LibLoader : a free Java resource loading library
   4:  * ================================================
   5:  *
   6:  * Project Info:  http://reporting.pentaho.org/libloader/
   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:  * ------------
  27:  * $Id: DependencyCollector.java,v 1.4 2007/04/01 13:43:17 taqua Exp $
  28:  * ------------
  29:  * (C) Copyright 2006, by Pentaho Corporation.
  30:  */
  31: package org.jfree.resourceloader;
  32: 
  33: import java.util.HashMap;
  34: import java.io.Serializable;
  35: 
  36: /**
  37:  * Creation-Date: 08.04.2006, 14:12:14
  38:  *
  39:  * @author Thomas Morgner
  40:  */
  41: public class DependencyCollector implements Serializable, Cloneable
  42: {
  43:   private HashMap dependencies;
  44: 
  45:   public DependencyCollector(final ResourceKey source,
  46:                              final long version)
  47:   {
  48:     if (source == null)
  49:     {
  50:       throw new NullPointerException();
  51:     }
  52:     dependencies = new HashMap();
  53:     dependencies.put(source, new Long(version));
  54:   }
  55: 
  56:   public ResourceKey[] getDependencies()
  57:   {
  58:     return (ResourceKey[]) dependencies.keySet().toArray
  59:             (new ResourceKey[dependencies.size()]);
  60:   }
  61: 
  62:   public void add(final Resource dependentResource)
  63:   {
  64:     final ResourceKey[] depKeys = dependentResource.getDependencies();
  65:     for (int i = 0; i < depKeys.length; i++)
  66:     {
  67:       final ResourceKey depKey = depKeys[i];
  68:       final long version = dependentResource.getVersion(depKey);
  69:       add(depKey, version);
  70:     }
  71:   }
  72: 
  73:   public void add(final ResourceKey resourceKey, final long version)
  74:   {
  75:     dependencies.put(resourceKey, new Long(version));
  76:   }
  77: 
  78:   public long getVersion(final ResourceKey key)
  79:   {
  80:     final Long l = (Long) dependencies.get(key);
  81:     if (l == null)
  82:     {
  83:       return -1;
  84:     }
  85:     return l.longValue();
  86:   }
  87: 
  88:   public Object clone () throws CloneNotSupportedException
  89:   {
  90:     final DependencyCollector dc = (DependencyCollector) super.clone();
  91:     dc.dependencies = (HashMap) dependencies.clone();
  92:     return dc;
  93:   }
  94: }