/*******************************************************************************
 * Copyright (c) 2000, 2005 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
 *******************************************************************************/
package org.eclipse.update.internal.core;

 
import org.eclipse.core.runtime.*;
import org.eclipse.update.core.*;
 
 /**
  * A site content consumer manages the storage or archives, plugins and
  * feature inside an <code> ISite</code>
  */
 
public interface ISiteContentConsumer {

	/**
	 * Stores a content reference into the SiteContentConsumer
	 * @param contentReference the content reference to store
	 * @param monitor the progress monitor
	 * @throws CoreException if an error occurs storing the content reference
	 * @since 2.0 
	 */
	public void store(ContentReference contentReference, IProgressMonitor monitor) throws CoreException;

	/**
	 * opens a Non plugin Entry for storage
	 * @return the new FeatureContentConsumer for this <code>INonPluginEntry</code>
	 * @throws CoreException if the opens is done on a FeatureContentConsumer parent other than an IFeature.
	 * @since 2.0 
	 */
	public IContentConsumer open(INonPluginEntry nonPluginEntry) throws CoreException;

	/**
	 * opens a Non plugin Entry for storage
	 * @return the new FeatureContentConsumer for this <code>IPluginEntry</code>
	 * @throws CoreException if the opens is done on a FeatureContentConsumer parent other than an IFeature.
	 * @since 2.0 
	 */
	public IContentConsumer open(IPluginEntry pluginEntry) throws CoreException;
	
	/**
	 * closes the opened SiteContentConsumer
	 * @throws CoreException
	 * @since 2.0 
	 */
	public IFeatureReference close() throws CoreException ;	
	

	/**
	 * aborts the opened SiteContentConsumer
	 * @throws CoreException
	 * @since 2.0 
	 */
	public void abort() throws CoreException;		
	
}


