//------------------------------------------------------------------------------ // Copyright (c) 2005, 2006 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 implementation //------------------------------------------------------------------------------ package org.eclipse.epf.authoring.ui.filters; import java.util.Collection; import java.util.Iterator; import org.eclipse.epf.library.edit.itemsfilter.CategorizedProcessesItemProvider; import org.eclipse.epf.library.edit.itemsfilter.IAllFilter; import org.eclipse.epf.library.edit.itemsfilter.ProcessesItemProvider; import org.eclipse.epf.library.edit.util.MethodElementUtil; import org.eclipse.epf.uma.Activity; import org.eclipse.epf.uma.Discipline; import org.eclipse.epf.uma.MethodPlugin; import org.eclipse.epf.uma.Process; import org.eclipse.epf.uma.ProcessComponent; import org.eclipse.epf.uma.ProcessPackage; /** * Filters the {@link Process}s for reference workflows of {@link Discipline}. * * @author Shashidhar Kannoori * @since 1.0 */ public class ReferenceWorkFlowFilter extends AbstractBaseFilter implements IAllFilter { /* * (non-Javadoc) * * @see com.ibm.library.edit.itemsfilter.IAllFilter#getObject() */ public Object getObject() { return null; } /* * (non-Javadoc) * * @see com.ibm.library.edit.IFilter#accept(java.lang.Object) */ public boolean accept(Object obj) { // if can't be accdepted by super, return. if (!super.accept(obj)) { return false; } Object contentElement = helper.getContentElement(); if (contentElement != null) { if (obj.equals(helper.getContentElement())) return false; } if (helper.getAlreadySelectedList() != null) { if (obj instanceof ProcessComponent) { if (helper.getAlreadySelectedList().contains( ((ProcessComponent) obj).getProcess())) return false; } if(helper.getAlreadySelectedList().contains(obj)) return false; } if (!helper.matchPattern(obj)) return false; if (obj instanceof MethodPlugin) { if (contentElement != null) { if (MethodElementUtil.getAllModels(contentElement) .contains(obj)) return true; else return false; } else { return true; } } if (obj instanceof ProcessesItemProvider) { Collection list = ((ProcessesItemProvider) obj).getChildren(obj); for (Iterator ior = list.iterator(); ior.hasNext();) { Object object = ior.next(); if (((CategorizedProcessesItemProvider) object).getChildren( object).isEmpty()) ior.remove(); } if (list.isEmpty()) return false; else return true; } if (obj instanceof Activity) return true; if (obj instanceof ProcessPackage) { if (!(obj instanceof ProcessComponent)) { if (((ProcessPackage) obj).getProcessElements().isEmpty() && ((ProcessPackage) obj).getChildPackages().isEmpty()) return false; else return true; } else { return true; } } return false; } }