/*
* Copyright 2015 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.robotframework.ide.eclipse.main.plugin.views.execution;
import java.util.List;
import org.rf.ide.core.execution.Status;
import org.robotframework.red.viewers.TreeContentProvider;
class ExecutionViewContentProvider extends TreeContentProvider {
private boolean isFailedFilterEnabled;
void setFailedFilterEnabled(final boolean isFailedFilterEnabled) {
this.isFailedFilterEnabled = isFailedFilterEnabled;
}
void switchFailedFilter() {
isFailedFilterEnabled = !isFailedFilterEnabled;
}
@Override
public Object[] getElements(final Object inputElement) {
return (ExecutionStatus[]) inputElement;
}
@Override
public Object[] getChildren(final Object element) {
if (element instanceof ExecutionStatus) {
final List<ExecutionStatus> children = ((ExecutionStatus) element).getChildren();
if (isFailedFilterEnabled) {
return children.stream()
.filter(status -> status.getStatus() == Status.FAIL)
.toArray(ExecutionStatus[]::new);
}
return children.toArray(new ExecutionStatus[0]);
}
return null;
}
@Override
public Object getParent(final Object element) {
if (element instanceof ExecutionStatus) {
return ((ExecutionStatus) element).getParent();
}
return null;
}
@Override
public boolean hasChildren(final Object element) {
if (element instanceof ExecutionStatus) {
return ((ExecutionStatus) element).getChildren().size() > 0;
}
return false;
}
}