// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataprofiler.core.ui.filters;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.TreePath;
import org.eclipse.jface.viewers.Viewer;
import org.talend.commons.emf.FactoriesUtil;
import org.talend.cwm.helper.SwitchHelpers;
import org.talend.dataprofiler.core.model.nodes.foldernode.AnaElementFolderNode;
import org.talend.dq.nodes.SysIndicatorFolderRepNode;
import org.talend.resource.EResourceConstant;
import org.talend.resource.ResourceManager;
import orgomg.cwm.foundation.softwaredeployment.Component;
import orgomg.cwm.objectmodel.core.Dependency;
import orgomg.cwm.objectmodel.core.util.CoreSwitch;
/**
* @author rli
*
*/
public class EMFObjFilter extends AbstractViewerFilter {
public static final int FILTER_ID = 1;
private CoreSwitch<Dependency> dependencySwitch;
public EMFObjFilter() {
super();
dependencySwitch = new CoreSwitch<Dependency>() {
public Dependency caseDependency(Dependency object) {
return object;
}
};
}
public int getId() {
return FILTER_ID;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object,
* java.lang.Object)
*/
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
if (parentElement instanceof TreePath) {
TreePath path = (TreePath) parentElement;
if (path.getLastSegment() instanceof AnaElementFolderNode) {
return true;
}
} else if (parentElement instanceof IFolder) {
IFolder folder = (IFolder) parentElement;
if ("Exchange".equals(folder.getName())) { //$NON-NLS-1$
return false;
}
}
if (element instanceof EObject) {
EObject eObj = (EObject) element;
if (SwitchHelpers.CONNECTION_SWITCH.doSwitch(eObj) != null || dependencySwitch.doSwitch(eObj) != null) {
return false;
}
if (eObj instanceof Component) {
return false;
}
} else if (element instanceof IFile) {
IFile file = (IFile) element;
if (file.getName().indexOf(".") == 0) { //$NON-NLS-1$
return false;
}
if (FactoriesUtil.PROPERTIES_EXTENSION.equals(file.getFileExtension())) {
return false;
}
if (ResourceManager.getMetadataFolder().getLocation().isPrefixOf(file.getLocation())) {
return false;
}
return file.getFileExtension() != null;
} else if (element instanceof SysIndicatorFolderRepNode) {
if (((SysIndicatorFolderRepNode) element).getLabel().equals(EResourceConstant.SYSTEM_INDICATORS_OVERVIEW.getName())) {//$NON-NLS-1$
return false;
}
}
// else if (element instanceof SysIndicatorDefinitionRepNode
// && ((SysIndicatorDefinitionRepNode) element).isSystemIndicator()) {
// List<TdExpression> indiExpression = ((SysIndicatorDefinitionRepNode) element).getIndicatorDefinition()
// .getSqlGenericExpression();
// if (indiExpression == null || indiExpression.size() == 0) {
// return false;
// }
// }
return true;
}
}