Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf')
-rw-r--r--plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/Activator.java23
-rw-r--r--plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/ContentTypePropertyTester.java55
-rw-r--r--plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/EMFAdapterFactory.java29
-rw-r--r--plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/EMFModelProvider.java41
-rw-r--r--plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/EMFResourceMapping.java54
5 files changed, 202 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/Activator.java b/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/Activator.java
new file mode 100644
index 000000000..c4ccc9521
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/Activator.java
@@ -0,0 +1,23 @@
+package org.eclipse.emf.compare.logical;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+ public static final String PLUGIN_ID = "org.eclipse.emf.compare.logical"; //$NON-NLS-1$
+
+ private static BundleContext context;
+
+ public void start(BundleContext bundleContext) throws Exception {
+ Activator.context = bundleContext;
+ }
+
+ public void stop(BundleContext bundleContext) throws Exception {
+ Activator.context = null;
+ }
+
+ static BundleContext getContext() {
+ return context;
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/ContentTypePropertyTester.java b/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/ContentTypePropertyTester.java
new file mode 100644
index 000000000..3e92aa341
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/ContentTypePropertyTester.java
@@ -0,0 +1,55 @@
+package org.eclipse.emf.compare.logical;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.core.runtime.content.IContentTypeManager;
+
+public class ContentTypePropertyTester extends PropertyTester {
+ private static final String PROPERTY_CONTENT_TYPE_ID = "contentTypeId"; //$NON-NLS-1$
+
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+ if (receiver instanceof IFile && expectedValue instanceof String) {
+ if (PROPERTY_CONTENT_TYPE_ID.equals(property)) {
+ return hasContentType((IFile)receiver, (String)expectedValue);
+ }
+ }
+ return false;
+ }
+
+ private boolean hasContentType(IFile resource, String contentTypeId) {
+ IContentTypeManager ctManager = Platform.getContentTypeManager();
+ InputStream resourceContent = null;
+ IContentType[] contentTypes = null;
+ try {
+ resourceContent = resource.getContents();
+ contentTypes = ctManager.findContentTypesFor(resourceContent, resource.getName());
+ } catch (CoreException e) {
+ ctManager.findContentTypesFor(resource.getName());
+ } catch (IOException e) {
+ ctManager.findContentTypesFor(resource.getName());
+ } finally {
+ if (resourceContent != null) {
+ try {
+ resourceContent.close();
+ } catch (IOException e) {
+ // would have already been catched by the outer try, leave the stream open
+ }
+ }
+ }
+
+ if (contentTypes != null) {
+ for (IContentType type : contentTypes) {
+ if (type.getId().equals(contentTypeId)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/EMFAdapterFactory.java b/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/EMFAdapterFactory.java
new file mode 100644
index 000000000..d4dc96cfa
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/EMFAdapterFactory.java
@@ -0,0 +1,29 @@
+package org.eclipse.emf.compare.logical;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.mapping.ResourceMapping;
+import org.eclipse.core.runtime.IAdapterFactory;
+
+public class EMFAdapterFactory implements IAdapterFactory {
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
+ */
+ public Object getAdapter(Object adaptableObject, Class adapterType) {
+ if (adapterType == ResourceMapping.class && adaptableObject instanceof IResource) {
+ new EMFResourceMapping((IResource)adaptableObject);
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
+ */
+ public Class[] getAdapterList() {
+ return new Class[] {ResourceMapping.class,};
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/EMFModelProvider.java b/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/EMFModelProvider.java
new file mode 100644
index 000000000..f1a0df711
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/EMFModelProvider.java
@@ -0,0 +1,41 @@
+package org.eclipse.emf.compare.logical;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.mapping.ModelProvider;
+import org.eclipse.core.resources.mapping.ResourceMapping;
+import org.eclipse.core.resources.mapping.ResourceMappingContext;
+import org.eclipse.core.resources.mapping.ResourceTraversal;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+public class EMFModelProvider extends ModelProvider {
+ public static final String PROVIDER_ID = "org.eclipse.emf.compare.model.provider"; //$NON-NLS-1$
+
+ public EMFModelProvider() {
+ System.out.println();
+ }
+
+ @Override
+ public ResourceMapping[] getMappings(IResource resource, ResourceMappingContext context,
+ IProgressMonitor monitor) throws CoreException {
+ return super.getMappings(resource, context, monitor);
+ }
+
+ @Override
+ public ResourceMapping[] getMappings(IResource[] resources, ResourceMappingContext context,
+ IProgressMonitor monitor) throws CoreException {
+ return super.getMappings(resources, context, monitor);
+ }
+
+ @Override
+ public ResourceMapping[] getMappings(ResourceTraversal[] traversals, ResourceMappingContext context,
+ IProgressMonitor monitor) throws CoreException {
+ return super.getMappings(traversals, context, monitor);
+ }
+
+ @Override
+ public ResourceTraversal[] getTraversals(ResourceMapping[] mappings, ResourceMappingContext context,
+ IProgressMonitor monitor) throws CoreException {
+ return super.getTraversals(mappings, context, monitor);
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/EMFResourceMapping.java b/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/EMFResourceMapping.java
new file mode 100644
index 000000000..2beb01f64
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.logical/src/org/eclipse/emf/compare/logical/EMFResourceMapping.java
@@ -0,0 +1,54 @@
+package org.eclipse.emf.compare.logical;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.mapping.ResourceMapping;
+import org.eclipse.core.resources.mapping.ResourceMappingContext;
+import org.eclipse.core.resources.mapping.ResourceTraversal;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+public class EMFResourceMapping extends ResourceMapping {
+ private final IResource resource;
+
+ public EMFResourceMapping(IResource resource) {
+ this.resource = resource;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.resources.mapping.ResourceMapping#getModelObject()
+ */
+ @Override
+ public Object getModelObject() {
+ return resource;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.resources.mapping.ResourceMapping#getModelProviderId()
+ */
+ @Override
+ public String getModelProviderId() {
+ return EMFModelProvider.PROVIDER_ID;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.resources.mapping.ResourceMapping#getProjects()
+ */
+ @Override
+ public IProject[] getProjects() {
+ return new IProject[] {resource.getProject(),};
+ }
+
+ @Override
+ public ResourceTraversal[] getTraversals(ResourceMappingContext context, IProgressMonitor monitor)
+ throws CoreException {
+ return new ResourceTraversal[] {new ResourceTraversal(new IResource[] {resource,},
+ IResource.DEPTH_INFINITE, IResource.NONE)};
+ }
+}

Back to the top