package org.richfaces.demo.common.navigation;
import java.util.Collection;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
public class DemoDescriptor extends BaseDescriptor {
private static final long serialVersionUID = 6822187362271025752L;
private Collection<SampleDescriptor> samples;
private Boolean excludeReference = false;
private boolean containsNewSamples() {
for (SampleDescriptor sample : samples) {
if (sample.isNewEnabled()) {
return true;
}
}
return false;
}
private boolean containsEnabledSamples() {
for (SampleDescriptor sample : samples) {
if (sample.isCurrentlyEnabled()) {
return true;
}
}
return false;
}
public boolean isNewItems() {
return isNewEnabled() || containsNewSamples();
}
public boolean hasEnabledItems() {
return isCurrentlyEnabled() && containsEnabledSamples();
}
public SampleDescriptor getSampleById(String id) {
for (SampleDescriptor sample : getSamples()) {
if (sample.getId().equals(id)) {
return sample;
}
}
for (SampleDescriptor sample : getSamples()) {
if (sample.isCurrentlyEnabled()) {
return sample;
}
}
// TODO: We should never reach here, perhaps throw an ISE if we do?
return samples.iterator().next();
}
@XmlElementWrapper(name = "samples")
@XmlElement(name = "sample")
public Collection<SampleDescriptor> getSamples() {
if (samples == null) {
return null;
}
return Collections2.filter(samples, new Predicate<SampleDescriptor>() {
public boolean apply(SampleDescriptor sample) {
return sample.isCurrentlyEnabled();
}
});
}
public void setSamples(Collection<SampleDescriptor> samples) {
this.samples = samples;
}
@XmlAttribute(name = "excludeReference")
public boolean isExcludeReference() {
return excludeReference;
}
public void setExcludeReference(boolean excludeReference) {
this.excludeReference = excludeReference;
}
}