diff options
Diffstat (limited to 'jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/jaxbprops/JaxbPropertiesResourceModelProvider.java')
-rw-r--r-- | jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/jaxbprops/JaxbPropertiesResourceModelProvider.java | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/jaxbprops/JaxbPropertiesResourceModelProvider.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/jaxbprops/JaxbPropertiesResourceModelProvider.java deleted file mode 100644 index d2b2e72c72..0000000000 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/jaxbprops/JaxbPropertiesResourceModelProvider.java +++ /dev/null @@ -1,159 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 Oracle. 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: - * Oracle - initial API and implementation - *******************************************************************************/ -package org.eclipse.jpt.jaxb.core.internal.resource.jaxbprops; - -import java.util.HashMap; -import java.util.Map; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceChangeEvent; -import org.eclipse.core.resources.IResourceChangeListener; -import org.eclipse.core.resources.IResourceDelta; -import org.eclipse.core.resources.IResourceDeltaVisitor; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.common.core.JptResourceModel; -import org.eclipse.jpt.common.utility.internal.iterables.SnapshotCloneIterable; -import org.eclipse.jpt.jaxb.core.JaxbProject; -import org.eclipse.jpt.jaxb.core.JaxbResourceModelProvider; -import org.eclipse.jpt.jaxb.core.JptJaxbCorePlugin; -import org.eclipse.jpt.jaxb.core.resource.jaxbprops.JaxbPropertiesResource; - - -public class JaxbPropertiesResourceModelProvider - implements JaxbResourceModelProvider { - - // singleton - private static final JaxbPropertiesResourceModelProvider INSTANCE = new JaxbPropertiesResourceModelProvider(); - - - /** - * Return the singleton. - */ - public static JaxbPropertiesResourceModelProvider instance() { - return INSTANCE; - } - - - private final Map<IFile, JaxbPropertiesResourceImpl> models = new HashMap<IFile, JaxbPropertiesResourceImpl>(); - - private final IResourceChangeListener resourceChangeListener; - - - /** - * Enforce singleton usage - */ - private JaxbPropertiesResourceModelProvider() { - super(); - this.resourceChangeListener = buildResourceChangeListener(); - ResourcesPlugin.getWorkspace().addResourceChangeListener(this.resourceChangeListener); - } - - - protected IResourceChangeListener buildResourceChangeListener() { - return new IResourceChangeListener() { - public void resourceChanged(IResourceChangeEvent event) { - handleResourceChangeEvent(event); - } - }; - } - - public IContentType getContentType() { - return JptJaxbCorePlugin.JAXB_PROPERTIES_CONTENT_TYPE; - } - - public JptResourceModel buildResourceModel(JaxbProject jaxbProject, IFile file) { - return buildResourceModel(file); - } - - public JaxbPropertiesResource buildResourceModel(IFile file) { - JaxbPropertiesResourceImpl resource = this.models.get(file); - if (resource != null) { - return resource; - } - resource = new JaxbPropertiesResourceImpl(file); - this.models.put(file, resource); - return resource; - } - - protected void handleResourceChangeEvent(IResourceChangeEvent event) { - switch (event.getType()) { - case IResourceChangeEvent.PRE_CLOSE : - case IResourceChangeEvent.PRE_DELETE : - removeProjectResources((IProject) event.getResource()); - return; - - case IResourceChangeEvent.POST_CHANGE : - updateResources(event.getDelta()); - } - } - - protected void removeProjectResources(IProject removedProject) { - for (IFile file : new SnapshotCloneIterable<IFile>(this.models.keySet())) { - if (file.getProject().equals(removedProject)) { - removeResource(file); - } - } - } - - protected void updateResources(IResourceDelta delta) { - try { - delta.accept(new ResourceDeltaVisitor()); - } - catch (CoreException ce) { - // shouldn't happen - JptJaxbCorePlugin.log(ce); - } - } - - protected void removeResource(IFile file) { - this.models.remove(file); - } - - protected void updateResource(IFile file) { - JaxbPropertiesResourceImpl resource = this.models.get(file); - if (resource != null) { - resource.update(); - } - } - - - protected class ResourceDeltaVisitor - implements IResourceDeltaVisitor { - - public boolean visit(IResourceDelta delta) { - IResource res = delta.getResource(); - switch (res.getType()) { - case IResource.ROOT : - return true; // visit children - case IResource.PROJECT : - return true; // visit children - case IResource.FOLDER : - return true; // visit children - case IResource.FILE : - fileChanged((IFile) res, delta.getKind()); - return false; // no children - default : - return false; // no children (probably shouldn't get here...) - } - } - - protected void fileChanged(IFile file, int deltaKind) { - if (deltaKind == IResourceDelta.REMOVED) { - JaxbPropertiesResourceModelProvider.this.removeResource(file); - } - else if (deltaKind == IResourceDelta.CHANGED) { - JaxbPropertiesResourceModelProvider.this.updateResource(file); - } - } - } -} |