diff options
Diffstat (limited to 'plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceDependencyRegister.java')
-rw-r--r-- | plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceDependencyRegister.java | 213 |
1 files changed, 0 insertions, 213 deletions
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceDependencyRegister.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceDependencyRegister.java deleted file mode 100644 index 34ff6435f..000000000 --- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceDependencyRegister.java +++ /dev/null @@ -1,213 +0,0 @@ -/*************************************************************************************************** - * Copyright (c) 2003, 2004 IBM Corporation 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: IBM Corporation - initial API and implementation - **************************************************************************************************/ -package org.eclipse.wst.common.internal.emf.utilities; - - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.impl.AdapterImpl; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.ResourceSet; -import org.eclipse.emf.ecore.resource.URIConverter; - -public class ResourceDependencyRegister { - protected static Map GLOBAL_DEPENDENCIES = new HashMap(); - private static String RESOURCE_DEPENDENCY_TYPE = "ResourceDependencyAdapter"; //$NON-NLS-1$ - protected Map localDependencies = new HashMap(); - - class ResourceDependencyAdapter extends AdapterImpl { - Resource dependentResource; - - ResourceDependencyAdapter(Resource aDependentResource) { - dependentResource = aDependentResource; - dependentResource.eAdapters().add(this); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object) - */ - public boolean isAdapterForType(Object type) { - return RESOURCE_DEPENDENCY_TYPE.equals(type); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification) - */ - public void notifyChanged(Notification msg) { - //Listen for unloads and removes - switch (msg.getFeatureID(null)) { - case Resource.RESOURCE__IS_LOADED : - if (msg.getNotifier() != dependentResource && msg.getOldBooleanValue() && !msg.getNewBooleanValue()) - dependentResource.unload(); - break; - case Resource.RESOURCE__RESOURCE_SET : - if (msg.getOldValue() != null && msg.getNewValue() == null) { - if (msg.getNotifier() == dependentResource) - ((Resource) getTarget()).eAdapters().remove(this); - else { - ResourceSet set = dependentResource.getResourceSet(); - if (set != null) - set.getResources().remove(dependentResource); - } - } - break; - } - } - } - - class ResourceSetListener extends AdapterImpl { - /* - * (non-Javadoc) - * - * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification) - */ - public void notifyChanged(Notification msg) { - if (msg.getEventType() == Notification.ADD) - proccessAddedResource((ResourceSet) msg.getNotifier(), (Resource) msg.getNewValue()); - } - } - - /** - * Register a dependency between two URIs. The first parameter, aURIString, is the one that - * dependentUriString depends on. - * - * @param aUriString - * java.lang.String - * @param dependentUriString - * java.lang.String - */ - public static void registerDependency(URI targetURI, URI dependentURI) { - if (targetURI != null && dependentURI != null) { - GLOBAL_DEPENDENCIES.put(dependentURI, targetURI); - } - } - - public ResourceDependencyRegister(ResourceSet aResourceSet) { - initialize(aResourceSet); - } - - - ResourceDependencyRegister() { - super(); - } - - /** - * @param aResourceSet - */ - protected void initialize(ResourceSet aResourceSet) { - if (aResourceSet == null) - throw new NullPointerException("The ResourceSet cannot be null."); //$NON-NLS-1$ - initializeLocalDependencies(aResourceSet); - setupDependencyAdapters(aResourceSet); - setupResourceSetListener(aResourceSet); - } - - /** - * @param aResourceSet - */ - protected void setupResourceSetListener(ResourceSet aResourceSet) { - aResourceSet.eAdapters().add(new ResourceSetListener()); - } - - /** - * @param aResourceSet - * @return - */ - protected void setupDependencyAdapters(ResourceSet aResourceSet) { - if (!aResourceSet.getResources().isEmpty()) { - Iterator it = localDependencies.entrySet().iterator(); - Map.Entry entry; - URI dependentURI, targetURI; - while (it.hasNext()) { - entry = (Map.Entry) it.next(); - dependentURI = (URI) entry.getKey(); - targetURI = (URI) entry.getValue(); - setupDependencyAdapter(aResourceSet, dependentURI, targetURI); - } - } - } - - /** - * @param aResourceSet - * @param dependentURI - * @param targetURI - * @return - */ - protected void setupDependencyAdapter(ResourceSet aResourceSet, URI dependentURI, URI targetURI) { - Resource dependent = aResourceSet.getResource(dependentURI, false); - if (dependent != null) - setupDependencyAdapter(dependent, targetURI, aResourceSet); - } - - protected void setupDependencyAdapter(Resource dependent, URI targetURI, ResourceSet aResourceSet) { - Resource target = aResourceSet.getResource(targetURI, false); - if (target == null) - target = aResourceSet.createResource(targetURI); - target.eAdapters().add(new ResourceDependencyAdapter(dependent)); - } - - /** - * @param aResourceSet - */ - protected void initializeLocalDependencies(ResourceSet aResourceSet) { - URIConverter converter = aResourceSet.getURIConverter(); - initializeLocalDependencies(converter); - } - - /** - * @param aResourceSet - */ - protected void initializeLocalDependencies(URIConverter aConverter) { - Iterator it = GLOBAL_DEPENDENCIES.entrySet().iterator(); - Map resolved = new HashMap(); - Map.Entry entry; - URI key, value; - while (it.hasNext()) { - entry = (Map.Entry) it.next(); - key = (URI) entry.getKey(); - value = (URI) entry.getValue(); - key = normalize(key, aConverter, resolved); - value = normalize(value, aConverter, resolved); - localDependencies.put(key, value); - } - } - - /** - * @param relativeURI - * @param converter - * @param resolved - * @return - */ - protected URI normalize(URI relativeURI, URIConverter converter, Map resolved) { - URI result = (URI) resolved.get(relativeURI); - if (result == null) { - result = converter.normalize(relativeURI); - resolved.put(relativeURI, result); - } - return result; - } - - /** - * @param set - * @param resource - */ - protected void proccessAddedResource(ResourceSet set, Resource resource) { - URI targetURI = (URI) localDependencies.get(resource.getURI()); - if (targetURI != null) - setupDependencyAdapter(resource, targetURI, set); - } -}
\ No newline at end of file |