/* * Copyright 2006-2012 ICEsoft Technologies Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an "AS * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.icepdf.core.util; import java.io.File; import java.util.Vector; import java.util.logging.Logger; import java.util.logging.Level; /** * <p>The <code>CacheManager</code> class has one very simple task which is to ensure * that when a document is closed there are no temporary <code>ByteCache</code> * or <code>ImageCache</code> objects left in the user's temporary folder.</p> * <p/> * <p>Whenever a new <code>ByteCache</code> or <code>ImageCache</code> object * is created, the corresponding cached file name is registered with the * <code>CacheManger</code>. When the document is closed and the * <code>CacheManager</code> <code>despose()</code> method is * called, all of the registered files are deleted from the file system.</p> * * @since 1.1 */ public class CacheManager { private static final Logger logger = Logger.getLogger(CacheManager.class.toString()); private int fileCount = 0; private Vector cachedFiles; /** * Create a new instance of a CacheManager. */ public CacheManager() { cachedFiles = new Vector(128); } /** * Add the file name of either a ByteCache or ImageCache object cached file. * * @param filePath the absolulte path to a temporary file. */ public synchronized void addCachedFile(String filePath) { // increment file count fileCount++; cachedFiles.add(filePath); } /** * Remove all files specified by the addCachedFile method along with the * temporary file created by this class. */ public void dispose() { for (Object cachedFile : cachedFiles) { String fileName = (String) cachedFile; try { boolean success = (new File(fileName)).delete(); if (!success && logger.isLoggable(Level.FINE)) { logger.fine("Error deleting cached file " + fileName); } } catch (SecurityException e) { logger.log(Level.FINE, "Security error removing cached file " + fileName, e); } } } }