diff options
author | Eike Stepper | 2015-02-07 08:38:02 +0000 |
---|---|---|
committer | Eike Stepper | 2015-02-18 14:40:23 +0000 |
commit | 4a7e186d272386c230452a4b4c1353cd4d0dc44e (patch) | |
tree | a1448c5a22802fa00563cdda74b941802cc01b1e /plugins/org.eclipse.emf.cdo.explorer/src | |
parent | cd2c741de78a8ed929784b70f06aee04848e9047 (diff) | |
download | cdo-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')
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) { |