Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 393555
Collapse All | Expand All

(-)src/org/eclipse/emf/ecp/internal/core/ECPProjectManagerImpl.java (-3 / +17 lines)
Lines 31-36 Link Here
31
import org.eclipse.core.runtime.IStatus;
31
import org.eclipse.core.runtime.IStatus;
32
import org.eclipse.core.runtime.Status;
32
import org.eclipse.core.runtime.Status;
33
33
34
import javax.naming.NameAlreadyBoundException;
35
34
import java.io.IOException;
36
import java.io.IOException;
35
import java.io.ObjectInput;
37
import java.io.ObjectInput;
36
import java.util.Collections;
38
import java.util.Collections;
Lines 49-67 Link Here
49
	private ECPProjectManagerImpl() {
51
	private ECPProjectManagerImpl() {
50
	}
52
	}
51
53
52
	public ECPProject createProject(ECPProvider provider, String name) {
54
	public ECPProject createProject(ECPProvider provider, String name) throws NameAlreadyBoundException {
53
		return this.createProject(provider, name, ECPUtil.createProperties());
55
		return this.createProject(provider, name, ECPUtil.createProperties());
54
	}
56
	}
55
57
56
	public ECPProject createProject(ECPProvider provider, String name, ECPProperties properties) {
58
	public ECPProject createProject(ECPProvider provider, String name, ECPProperties properties)
59
		throws NameAlreadyBoundException {
60
		if (projectExists(name)) {
61
			throw new NameAlreadyBoundException("A project with name " + name + " already exists");
62
		}
57
		InternalProject project = new ECPProjectImpl((InternalProvider) provider, name, properties);
63
		InternalProject project = new ECPProjectImpl((InternalProvider) provider, name, properties);
58
		return createProject(project);
64
		return createProject(project);
59
	}
65
	}
60
66
61
	public ECPProject createProject(ECPRepository repository, String name, ECPProperties properties) {
67
	public ECPProject createProject(ECPRepository repository, String name, ECPProperties properties)
68
		throws NameAlreadyBoundException {
69
		if (projectExists(name)) {
70
			throw new NameAlreadyBoundException("A project with name " + name + " already exists");
71
		}
62
		InternalProject project = new ECPProjectImpl(repository, name, properties);
72
		InternalProject project = new ECPProjectImpl(repository, name, properties);
63
		return createProject(project);
73
		return createProject(project);
74
	}
64
75
76
	private boolean projectExists(String name) {
77
		return getProject(name) != null;
65
	}
78
	}
