blob: 0ba01db973321dabff35d63243ffa00539a51b63 [file] [log] [blame]
//------------------------------------------------------------------------------
// 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;
}
}