blob: 4d20503ee9dd405c2116e45d84c9cf7b0a195510 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008-2011 Chair for Applied Software Engineering,
* Technische Universitaet Muenchen.
* 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:
* emueller
******************************************************************************/
package org.eclipse.emf.emfstore.internal.client.importexport;
import java.io.File;
import java.io.IOException;
import org.eclipse.core.runtime.IProgressMonitor;
/**
* Generic interface that is used for both export and import.
*
* @author emueller
*
*/
public interface IExportImportController {
/**
* The label that should be shown while exporting/importing.
*
* @return a label that best describes the export/import process
*/
String getLabel();
/**
* Returns an array of names that should be filtered in the export/import dialog.
*
* @return an array of filtered names
*/
String[] getFilteredNames();
/**
* Returns an array of extensions that should be filtered in the export/import dialog.
*
* @return an array of file extensions
*/
String[] getFilteredExtensions();
/**
* Returns the key that is used to cache the last location of the export/import performed.
*
* @return a property key identifier
*/
String getParentFolderPropertyKey();
/**
* Executes the controller.
*
* @param file
* the {@link File} that is either exported to or imported
* @param progressMonitor
* an {@link IProgressMonitor} that is used to inform about the progress
* of the export/import process
* @throws IOException
* in case an error occurs during export/import
*/
void execute(File file, IProgressMonitor progressMonitor) throws IOException;
/**
* Returns the file name that is used for export/import.
*
* @return the file name
*/
String getFilename();
/**
* Whether this controller is an export controller.
*
* @return true, if this controller exports an entity of type <code>T</code>,
* otherwise this controller imports an entity of type <code>T</code>
*/
boolean isExport();
}