/*******************************************************************************
 * Copyright (c) 2000, 2008 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     Red Hat, Inc - setStrip(int), getStrip()
 *******************************************************************************/

package org.eclipse.ui.internal.wizards.datatransfer;


import org.eclipse.ui.wizards.datatransfer.IImportStructureProvider;

/**
 * Interface which can provide structure and content information for an archive 
 * element. Used by the import wizards to abstract the commonalities between 
 * importing from the a zip file and importing from a tar file.
 * 
 * @since 3.1
 */
public interface ILeveledImportStructureProvider extends IImportStructureProvider {
	/**
	 * Returns the entry that this importer uses as the root sentinel.
	 * 
	 * @return root entry of the archive file
	 */
	public abstract Object getRoot();

	/**
	 * Tells the provider to strip N number of directories from the path of any
	 * path or file name returned by the IImportStructureProvider (Default=0).
	 * 
	 * @param level
	 *            The number of directories to strip
	 */
	public abstract void setStrip(int level);

	/**
	 * Returns the number of directories that this IImportStructureProvider is
	 * stripping from the file name
	 * 
	 * @return int Number of entries
	 */
	public abstract int getStrip();
	
	/**
	 * Close the archive file that was used to create this leveled structure provider.
	 * 
	 * @return <code>true</code> if the archive was closed successfully
	 */
	public boolean closeArchive();
}
