001 /** 002 * ================================================ 003 * LibLoader : a free Java resource loading library 004 * ================================================ 005 * 006 * Project Info: http://reporting.pentaho.org/libloader/ 007 * 008 * (C) Copyright 2006, by Pentaho Corporation and Contributors. 009 * 010 * This library is free software; you can redistribute it and/or modify it under the terms 011 * of the GNU Lesser General Public License as published by the Free Software Foundation; 012 * either version 2.1 of the License, or (at your option) any later version. 013 * 014 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 015 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 016 * See the GNU Lesser General Public License for more details. 017 * 018 * You should have received a copy of the GNU Lesser General Public License along with this 019 * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, 020 * Boston, MA 02111-1307, USA. 021 * 022 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 023 * in the United States and other countries.] 024 * 025 * 026 * ------------ 027 * $Id: DependencyCollector.java 2713 2007-04-01 13:43:18Z taqua $ 028 * ------------ 029 * (C) Copyright 2006, by Pentaho Corporation. 030 */ 031 package org.jfree.resourceloader; 032 033 import java.util.HashMap; 034 import java.io.Serializable; 035 036 /** 037 * Creation-Date: 08.04.2006, 14:12:14 038 * 039 * @author Thomas Morgner 040 */ 041 public class DependencyCollector implements Serializable, Cloneable 042 { 043 private HashMap dependencies; 044 045 public DependencyCollector(final ResourceKey source, 046 final long version) 047 { 048 if (source == null) 049 { 050 throw new NullPointerException(); 051 } 052 dependencies = new HashMap(); 053 dependencies.put(source, new Long(version)); 054 } 055 056 public ResourceKey[] getDependencies() 057 { 058 return (ResourceKey[]) dependencies.keySet().toArray 059 (new ResourceKey[dependencies.size()]); 060 } 061 062 public void add(final Resource dependentResource) 063 { 064 final ResourceKey[] depKeys = dependentResource.getDependencies(); 065 for (int i = 0; i < depKeys.length; i++) 066 { 067 final ResourceKey depKey = depKeys[i]; 068 final long version = dependentResource.getVersion(depKey); 069 add(depKey, version); 070 } 071 } 072 073 public void add(final ResourceKey resourceKey, final long version) 074 { 075 dependencies.put(resourceKey, new Long(version)); 076 } 077 078 public long getVersion(final ResourceKey key) 079 { 080 final Long l = (Long) dependencies.get(key); 081 if (l == null) 082 { 083 return -1; 084 } 085 return l.longValue(); 086 } 087 088 public Object clone () throws CloneNotSupportedException 089 { 090 final DependencyCollector dc = (DependencyCollector) super.clone(); 091 dc.dependencies = (HashMap) dependencies.clone(); 092 return dc; 093 } 094 }