/*******************************************************************************
* Copyright (c) 2012-2013 EclipseSource Muenchen GmbH 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:
* Johannes Faltermeier - initial API and implementation
******************************************************************************/
package org.eclipse.emf.emfstore.internal.client.provider;
import java.io.File;
import java.util.HashSet;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.emfstore.client.provider.ESAbstractClientURIConverter;
import org.eclipse.emf.emfstore.internal.client.importexport.impl.ExportImportDataUnits;
import org.eclipse.emf.emfstore.internal.client.model.Configuration;
/**
* The default URI converter of EMFStore Client. Normalizes EMFStore URIs to file URIs.
*
* @author jfaltermeier
*
*/
public class XMIClientURIConverter extends ESAbstractClientURIConverter {
/**
* The prefix of project space directories.
*/
public static final String PROJECT_SAPCE_DIRECTORY_PREFIX = "ps-"; //$NON-NLS-1$
private final String projectSpaceFileName = "projectspace"; //$NON-NLS-1$
private final String projectSpaceFileExtension = ExportImportDataUnits.ProjectSpace.getExtension();
private final String localChangePackageFileName = "operations"; //$NON-NLS-1$
private final String localChangePackageExtension = ".eoc"; //$NON-NLS-1$
private final String projectFragmentFileName = "project"; //$NON-NLS-1$
private final String projectFragmentExtension = ExportImportDataUnits.Project.getExtension();
/**
* Creates an instance including all needed URIHandlers.
*/
public XMIClientURIConverter() {
super();
getURIHandlers().add(0, new ProjectSpaceFileURIHandler(getExtensionsMap()));
}
@Override
protected URI normalizeWorkspaceURI(String profile) {
return URI.createFileURI(Configuration.getFileInfo().getWorkspaceDirectory() + "workspace.ucw"); //$NON-NLS-1$
}
@Override
protected URI normalizeProjectURI(String profile, String projectId) {
return URI.createFileURI(getProjectSpaceDirectory(projectId)
+ projectFragmentFileName + projectFragmentExtension);
}
@Override
protected URI normalizeOperationsURI(String profile, String projectId) {
return URI.createFileURI(getProjectSpaceDirectory(projectId)
+ localChangePackageFileName + localChangePackageExtension);
}
@Override
protected URI normalizeProjectSpaceURI(String profile, String projectId) {
return URI.createFileURI(getProjectSpaceDirectory(projectId)
+ projectSpaceFileName + projectSpaceFileExtension);
}
private String getProjectSpaceDirectory(String projectId) {
return Configuration.getFileInfo().getWorkspaceDirectory()
+ PROJECT_SAPCE_DIRECTORY_PREFIX + projectId
+ File.separatorChar;
}
private HashSet<String> getExtensionsMap() {
final HashSet<String> extensions = new HashSet<String>();
extensions.add(projectSpaceFileExtension);
extensions.add(localChangePackageExtension);
extensions.add(projectFragmentExtension);
return extensions;
}
}