Changed import/export project space behaviour
diff --git a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/importexport/impl/ExportProjectSpaceController.java b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/importexport/impl/ExportProjectSpaceController.java
index ea8306f..05d506a 100644
--- a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/importexport/impl/ExportProjectSpaceController.java
+++ b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/importexport/impl/ExportProjectSpaceController.java
@@ -14,6 +14,7 @@
 import java.io.File;

 import java.io.IOException;

 

+import org.apache.commons.io.FilenameUtils;

 import org.eclipse.core.runtime.IProgressMonitor;

 import org.eclipse.emf.emfstore.internal.client.model.ProjectSpace;

 import org.eclipse.emf.emfstore.internal.client.model.util.ResourceHelper;

@@ -109,10 +110,15 @@
 		copiedProjectSpace.setUsersession(null);

 

 		final Project clonedProject = ModelUtil.clone(getProjectSpace().getProject());

-		copiedProjectSpace.setProject(clonedProject);

 

 		ResourceHelper.putElementIntoNewResourceWithProject(file.getAbsolutePath(), copiedProjectSpace,

 			copiedProjectSpace.getProject());

+

+		final String projectPath = FilenameUtils.removeExtension(file.getAbsolutePath())

+			+ ExportImportDataUnits.Project.getExtension();

+		final File projectFile = new File(projectPath);

+		projectFile.createNewFile();

+		ResourceHelper.putElementIntoNewResource(projectFile.getAbsolutePath(), clonedProject);

 	}

 

 	/**

diff --git a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/impl/WorkspaceBase.java b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/impl/WorkspaceBase.java
index db984c0..ead1b55 100644
--- a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/impl/WorkspaceBase.java
+++ b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/impl/WorkspaceBase.java
@@ -12,6 +12,8 @@
 package org.eclipse.emf.emfstore.internal.client.model.impl;

 

 import java.io.File;

+import java.io.FileNotFoundException;

+import java.io.FilenameFilter;

 import java.io.IOException;

 import java.util.ArrayList;

 import java.util.LinkedHashMap;

@@ -20,11 +22,13 @@
 import java.util.Map;

 import java.util.Set;

 

+import org.apache.commons.io.FilenameUtils;

 import org.eclipse.core.runtime.IProgressMonitor;

 import org.eclipse.core.runtime.NullProgressMonitor;

 import org.eclipse.emf.ecore.impl.EObjectImpl;

 import org.eclipse.emf.ecore.resource.ResourceSet;

 import org.eclipse.emf.edit.domain.EditingDomain;

+import org.eclipse.emf.emfstore.internal.client.importexport.impl.ExportImportDataUnits;

 import org.eclipse.emf.emfstore.internal.client.importexport.impl.ExportProjectSpaceController;

 import org.eclipse.emf.emfstore.internal.client.importexport.impl.ExportWorkspaceController;

 import org.eclipse.emf.emfstore.internal.client.model.AdminBroker;

@@ -264,6 +268,24 @@
 		final ProjectSpace projectSpace = ResourceHelper

 			.getElementFromResource(absoluteFileName, ProjectSpace.class, 0);

 

+		final String parent = FilenameUtils.getFullPath(absoluteFileName);

+		final File parentFolder = new File(parent);

+		final File[] projects = parentFolder.listFiles(new FilenameFilter() {

+			public boolean accept(File dir, String name) {

+				return name.endsWith(ExportImportDataUnits.Project.getExtension());

+			}

+		});

+

+		if (projects.length == 0) {

+			throw new FileNotFoundException("Project was not found.");

+		}

+		if (projects.length > 1) {

+			throw new FileNotFoundException("Cannot find project because multiple files were found.");

+		}

+

+		final Project project = ResourceHelper.getElementFromResource(projects[0].getAbsolutePath(), Project.class, 0);

+		projectSpace.setProject(project);

+

 		projectSpace.setIdentifier(ModelFactory.eINSTANCE.createProjectSpace().getIdentifier());

 		projectSpace.initResources(workspaceResourceSet);

 

diff --git a/tests/org.eclipse.emf.emfstore.client.test/src/org/eclipse/emf/emfstore/client/test/persistence/ImportExportTest.java b/tests/org.eclipse.emf.emfstore.client.test/src/org/eclipse/emf/emfstore/client/test/persistence/ImportExportTest.java
index c6a9fad..13b8a14 100644
--- a/tests/org.eclipse.emf.emfstore.client.test/src/org/eclipse/emf/emfstore/client/test/persistence/ImportExportTest.java
+++ b/tests/org.eclipse.emf.emfstore.client.test/src/org/eclipse/emf/emfstore/client/test/persistence/ImportExportTest.java
@@ -12,6 +12,7 @@
 

 import static org.junit.Assert.assertFalse;

 import static org.junit.Assert.assertTrue;

+import static org.junit.Assert.fail;

 

 import java.io.File;

 import java.io.IOException;

@@ -87,7 +88,16 @@
 

 	@Test

 	public void testDuplicateImportOfProjectSpace() throws IOException {

-		final File temp = File.createTempFile("projectSpace", ExportImportDataUnits.ProjectSpace.getExtension());

+		final String tmpDir = System.getProperty("java.io.tmpdir") + "ieTest" + System.currentTimeMillis();

+		final File tmpDirFile = new File(tmpDir);

+		final boolean bo = tmpDirFile.mkdir();

+

+		if (!bo) {

+			fail("Could not create temp folder for test");

+		}

+

+		final File temp = File.createTempFile("projectSpace", ExportImportDataUnits.ProjectSpace.getExtension(),

+			tmpDirFile);

 		new ExportImportControllerExecutor(temp, new NullProgressMonitor())

 			.execute(ExportImportControllerFactory.Export.getExportProjectSpaceController(getProjectSpace()));

 

@@ -109,9 +119,18 @@
 		createTestElement("A");

 		Assert.assertTrue(getProjectSpace().getOperations().size() > 0);

 

+		final String tmpDir = System.getProperty("java.io.tmpdir") + "ieTest" + System.currentTimeMillis();

+		final File tmpDirFile = new File(tmpDir);

+		final boolean bo = tmpDirFile.mkdir();

+

+		if (!bo) {

+			fail("Could not create temp folder for test");

+		}

+

 		// TODO: assert file extension is correct

 

-		final File temp = File.createTempFile("projectSpace", ExportImportDataUnits.ProjectSpace.getExtension());

+		final File temp = File.createTempFile("projectSpace", ExportImportDataUnits.ProjectSpace.getExtension(),

+			tmpDirFile);

 		new ExportImportControllerExecutor(temp, new NullProgressMonitor())

 			.execute(ExportImportControllerFactory.Export.getExportProjectSpaceController(getProjectSpace()));