/******************************************************************************* * 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: ******************************************************************************/ package org.eclipse.emf.emfstore.client.model.importexport.impl; import java.io.File; import java.io.IOException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.emfstore.client.model.ProjectSpace; import org.eclipse.emf.emfstore.client.model.importexport.ExportImportDataUnits; import org.eclipse.emf.emfstore.client.model.util.ResourceHelper; import org.eclipse.emf.emfstore.common.model.Project; import org.eclipse.emf.emfstore.common.model.util.ModelUtil; import org.eclipse.emf.emfstore.server.model.versioning.PrimaryVersionSpec; /** * Exports a {@link ProjectSpace}. * * @author emueller */ public class ExportProjectSpaceController extends ProjectSpaceBasedExportController { /** * Constructor. * * @param projectSpace the {@link ProjectSpace} that should be exported */ public ExportProjectSpaceController(ProjectSpace projectSpace) { super(projectSpace); } /** * * {@inheritDoc} * * @see org.eclipse.emf.emfstore.client.model.controller.importexport.IExportImportController#getFilteredNames() */ public String[] getFilteredNames() { return new String[] { "EMFStore project space (*" + ExportImportDataUnits.ProjectSpace.getExtension() + ")", "All Files (*.*)" }; } /** * * {@inheritDoc} * * @see org.eclipse.emf.emfstore.client.model.controller.importexport.IExportImportController#getFilteredExtensions() */ public String[] getFilteredExtensions() { return new String[] { "*" + ExportImportDataUnits.ProjectSpace.getExtension(), "*.*" }; } /** * * {@inheritDoc} * * @see org.eclipse.emf.emfstore.client.model.controller.importexport.IExportImportController#getLabel() */ public String getLabel() { return "project space"; } /** * * {@inheritDoc} * * @see org.eclipse.emf.emfstore.client.model.controller.importexport.impl.IExportController#getFilename() */ public String getFilename() { PrimaryVersionSpec baseVersion = getProjectSpace().getBaseVersion(); return "ProjectSpace_" + getProjectSpace().getProjectName() + "@" + (baseVersion == null ? 0 : baseVersion.getIdentifier()) + ExportImportDataUnits.ProjectSpace.getExtension(); } /** * * {@inheritDoc} * * @see org.eclipse.emf.emfstore.client.model.controller.importexport.impl.IExportController#getParentFolderPropertyKey() */ public String getParentFolderPropertyKey() { return "org.eclipse.emf.emfstore.client.ui.exportProjectSpacePath"; } /** * * {@inheritDoc} * * @see org.eclipse.emf.emfstore.client.model.controller.importexport.IExportImportController#execute(java.io.File, * org.eclipse.core.runtime.IProgressMonitor) */ public void execute(File file, IProgressMonitor progressMonitor) throws IOException { ProjectSpace copiedProjectSpace = EcoreUtil.copy(getProjectSpace()); copiedProjectSpace.setUsersession(null); Project clonedProject = ModelUtil.clone(getProjectSpace().getProject()); copiedProjectSpace.setProject(clonedProject); ResourceHelper.putElementIntoNewResourceWithProject(file.getAbsolutePath(), copiedProjectSpace, copiedProjectSpace.getProject()); } /** * * {@inheritDoc} * * @see org.eclipse.emf.emfstore.client.model.controller.importexport.IExportImportController#isExport() */ public boolean isExport() { return true; } }