blob: 8e731fdaa2dbf3e618a56243479e11b37a3f5dcc [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 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 implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.library;
import java.util.List;
import org.eclipse.epf.library.configuration.closure.ElementDependencyError;
import org.eclipse.epf.uma.MethodConfiguration;
import org.eclipse.epf.uma.MethodLibrary;
/**
* The interface for a Method Configuration Closure.
*
* @author Kelvin Low
* @since 1.0
*/
public interface IConfigurationClosure {
/**
* Returns the method configuration manager.
*
* @return a configuration manager
*/
public IConfigurationManager getConfigurationManager();
/**
* Returns the method configuration.
*
* @return a method configuration
*/
public MethodConfiguration getConfiguration();
/**
* Returns the containining method library.
*
* @return a method library
*/
public MethodLibrary getLibrary();
/**
* Sets the method plug-ins and packages selection.
*
* @param elements
* an array of method plug-ins and packages
*/
//public void setSelections(Object[] elements);
/**
* Checks whether a method plug-in or package is selected.
*
* @return <code>true</code> if the given element is selected
*/
public boolean isSelected(Object input);
/**
* Gets the element dependency error for a method element.
*
* @element A method element.
*
* @return an array of <code>ElementDependencyError</code>
*/
public ElementDependencyError getError(Object element);
/**
* Checks whether the closure has any error.
*
* @return <code>true</code> if the closure has one or more errors
*/
public boolean hasError();
/**
* Checks whether the closure has any problem.
*
* @return <code>true</code> if the closure has one or more problems.\
*/
public boolean hasProblem();
/**
* Returns all the errors.
*
* @return a list of <code>ErrorInfo</code>
*/
public List getAllErrors();
/**
* Returns all the dependency errors.
*
* @return an array of <code>ElementDependencyError</code>
*/
public Object[] getDependencyErrors();
/**
* Returns all the invalid elements.
*
* @return a list of invalid elements
*/
public List getInvalidElements();
/**
* Returns all the changed elements. These are elements whose check states
* have changed or whose image have changed due to error.
*
* @return a list of changed method elements
*/
//public List getChangedElements();
/**
* Returns the method plug-ins and packages selection.
*
* @return an array of method plug-ins and packages
*/
public Object[] getSelection();
/**
* fix the errors in the configurations
*/
public void fixErrors();
/**
* Fixes all errors and warnings in the closure.
*/
public void fixProblems();
/**
* Saves the method configuration.
*/
//public void saveMethodConfiguration();
/**
* Packages the library based on the selection.
* <p>
* Note: This will change the current library. Before calling this method, a
* copy of the current library should be created with the following steps:
* 1. Create a new <code>ConfigurationManager</code> with a copy of the
* original library, 2. Rebuild the dependency, 3. Create a
* <code>ConfigurationClosure</code> with the current configuration.
*
* @param removeBrokenReferences
* if <code>true</code>, remove all broken references
* @return a method library
*/
public MethodLibrary packageLibrary(boolean removeBrokenReferences);
/**
* Disposes resources allocated by this closure.
*/
public void dispose();
}