// Copyright (c) 2009-2010 by the projectusus.org contributors
// This software is released under the terms and conditions
// of the Eclipse Public License (EPL) 1.0.
// See http://www.eclipse.org/legal/epl-v10.html for details.
package org.projectusus.core.project;
import static java.util.Arrays.asList;
import static java.util.Collections.unmodifiableList;
import static org.projectusus.core.project2.UsusProjectSupport.asUsusProject;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IProject;
public class FindUsusProjects {
private final Iterable<IProject> candidates;
private static Iterable<IProject> asProjectList( Object[] elements ) {
List<IProject> projects = new ArrayList<IProject>();
for( Object element : elements ) {
if( element instanceof IProject ) {
projects.add( (IProject)element );
}
}
return projects;
}
public FindUsusProjects( Iterable<IProject> candidates ) {
this.candidates = candidates;
}
public FindUsusProjects( IProject[] candidates ) {
this( asList( candidates ) );
}
public FindUsusProjects( Object[] candidates ) {
this( asProjectList( candidates ) );
}
public List<IProject> compute() {
return compute( true );
}
public List<IProject> computeOpposite() {
return compute( false );
}
private List<IProject> compute( boolean findUsusProjects ) {
List<IProject> result = new ArrayList<IProject>();
for( IProject project : candidates ) {
if( findUsusProjects == asUsusProject( project ).isUsusProject() ) {
result.add( project );
}
}
return unmodifiableList( result );
}
}