blob: 7178aaaa45a319b5bed980c5547fc507593660f3 [file] [log] [blame]
/************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
*
* Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
*
* Use is subject to license terms.
*
* 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. You can also
* obtain a copy of the License at http://odftoolkit.org/docs/license.txt
*
* 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.
*
************************************************************************/
/* This file is derived from ODFDOM 0.8.6, and
* has been modified for Apache Taverna.
* (c) 2010-2014 University of Manchester
* (c) 2015 The Apache Software Foundation
*/
package org.apache.taverna.scufl2.ucfpackage.impl.odfdom.pkg;
import java.io.File;
import java.io.IOException;
class TempDir {
/**
* Creates a temp directory with a generated name (given a certain prefix)
* in a given directory.
* @param prefix The prefix for the directory name; must be three characters
* or more.
* @param parentDir A directory where the new tmep directory is created;
* if this is null, the java,io.tmpdir will be used.
*/
static File newTempOdfDirectory(String prefix, File parentDir)
throws IOException {
File tempFile = File.createTempFile(prefix, "", parentDir);
if (!tempFile.delete())
throw new IOException();
if (!tempFile.mkdir())
throw new IOException();
TempDirDeleter.getInstance().add(tempFile);
return tempFile;
}
/**
* Delete a temporary created directory. As a precaution, only directories
* created by this class can be deleted. To avoid memory leaks, this class
* should be used exclusively for deleting.
* @param odfDirectory the temp directory to delete.
*/
static void deleteTempOdfDirectory(File odfDirectory) {
if (TempDirDeleter.getInstance().remove(odfDirectory))
TempDirDeleter.getInstance().deleteDirectory(odfDirectory);
}
}