66
79
67
	/**
80
	/**
Lines 71-76 Link Here
71
	private ECPProject createProject(InternalProject project) {
84
	private ECPProject createProject(InternalProject project) {
72
		project.getProvider().handleLifecycle(project, LifecycleEvent.CREATE);
85
		project.getProvider().handleLifecycle(project, LifecycleEvent.CREATE);
73
		changeElements(null, Collections.singleton(project));
86
		changeElements(null, Collections.singleton(project));
87
74
		return project;
88
		return project;
75
	}
89
	}
76
90
(-)src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProjectWrapper.java (-36 / +32 lines)
Lines 8-56 Link Here
8
import org.eclipse.emf.ecp.spi.core.InternalRepository;
8
import org.eclipse.emf.ecp.spi.core.InternalRepository;
9
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
9
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
10
10
11
public class EMFStoreProjectWrapper implements ECPCheckoutSource
11
import javax.naming.NameAlreadyBoundException;
12
{
13
12
14
  private final InternalRepository repository;
13
public class EMFStoreProjectWrapper implements ECPCheckoutSource {
15
14
16
  private final EMFStoreCheckoutData checkoutData;
15
	private final InternalRepository repository;
17
16
18
  // private final ProjectInfo projectInfo;
17
	private final EMFStoreCheckoutData checkoutData;
19
  //
20
  // private final ServerInfo serverInfo;
21
18
22
  public EMFStoreProjectWrapper(InternalRepository repository, EMFStoreCheckoutData checkoutData)
19
	// private final ProjectInfo projectInfo;
23
  {
20
	//
24
    this.repository = repository;
21
	// private final ServerInfo serverInfo;
25
    // this.projectInfo = projectInfo;
26
    // this.serverInfo = serverInfo;
27
    this.checkoutData = checkoutData;
28
  }
29
22
30
  public ECPRepository getRepository()
23
	public EMFStoreProjectWrapper(InternalRepository repository, EMFStoreCheckoutData checkoutData) {
31
  {
24
		this.repository = repository;
32
    // TODO Auto-generated method stub
25
		// this.projectInfo = projectInfo;
33
    return repository;
26
		// this.serverInfo = serverInfo;
34
  }
27
		this.checkoutData = checkoutData;
28
	}
35
29
36
  public ECPProvider getProvider()
30
	public ECPRepository getRepository() {
37
  {
31
		// TODO Auto-generated method stub
38
    return repository.getProvider();
32
		return repository;
39
  }
33
	}
40
34
41
  public String getDefaultCheckoutName()
35
	public ECPProvider getProvider() {
42
  {
36
		return repository.getProvider();
43
    return checkoutData.getProjectInfo().getName();
37
	}
44
  }
45
38
46
  public void checkout(String projectName, ECPProperties projectProperties)
39
	public String getDefaultCheckoutName() {
47
  {
40
		return checkoutData.getProjectInfo().getName();
48
    ProjectSpace projectSpace = EMFStoreProvider.INSTANCE.getUIProvider().getAdapter(checkoutData, ProjectSpace.class);
41
	}
49
    if (projectSpace != null)
42
50
    {
43
	public void checkout(String projectName, ECPProperties projectProperties) throws NameAlreadyBoundException {
51
      projectProperties.addProperty(EMFStoreProvider.PROP_PROJECTSPACEID, projectSpace.getIdentifier());
44
		ProjectSpace projectSpace = EMFStoreProvider.INSTANCE.getUIProvider().getAdapter(checkoutData,
52
    }
45
			ProjectSpace.class);
53
    ECPProjectManager.INSTANCE.createProject(getRepository(), projectName, projectProperties);
46
		if (projectSpace != null) {
54
  }
47
			projectProperties.addProperty(EMFStoreProvider.PROP_PROJECTSPACEID, projectSpace.getIdentifier());
48
		}
49
		ECPProjectManager.INSTANCE.createProject(getRepository(), projectName, projectProperties);
50
	}
55
51
56
}
52
}
(-)src/org/eclipse/emf/ecp/ui/common/dnd/ComposedDropAdapter.java (-2 / +9 lines)
Lines 37-42 Link Here
37
import org.eclipse.swt.graphics.Rectangle;
37
import org.eclipse.swt.graphics.Rectangle;
38
import org.eclipse.swt.widgets.TreeItem;
38
import org.eclipse.swt.widgets.TreeItem;
39
39
40
import javax.naming.NameAlreadyBoundException;
41
40
import java.util.ArrayList;
42
import java.util.ArrayList;
41
import java.util.Collection;
43
import java.util.Collection;
42
import java.util.HashMap;
44
import java.util.HashMap;
Lines 125-132 Link Here
125
					offlineProvider = provider;
127
					offlineProvider = provider;
126
				}
128
				}
127
			}
129
			}
128
			ECPProject projectCopy = ECPProjectManager.INSTANCE.createProject(offlineProvider, project.getName()
130
			ECPProject projectCopy = null;
129
				+ " (Copy)", ECPUtil.createProperties());
131
			try {
132
				projectCopy = ECPProjectManager.INSTANCE.createProject(offlineProvider, project.getName() + " (Copy)",
133
					ECPUtil.createProperties());
134
			} catch (NameAlreadyBoundException ex) {
135
				// FIXME: if project with supplied name already exists drop will fail
136
			}
130
137
131
			for (EObject eObject : project.getElements()) {
138
			for (EObject eObject : project.getElements()) {
132
				projectCopy.getElements().add(EcoreUtil.copy(eObject));
139
				projectCopy.getElements().add(EcoreUtil.copy(eObject));
(-)src/org/eclipse/emf/ecp/ui/util/HandlerHelper.java (-3 / +16 lines)
Lines 39-44 Link Here
39
import org.eclipse.jface.viewers.IStructuredSelection;
39
import org.eclipse.jface.viewers.IStructuredSelection;
40
import org.eclipse.swt.widgets.Shell;
40
import org.eclipse.swt.widgets.Shell;
41
41
42
import javax.naming.NameAlreadyBoundException;
43
42
import java.util.ArrayList;
44
import java.util.ArrayList;
43
import java.util.Collection;
45
import java.util.Collection;
44
import java.util.HashSet;
46
import java.util.HashSet;
Lines 58-64 Link Here
58
			if (AbstractUICallback.OK == callback.open()) {
60
			if (AbstractUICallback.OK == callback.open()) {
59
				String projectName = checkoutCompposite.getProjectName();
61
				String projectName = checkoutCompposite.getProjectName();
60
				ECPProperties projectProperties = checkoutCompposite.getProjectProperties();
62
				ECPProperties projectProperties = checkoutCompposite.getProjectProperties();
61
				checkoutSource.checkout(projectName, projectProperties);
63
				try {
64
					checkoutSource.checkout(projectName, projectProperties);
65
				} catch (NameAlreadyBoundException ex) {
66
					callback.showError("Cannot checkout project", "A project with name " + projectName
67
						+ " already exists in the workspace.");
68
				}
62
			}
69
			}
63
		}
70
		}
64
	}
71
	}
Lines 90-97 Link Here
90
			ECPProperties projectProperties = ECPUtil.createProperties();
97
			ECPProperties projectProperties = ECPUtil.createProperties();
91
98
92
			String projectName = createProjectComposite.getProjectName();
99
			String projectName = createProjectComposite.getProjectName();
93
			ECPProject project = ECPProjectManager.INSTANCE.createProject(selectedProvider, projectName,
100
			ECPProject project = null;
94
				projectProperties);
101
			try {
102
				project = ECPProjectManager.INSTANCE.createProject(selectedProvider, projectName, projectProperties);
103
			} catch (NameAlreadyBoundException ex) {
104
				callback.showError("No project created", "A project with name " + projectName
105
					+ " already exists in the workspace.");
106
				return null;
107
			}
95
			if (project == null) {
108
			if (project == null) {
96
				callback.showError("No project created", "Please check the log.");
109
				callback.showError("No project created", "Please check the log.");
97
				return null;
110
				return null;
(-)src/org/eclipse/emf/ecp/workspace/internal/core/RepositoryResourceWrapper.java (-26 / +21 lines)
Lines 4-12 Link Here
4
 * are made available under the terms of the Eclipse Public License v1.0
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
7
 * Contributors:
9
 *    Eike Stepper - initial API and implementation
8
 * Eike Stepper - initial API and implementation
10
 */
