/*
 * Created on Mar 6, 2008 (C) Copyright TANDBERG Television Ltd.
 */

package com.tandbergtv.watchpoint.pmm.util;

import org.apache.log4j.Logger;

import de.schlichtherle.io.ArchiveDetector;
import de.schlichtherle.io.File;

/**
 * Utility Methods for performing operations on an Archive File
 * 
 * @author Vijay Silva
 */
public final class ArchiveUtility {

	/* Logger */
	private static final Logger logger = Logger.getLogger(ArchiveUtility.class);

	/* Set the Default Archive Detection Policy */
	static {
		File.setDefaultArchiveDetector(ArchiveDetector.ALL);
	}

	/* Internal Constructor */
	private ArchiveUtility() {
	}

	/**
	 * Opens the Archive File while specifying the appropriate Detector strategy
	 * 
	 * @param archiveFilePath
	 *            The File Path to the archive file
	 * @return The File
	 */
	public static File openArchive(String archiveFilePath) {
		return new File(archiveFilePath, ArchiveDetector.ALL);
	}

	/**
	 * Opens the Archive File while specifying the appropriate Detector strategy
	 * 
	 * @param folderPath
	 *            The folder in which to open / create the Archive file
	 * @param archiveFileName
	 *            The File Name of the archive file
	 * @return The File
	 */
	public static File openArchive(String folderPath, String archiveFileName) {
		return new File(folderPath, archiveFileName, ArchiveDetector.ALL);
	}

	/**
	 * Unmount the Archive File
	 * 
	 * @param archiveFile
	 *            The Archive File to unmount
	 */
	public static void closeArchive(File archiveFile) {
		try {
			if (archiveFile.isArchive() && archiveFile.getEnclArchive() == null)
				File.umount(archiveFile);
		} catch (Exception e) {
			logger.warn("Error unmounting archive file: " + archiveFile.toString(), e);
		}
	}
}
