Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2015-02-07 08:38:02 +0000
committerEike Stepper2015-02-18 14:40:23 +0000
commit4a7e186d272386c230452a4b4c1353cd4d0dc44e (patch)
treea1448c5a22802fa00563cdda74b941802cc01b1e /plugins/org.eclipse.emf.cdo.explorer/src
parentcd2c741de78a8ed929784b70f06aee04848e9047 (diff)
downloadcdo-4a7e186d272386c230452a4b4c1353cd4d0dc44e.tar.gz
cdo-4a7e186d272386c230452a4b4c1353cd4d0dc44e.tar.xz
cdo-4a7e186d272386c230452a4b4c1353cd4d0dc44e.zip
[458349] Consolidate UI
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=458349
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.explorer/src')
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/CDOExplorerElement.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/CDOExplorerManager.java10
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/checkouts/CDOCheckout.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/repositories/CDORepository.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/repositories/CDORepositoryElement.java (renamed from plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/checkouts/CDOCheckoutSource.java)10
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/AbstractElement.java64
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/AbstractManager.java40
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/CDOExplorerAdapterFactory.java12
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/checkouts/CDOCheckoutImpl.java20
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/properties/CheckoutProperties.java19
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/properties/RepositoryProperties.java19
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/CDORepositoryImpl.java120
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/CloneCDORepository.java12
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/LocalCDORepository.java51
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/RemoteCDORepository.java5
15 files changed, 304 insertions, 90 deletions
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/CDOExplorerElement.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/CDOExplorerElement.java
index 39df289cb2..ec7adafc6c 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/CDOExplorerElement.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/CDOExplorerElement.java
@@ -33,5 +33,5 @@ public interface CDOExplorerElement extends INotifier, IAdaptable, Adapter
public void setLabel(String label);
- public void delete();
+ public void delete(boolean deleteContents);
}
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/CDOExplorerManager.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/CDOExplorerManager.java
index 74347738ce..d643cd2270 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/CDOExplorerManager.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/CDOExplorerManager.java
@@ -11,6 +11,7 @@
package org.eclipse.emf.cdo.explorer;
import org.eclipse.net4j.util.container.IContainer;
+import org.eclipse.net4j.util.event.IEvent;
import org.eclipse.core.runtime.IAdaptable;
@@ -20,4 +21,13 @@ import org.eclipse.core.runtime.IAdaptable;
*/
public interface CDOExplorerManager<T extends CDOExplorerElement> extends IContainer<T>, IAdaptable
{
+ /**
+ * @author Eike Stepper
+ */
+ public interface ElementChangedEvent extends IEvent
+ {
+ public CDOExplorerManager<?> getSource();
+
+ public Object getChangedElement();
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/checkouts/CDOCheckout.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/checkouts/CDOCheckout.java
index 8be1874929..4f45d8196b 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/checkouts/CDOCheckout.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/checkouts/CDOCheckout.java
@@ -11,6 +11,7 @@
package org.eclipse.emf.cdo.explorer.checkouts;
import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.util.CDOTimeProvider;
import org.eclipse.emf.cdo.explorer.CDOExplorerElement;
import org.eclipse.emf.cdo.explorer.repositories.CDORepository;
import org.eclipse.emf.cdo.view.CDOView;
@@ -24,7 +25,7 @@ import org.eclipse.emf.ecore.EObject;
* @since 4.4
* @apiviz.landmark
*/
-public interface CDOCheckout extends CDOExplorerElement
+public interface CDOCheckout extends CDOExplorerElement, CDOTimeProvider
{
public CDORepository getRepository();
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/repositories/CDORepository.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/repositories/CDORepository.java
index 02c424afe1..ba9c755d8b 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/repositories/CDORepository.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/repositories/CDORepository.java
@@ -11,6 +11,7 @@
package org.eclipse.emf.cdo.explorer.repositories;
import org.eclipse.emf.cdo.common.branch.CDOBranch;
+import org.eclipse.emf.cdo.common.util.CDONameProvider;
import org.eclipse.emf.cdo.explorer.CDOExplorerElement;
import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout;
import org.eclipse.emf.cdo.session.CDOSessionProvider;
@@ -24,13 +25,15 @@ import org.eclipse.net4j.util.container.IContainer;
* @since 4.4
* @apiviz.landmark
*/
-public interface CDORepository extends CDOExplorerElement, IContainer<CDOBranch>, CDOSessionProvider
+public interface CDORepository extends CDOExplorerElement, IContainer<CDOBranch>, CDONameProvider, CDOSessionProvider
{
public String getConnectorType();
public String getConnectorDescription();
- public String getRepositoryName();
+ public String getName();
+
+ public String getURI();
public State getState();
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/checkouts/CDOCheckoutSource.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/repositories/CDORepositoryElement.java
index b8d49f86eb..84c5525991 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/checkouts/CDOCheckoutSource.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/explorer/repositories/CDORepositoryElement.java
@@ -8,19 +8,19 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.explorer.checkouts;
+package org.eclipse.emf.cdo.explorer.repositories;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.explorer.repositories.CDORepository;
+import org.eclipse.emf.cdo.common.util.CDOTimeProvider;
/**
- * A source for CDO checkouts.
+ * An element of a CDO repository.
*
* @author Eike Stepper
* @since 4.4
* @apiviz.landmark
*/
-public interface CDOCheckoutSource
+public interface CDORepositoryElement extends CDOTimeProvider
{
public CDORepository getRepository();
@@ -28,5 +28,5 @@ public interface CDOCheckoutSource
public long getTimeStamp();
- public CDOID getRootID();
+ public CDOID getObjectID();
}
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/AbstractElement.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/AbstractElement.java
index 1f8b1eb8dd..41f732b415 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/AbstractElement.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/AbstractElement.java
@@ -24,6 +24,9 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
import java.util.Properties;
/**
@@ -31,6 +34,8 @@ import java.util.Properties;
*/
public abstract class AbstractElement extends Notifier implements CDOExplorerElement, Adapter.Internal
{
+ public static final String PROPERTIES_FILE = "_properties";
+
public static final String PROP_ID = "id";
public static final String PROP_TYPE = "type";
@@ -110,6 +115,48 @@ public abstract class AbstractElement extends Notifier implements CDOExplorerEle
return false;
}
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj == this)
+ {
+ return true;
+ }
+
+ if (obj == null)
+ {
+ return false;
+ }
+
+ if (obj.getClass() == getClass())
+ {
+ AbstractElement that = (AbstractElement)obj;
+ return id.equals(that.getID());
+ }
+
+ return false;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return getClass().hashCode() ^ id.hashCode();
+ }
+
+ public void delete(boolean deleteContents)
+ {
+ if (deleteContents)
+ {
+ IOUtil.delete(folder);
+ }
+ else
+ {
+ File from = new File(folder, PROPERTIES_FILE);
+ File dest = new File(from.getParentFile(), from.getName() + ".removed");
+ from.renameTo(dest);
+ }
+ }
+
public void save()
{
folder.mkdirs();
@@ -121,7 +168,7 @@ public abstract class AbstractElement extends Notifier implements CDOExplorerEle
try
{
- File file = new File(folder, ".properties");
+ File file = new File(folder, PROPERTIES_FILE);
out = new FileOutputStream(file);
properties.store(out, getClass().getSimpleName());
@@ -150,4 +197,19 @@ public abstract class AbstractElement extends Notifier implements CDOExplorerEle
properties.put("type", type);
properties.put("label", label);
}
+
+ public static AbstractElement[] collect(Collection<?> c)
+ {
+ List<AbstractElement> result = new ArrayList<AbstractElement>();
+ for (Object object : c)
+ {
+ if (object instanceof AbstractElement)
+ {
+ AbstractElement element = (AbstractElement)object;
+ result.add(element);
+ }
+ }
+
+ return result.toArray(new AbstractElement[result.size()]);
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/AbstractManager.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/AbstractManager.java
index 7494788d92..d14052bedd 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/AbstractManager.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/AbstractManager.java
@@ -16,11 +16,12 @@ import org.eclipse.emf.cdo.internal.explorer.bundle.OM;
import org.eclipse.net4j.util.AdapterUtil;
import org.eclipse.net4j.util.container.SetContainer;
+import org.eclipse.net4j.util.event.Event;
import org.eclipse.net4j.util.io.IOUtil;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import java.io.File;
import java.io.FileInputStream;
-import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -96,7 +97,7 @@ public abstract class AbstractManager<T extends CDOExplorerElement> extends SetC
private void readElement(File folder)
{
- File file = new File(folder, ".properties");
+ File file = new File(folder, AbstractElement.PROPERTIES_FILE);
if (file.isFile())
{
FileInputStream in = null;
@@ -110,7 +111,7 @@ public abstract class AbstractManager<T extends CDOExplorerElement> extends SetC
addElement(folder, properties);
}
- catch (IOException ex)
+ catch (Exception ex)
{
OM.LOG.error(ex);
}
@@ -127,6 +128,7 @@ public abstract class AbstractManager<T extends CDOExplorerElement> extends SetC
T element = createElement(type);
((AbstractElement)element).init(folder, type, properties);
+ LifecycleUtil.activate(element);
addElement(element);
elementMap.put(element.getID(), element);
@@ -134,4 +136,36 @@ public abstract class AbstractManager<T extends CDOExplorerElement> extends SetC
}
protected abstract T createElement(String type);
+
+ public void fireElementChangedEvent(Object changedElement)
+ {
+ fireEvent(new ElementChangedImpl(this, changedElement));
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ private static final class ElementChangedImpl extends Event implements ElementChangedEvent
+ {
+ private static final long serialVersionUID = 1L;
+
+ private final Object changedElement;
+
+ public ElementChangedImpl(CDOExplorerManager<?> manager, Object changedElement)
+ {
+ super(manager);
+ this.changedElement = changedElement;
+ }
+
+ @Override
+ public CDOExplorerManager<?> getSource()
+ {
+ return (CDOExplorerManager<?>)super.getSource();
+ }
+
+ public final Object getChangedElement()
+ {
+ return changedElement;
+ }
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/CDOExplorerAdapterFactory.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/CDOExplorerAdapterFactory.java
index 746c1f3853..f29e130783 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/CDOExplorerAdapterFactory.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/CDOExplorerAdapterFactory.java
@@ -15,8 +15,8 @@ import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.explorer.CDOExplorerUtil;
-import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckoutSource;
import org.eclipse.emf.cdo.explorer.repositories.CDORepository;
+import org.eclipse.emf.cdo.explorer.repositories.CDORepositoryElement;
import org.eclipse.emf.cdo.internal.explorer.repositories.CDORepositoryManagerImpl;
import org.eclipse.emf.cdo.session.CDORepositoryInfo;
import org.eclipse.emf.cdo.session.CDOSession;
@@ -29,7 +29,7 @@ import org.eclipse.core.runtime.IAdapterFactory;
@SuppressWarnings("rawtypes")
public class CDOExplorerAdapterFactory implements IAdapterFactory
{
- private static final Class[] CLASSES = { CDOCheckoutSource.class };
+ private static final Class[] CLASSES = { CDORepositoryElement.class };
public CDOExplorerAdapterFactory()
{
@@ -52,7 +52,7 @@ public class CDOExplorerAdapterFactory implements IAdapterFactory
if (commonRepository instanceof CDORepositoryInfo)
{
final CDORepositoryInfo repositoryInfo = (CDORepositoryInfo)commonRepository;
- final CDOID rootID = repositoryInfo.getRootResourceID();
+ final CDOID objectID = repositoryInfo.getRootResourceID();
CDOSession session = repositoryInfo.getSession();
CDORepositoryManagerImpl repositoryManager = (CDORepositoryManagerImpl)CDOExplorerUtil.getRepositoryManager();
@@ -60,7 +60,7 @@ public class CDOExplorerAdapterFactory implements IAdapterFactory
if (repository != null)
{
- return new CDOCheckoutSource()
+ return new CDORepositoryElement()
{
public CDORepository getRepository()
{
@@ -77,9 +77,9 @@ public class CDOExplorerAdapterFactory implements IAdapterFactory
return CDOBranchPoint.UNSPECIFIED_DATE;
}
- public CDOID getRootID()
+ public CDOID getObjectID()
{
- return rootID;
+ return objectID;
}
};
}
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/checkouts/CDOCheckoutImpl.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/checkouts/CDOCheckoutImpl.java
index 01131bef9f..2bb0c1b922 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/checkouts/CDOCheckoutImpl.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/checkouts/CDOCheckoutImpl.java
@@ -22,7 +22,6 @@ import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.net4j.util.event.IEvent;
import org.eclipse.net4j.util.event.IListener;
-import org.eclipse.net4j.util.io.IOUtil;
import org.eclipse.net4j.util.lifecycle.ILifecycleEvent;
import org.eclipse.net4j.util.lifecycle.ILifecycleEvent.Kind;
@@ -221,15 +220,18 @@ public abstract class CDOCheckoutImpl extends AbstractElement implements CDOChec
return rootObject;
}
- public void delete()
+ @Override
+ public void delete(boolean deleteContents)
{
+ close();
+
CDOCheckoutManagerImpl manager = getManager();
if (manager != null)
{
manager.removeElement(this);
}
- IOUtil.delete(getFolder());
+ super.delete(deleteContents);
((CDORepositoryImpl)repository).removeCheckout(this);
repository = null;
@@ -250,9 +252,17 @@ public abstract class CDOCheckoutImpl extends AbstractElement implements CDOChec
@SuppressWarnings({ "rawtypes" })
public Object getAdapter(Class adapter)
{
- if (adapter == EObject.class)
+ if (isOpen())
{
- return rootObject;
+ if (adapter == CDOView.class)
+ {
+ return view;
+ }
+
+ if (adapter == EObject.class)
+ {
+ return rootObject;
+ }
}
return super.getAdapter(adapter);
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/properties/CheckoutProperties.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/properties/CheckoutProperties.java
index b413685158..aac47f1e07 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/properties/CheckoutProperties.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/properties/CheckoutProperties.java
@@ -11,6 +11,7 @@
package org.eclipse.emf.cdo.internal.explorer.properties;
import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout;
+import org.eclipse.emf.cdo.internal.explorer.AbstractElement;
import org.eclipse.net4j.util.properties.DefaultPropertyTester;
import org.eclipse.net4j.util.properties.IProperties;
@@ -47,6 +48,24 @@ public class CheckoutProperties extends Properties<CDOCheckout>
return checkout.isOpen();
}
});
+
+ add(new Property<CDOCheckout>("id", "ID", "The ID of this checkout", CATEGORY_CHECKOUT)
+ {
+ @Override
+ protected Object eval(CDOCheckout checkout)
+ {
+ return checkout.getID();
+ }
+ });
+
+ add(new Property<CDOCheckout>("folder", "Folder", "The folder of this checkout", CATEGORY_CHECKOUT)
+ {
+ @Override
+ protected Object eval(CDOCheckout checkout)
+ {
+ return ((AbstractElement)checkout).getFolder();
+ }
+ });
}
public static void main(String[] args)
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/properties/RepositoryProperties.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/properties/RepositoryProperties.java
index 4d5829c1ab..c431bf431a 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/properties/RepositoryProperties.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/properties/RepositoryProperties.java
@@ -11,6 +11,7 @@
package org.eclipse.emf.cdo.internal.explorer.properties;
import org.eclipse.emf.cdo.explorer.repositories.CDORepository;
+import org.eclipse.emf.cdo.internal.explorer.AbstractElement;
import org.eclipse.net4j.util.properties.DefaultPropertyTester;
import org.eclipse.net4j.util.properties.IProperties;
@@ -48,6 +49,24 @@ public class RepositoryProperties extends Properties<CDORepository>
return repository.isConnected();
}
});
+
+ add(new Property<CDORepository>("id", "ID", "The ID of this repository", CATEGORY_REPOSITORY)
+ {
+ @Override
+ protected Object eval(CDORepository repository)
+ {
+ return repository.getID();
+ }
+ });
+
+ add(new Property<CDORepository>("folder", "Folder", "The folder of this repository", CATEGORY_REPOSITORY)
+ {
+ @Override
+ protected Object eval(CDORepository repository)
+ {
+ return ((AbstractElement)repository).getFolder();
+ }
+ });
}
public static void main(String[] args)
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/CDORepositoryImpl.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/CDORepositoryImpl.java
index a1fe2eb0d8..fdd2b893de 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/CDORepositoryImpl.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/CDORepositoryImpl.java
@@ -12,11 +12,14 @@ package org.eclipse.emf.cdo.internal.explorer.repositories;
import org.eclipse.emf.cdo.common.CDOCommonSession.Options.PassiveUpdateMode;
import org.eclipse.emf.cdo.common.branch.CDOBranch;
+import org.eclipse.emf.cdo.common.branch.CDOBranchChangedEvent;
+import org.eclipse.emf.cdo.common.branch.CDOBranchChangedEvent.ChangeKind;
+import org.eclipse.emf.cdo.common.branch.CDOBranchManager;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout;
-import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckoutSource;
import org.eclipse.emf.cdo.explorer.repositories.CDORepository;
+import org.eclipse.emf.cdo.explorer.repositories.CDORepositoryElement;
import org.eclipse.emf.cdo.internal.explorer.AbstractElement;
import org.eclipse.emf.cdo.internal.explorer.bundle.OM;
import org.eclipse.emf.cdo.net4j.CDONet4jSessionConfiguration;
@@ -26,14 +29,12 @@ import org.eclipse.emf.cdo.session.CDOSessionConfiguration;
import org.eclipse.net4j.Net4jUtil;
import org.eclipse.net4j.connector.IConnector;
-import org.eclipse.net4j.util.ObjectUtil;
import org.eclipse.net4j.util.container.ContainerEvent;
import org.eclipse.net4j.util.container.IContainerEvent;
import org.eclipse.net4j.util.container.IManagedContainer;
import org.eclipse.net4j.util.container.IPluginContainer;
import org.eclipse.net4j.util.event.IEvent;
import org.eclipse.net4j.util.event.IListener;
-import org.eclipse.net4j.util.io.IOUtil;
import org.eclipse.net4j.util.lifecycle.ILifecycle;
import org.eclipse.net4j.util.lifecycle.LifecycleEventAdapter;
@@ -61,6 +62,25 @@ public abstract class CDORepositoryImpl extends AbstractElement implements CDORe
}
};
+ private final IListener branchManagerListener = new IListener()
+ {
+ public void notifyEvent(IEvent event)
+ {
+ if (event instanceof CDOBranchChangedEvent)
+ {
+ CDOBranchChangedEvent e = (CDOBranchChangedEvent)event;
+ if (e.getChangeKind() == ChangeKind.RENAMED)
+ {
+ CDORepositoryManagerImpl manager = getManager();
+ if (manager != null)
+ {
+ manager.fireElementChangedEvent(e.getBranch());
+ }
+ }
+ }
+ }
+ };
+
private final IListener mainBranchListener = new IListener()
{
public void notifyEvent(IEvent event)
@@ -85,7 +105,7 @@ public abstract class CDORepositoryImpl extends AbstractElement implements CDORe
{
}
- public final String getRepositoryName()
+ public final String getName()
{
return repositoryName;
}
@@ -114,7 +134,12 @@ public abstract class CDORepositoryImpl extends AbstractElement implements CDORe
session = openSession();
session.addListener(sessionListener);
- session.getBranchManager().getMainBranch().addListener(mainBranchListener);
+
+ CDOBranchManager branchManager = session.getBranchManager();
+ branchManager.addListener(branchManagerListener);
+
+ CDOBranch mainBranch = branchManager.getMainBranch();
+ mainBranch.addListener(mainBranchListener);
state = State.Connected;
}
@@ -195,15 +220,18 @@ public abstract class CDORepositoryImpl extends AbstractElement implements CDORe
return session;
}
- public void delete()
+ @Override
+ public void delete(boolean deleteContents)
{
+ disconnect();
+
CDORepositoryManagerImpl manager = getManager();
if (manager != null)
{
manager.removeElement(this);
}
- IOUtil.delete(getFolder());
+ super.delete(deleteContents);
}
public final CDOCheckout[] getCheckouts()
@@ -274,67 +302,49 @@ public abstract class CDORepositoryImpl extends AbstractElement implements CDORe
@SuppressWarnings({ "rawtypes" })
public Object getAdapter(Class adapter)
{
- if (adapter == CDOCheckoutSource.class && isConnected())
+ if (isConnected())
{
- final CDOID rootID = session.getRepositoryInfo().getRootResourceID();
-
- return new CDOCheckoutSource()
+ if (adapter == CDOSession.class)
{
- public CDORepository getRepository()
- {
- return CDORepositoryImpl.this;
- }
-
- public String getBranchPath()
- {
- return CDOBranch.MAIN_BRANCH_NAME;
- }
+ return session;
+ }
- public long getTimeStamp()
- {
- return CDOBranchPoint.UNSPECIFIED_DATE;
- }
+ if (adapter == CDORepositoryElement.class)
+ {
+ final CDOID objectID = session.getRepositoryInfo().getRootResourceID();
- public CDOID getRootID()
+ return new CDORepositoryElement()
{
- return rootID;
- }
- };
+ public CDORepository getRepository()
+ {
+ return CDORepositoryImpl.this;
+ }
+
+ public String getBranchPath()
+ {
+ return CDOBranch.MAIN_BRANCH_NAME;
+ }
+
+ public long getTimeStamp()
+ {
+ return CDOBranchPoint.UNSPECIFIED_DATE;
+ }
+
+ public CDOID getObjectID()
+ {
+ return objectID;
+ }
+ };
+ }
}
return super.getAdapter(adapter);
}
@Override
- public boolean equals(Object obj)
- {
- if (obj == this)
- {
- return true;
- }
-
- if (obj instanceof CDORepository)
- {
- CDORepository that = (CDORepository)obj;
- return ObjectUtil.equals(getConnectorType(), that.getConnectorType())
- && ObjectUtil.equals(getConnectorDescription(), that.getConnectorDescription())
- && ObjectUtil.equals(repositoryName, that.getRepositoryName());
- }
-
- return false;
- }
-
- @Override
- public int hashCode()
- {
- return ObjectUtil.hashCode(getConnectorType()) ^ ObjectUtil.hashCode(getConnectorDescription())
- ^ ObjectUtil.hashCode(repositoryName);
- }
-
- @Override
public String toString()
{
- return getConnectorType() + "://" + getConnectorDescription() + "/" + repositoryName;
+ return getLabel();
}
@Override
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/CloneCDORepository.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/CloneCDORepository.java
index 5683298f2e..78fce5fe35 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/CloneCDORepository.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/CloneCDORepository.java
@@ -71,6 +71,11 @@ public class CloneCDORepository extends CDORepositoryImpl
return "local";
}
+ public String getURI()
+ {
+ return connectorType + "://" + connectorDescription + "/" + getName();
+ }
+
public final int getReconnectSeconds()
{
return reconnectSeconds;
@@ -95,7 +100,6 @@ public class CloneCDORepository extends CDORepositoryImpl
reconnectSeconds = Integer.parseInt(properties.getProperty("reconnectSeconds"));
recommitSeconds = Integer.parseInt(properties.getProperty("recommitSeconds"));
recommitAttempts = Integer.parseInt(properties.getProperty("recommitAttempts"));
-
}
@Override
@@ -112,13 +116,13 @@ public class CloneCDORepository extends CDORepositoryImpl
@Override
protected CDOSession openSession()
{
- final String repositoryName = getRepositoryName();
+ final String repositoryName = getName();
File folder = new File(getFolder(), "db");
JdbcDataSource dataSource = new JdbcDataSource();
dataSource.setURL("jdbc:h2:" + folder);
- IMappingStrategy mappingStrategy = CDODBUtil.createHorizontalMappingStrategy(true, true, true);
+ IMappingStrategy mappingStrategy = CDODBUtil.createHorizontalMappingStrategy(true, true, false);
IDBAdapter dbAdapter = DBUtil.getDBAdapter("h2");
IDBConnectionProvider connectionProvider = DBUtil.createConnectionProvider(dataSource);
IStore store = CDODBUtil.createStore(mappingStrategy, dbAdapter, connectionProvider);
@@ -148,7 +152,7 @@ public class CloneCDORepository extends CDORepositoryImpl
IRepositorySynchronizer synchronizer = CDOServerUtil
.createRepositorySynchronizer(remoteSessionConfigurationFactory);
- repository = CDOServerUtil.createOfflineClone(repositoryName, store, props, synchronizer);
+ repository = CDOServerUtil.createOfflineClone(repositoryName + "-clone", store, props, synchronizer);
CDOServerUtil.addRepository(container, repository);
Net4jUtil.getAcceptor(container, getConnectorType(), getConnectorDescription());
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/LocalCDORepository.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/LocalCDORepository.java
index 2c68acfcda..8ade6d9c44 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/LocalCDORepository.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/LocalCDORepository.java
@@ -19,10 +19,12 @@ import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.net4j.Net4jUtil;
+import org.eclipse.net4j.acceptor.IAcceptor;
import org.eclipse.net4j.db.DBUtil;
import org.eclipse.net4j.db.IDBAdapter;
import org.eclipse.net4j.db.IDBConnectionProvider;
import org.eclipse.net4j.util.container.IManagedContainer;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.h2.jdbcx.JdbcDataSource;
@@ -40,8 +42,14 @@ public class LocalCDORepository extends CDORepositoryImpl
private IDGeneration idGeneration;
+ private boolean tcpDisabled;
+
+ private int tcpPort;
+
private IRepository repository;
+ private IAcceptor tcpAcceptor;
+
public LocalCDORepository()
{
}
@@ -56,6 +64,16 @@ public class LocalCDORepository extends CDORepositoryImpl
return "local";
}
+ public String getURI()
+ {
+ if (tcpDisabled)
+ {
+ return getConnectorType() + "://" + getConnectorDescription() + "/" + getName();
+ }
+
+ return "tcp://localhost:" + tcpPort + "/" + getName();
+ }
+
public final VersioningMode getVersioningMode()
{
return versioningMode;
@@ -66,12 +84,24 @@ public class LocalCDORepository extends CDORepositoryImpl
return idGeneration;
}
+ public final boolean isTCPDisabled()
+ {
+ return tcpDisabled;
+ }
+
+ public final int getTCPPort()
+ {
+ return tcpPort;
+ }
+
@Override
protected void init(File folder, String type, Properties properties)
{
super.init(folder, type, properties);
versioningMode = VersioningMode.valueOf(properties.getProperty("versioningMode"));
idGeneration = IDGeneration.valueOf(properties.getProperty("idGeneration"));
+ tcpDisabled = Boolean.parseBoolean(properties.getProperty("tcpDisabled"));
+ tcpPort = Integer.parseInt(properties.getProperty("tcpPort"));
}
@Override
@@ -80,12 +110,14 @@ public class LocalCDORepository extends CDORepositoryImpl
super.collectProperties(properties);
properties.put("versioningMode", versioningMode.toString());
properties.put("idGeneration", idGeneration.toString());
+ properties.put("tcpDisabled", Boolean.toString(tcpDisabled));
+ properties.put("tcpPort", Integer.toString(tcpPort));
}
@Override
protected CDOSession openSession()
{
- String repositoryName = "repo" + getID();
+ String repositoryName = getName();
File folder = new File(getFolder(), "db");
JdbcDataSource dataSource = new JdbcDataSource();
@@ -93,7 +125,7 @@ public class LocalCDORepository extends CDORepositoryImpl
boolean auditing = versioningMode.isSupportingAudits();
boolean branching = versioningMode.isSupportingBranches();
- boolean withRanges = auditing;
+ boolean withRanges = false;
IMappingStrategy mappingStrategy = CDODBUtil.createHorizontalMappingStrategy(auditing, branching, withRanges);
IDBAdapter dbAdapter = DBUtil.getDBAdapter("h2");
@@ -112,6 +144,11 @@ public class LocalCDORepository extends CDORepositoryImpl
CDOServerUtil.addRepository(container, repository);
Net4jUtil.getAcceptor(container, getConnectorType(), getConnectorDescription());
+ if (!tcpDisabled)
+ {
+ tcpAcceptor = Net4jUtil.getAcceptor(container, "tcp", "0.0.0.0:" + tcpPort);
+ }
+
return super.openSession();
}
@@ -120,11 +157,11 @@ public class LocalCDORepository extends CDORepositoryImpl
{
super.closeSession();
- if (repository != null)
- {
- repository.deactivate();
- repository = null;
- }
+ LifecycleUtil.deactivate(tcpAcceptor);
+ tcpAcceptor = null;
+
+ LifecycleUtil.deactivate(repository);
+ repository = null;
}
/**
diff --git a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/RemoteCDORepository.java b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/RemoteCDORepository.java
index 205a478850..73cbe36d21 100644
--- a/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/RemoteCDORepository.java
+++ b/plugins/org.eclipse.emf.cdo.explorer/src/org/eclipse/emf/cdo/internal/explorer/repositories/RemoteCDORepository.java
@@ -36,6 +36,11 @@ public class RemoteCDORepository extends CDORepositoryImpl
return connectorDescription;
}
+ public String getURI()
+ {
+ return connectorType + "://" + connectorDescription + "/" + getName();
+ }
+
@Override
protected void init(File folder, String type, Properties properties)
{

Back to the top