9
 */
11
package org.eclipse.emf.ecp.workspace.internal.core;
10
package org.eclipse.emf.ecp.workspace.internal.core;
12
11
Lines 18-52 Link Here
18
17
19
import org.eclipse.core.resources.IResource;
18
import org.eclipse.core.resources.IResource;
20
19
20
import javax.naming.NameAlreadyBoundException;
21
21
/**
22
/**
22
 * @author Eike Stepper
23
 * @author Eike Stepper
23
 */
24
 */
24
public class RepositoryResourceWrapper extends ResourceWrapper<InternalRepository> implements ECPCheckoutSource
25
public class RepositoryResourceWrapper extends ResourceWrapper<InternalRepository> implements ECPCheckoutSource {
25
{
26
	public RepositoryResourceWrapper(ECPRepository repository, IResource resource) {
26
  public RepositoryResourceWrapper(ECPRepository repository, IResource resource)
27
		super((InternalRepository) repository, resource);
27
  {
28
	}
28
    super((InternalRepository)repository, resource);
29
  }
30
29
31
  public InternalRepository getRepository()
30
	public InternalRepository getRepository() {
32
  {
31
		return getContext();
33
    return getContext();
32
	}
34
  }
35
33
36
  public String getDefaultCheckoutName()
34
	public String getDefaultCheckoutName() {
37
  {
35
		return getName();
38
    return getName();
36
	}
39
  }
40
37
41
  public void checkout(String projectName, ECPProperties projectProperties)
38
	public void checkout(String projectName, ECPProperties projectProperties) throws NameAlreadyBoundException {
42
  {
39
		projectProperties.addProperty(WorkspaceProvider.PROP_ROOT_URI, getURI().toString());
43
    projectProperties.addProperty(WorkspaceProvider.PROP_ROOT_URI, getURI().toString());
40
		ECPProjectManager.INSTANCE.createProject(getRepository(), projectName, projectProperties);
44
    ECPProjectManager.INSTANCE.createProject(getRepository(), projectName, projectProperties);
41
	}
45
  }
46
42
47
  @Override
43
	@Override
48
  protected Object createChild(InternalRepository repository, IResource member)
44
	protected Object createChild(InternalRepository repository, IResource member) {
49
  {
45
		return new RepositoryResourceWrapper(repository, member);
50
    return new RepositoryResourceWrapper(repository, member);
46
	}
51
  }
52
}
47
}

Return to bug 393555