/*
* This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
*
* Copyright 2008-2015 Geosparc nv, http://www.geosparc.com/, Belgium.
*
* The program is available in open source according to the GNU Affero
* General Public License. All contributions in this program are covered
* by the Geomajas Contributors License Agreement. For full licensing
* details, see LICENSE.txt in the project root.
*/
package org.geomajas.widget.searchandfilter.search.dto;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
* Logic Criterion grouping criteria by AND.
*
* @author Kristof Heirwegh
*/
public class AndCriterion implements Criterion {
private static final long serialVersionUID = 100L;
private List<Criterion> criteria;
// ----------------------------------------------------------
@Override
public List<Criterion> getCriteria() {
if (criteria == null) {
criteria = new ArrayList<Criterion>();
}
return criteria;
}
public void setCriteria(List<Criterion> criteria) {
this.criteria = criteria;
}
@Override
public boolean isValid() {
if (criteria != null && criteria.size() > 0) {
for (Criterion critter : criteria) {
if (!critter.isValid()) {
return false;
}
}
return true;
} else {
return false;
}
}
@Override
public void serverLayerIdVisitor(Set<String> layerIds) {
for (Criterion criterion : getCriteria()) {
criterion.serverLayerIdVisitor(layerIds);
}
}
@Override
public String getDisplayText() {
StringBuilder sb = new StringBuilder();
boolean first = true;
for (Criterion criterion : criteria) {
if (!first) {
sb.append(" AND ");
}
sb.append(criterion.getDisplayText());
first = false;
}
return sb.toString();
}
@Override
public String toString() {
return getDisplayText();
}
}