/** * Copyright 2010 The University of North Carolina at Chapel Hill * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package unc.lib.cdr.workbench.xwalk; 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.IContentDescription; import org.eclipse.core.runtime.content.IContentType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import unc.lib.cdr.workbench.IResourceConstants; public class MetadataSourcePropertyTester extends PropertyTester { private static final Logger LOG = LoggerFactory.getLogger(MetadataSourcePropertyTester.class); public MetadataSourcePropertyTester() { // TODO Auto-generated constructor stub } @Override public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { LOG.debug("property tester called: {} {} {}", receiver, property, expectedValue); if (receiver instanceof IFile && "isTabularMetadataSource".equals(property)) { IContentType actualContentType = null; IFile file = (IFile) receiver; if (!file.exists()) { return false; } IContentDescription contentDescription = null; try { contentDescription = file.getContentDescription(); } catch (CoreException e) { throw new Error(e); } if (contentDescription != null) { actualContentType = contentDescription.getContentType(); } else { actualContentType = Platform.getContentTypeManager().findContentTypeFor(file.getName()); } if (actualContentType != null) { LOG.debug("found content type: {} {}", actualContentType.getId(), actualContentType.toString()); // if (isKindOfUsed) // return actualContentType.isKindOf(Platform.getContentTypeManager().getContentType(expectedValue)); // return expectedValue.equals(actualContentType.getId()); } return false; } if (receiver instanceof IFile && "isCrosswalkFile".equals(property)) { IFile file = (IFile) receiver; if (!file.exists()) { return false; } return IResourceConstants.CROSSWALK_EXTENSION.equals(file.getFileExtension()); } return false; } }