package mil.nga.giat.geowave.core.geotime.store.query; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; /** * Constraints per each property name referenced in a query. * */ public class TemporalConstraintsSet { final Map<String, TemporalConstraints> constraintsSet = new HashMap<String, TemporalConstraints>(); private boolean exact = true; public TemporalConstraintsSet() {} public boolean hasConstraintsForRange( final String startName, final String endName ) { return constraintsSet.containsKey(startName + "_" + endName); } public void setExact( boolean exact ) { this.exact = exact; } public boolean isExact() { return exact; } public TemporalConstraints getConstraintsForRange( final String startName, final String endName ) { final String rangeName = startName + "_" + endName; if (constraintsSet.containsKey(rangeName)) { return constraintsSet.get(rangeName); } else { final TemporalConstraints constraints = new TemporalConstraints( rangeName); constraintsSet.put( rangeName, constraints); return constraints; } } public TemporalConstraints getConstraintsFor( final String fieldName ) { if (constraintsSet.containsKey(fieldName)) { return constraintsSet.get(fieldName); } else { final TemporalConstraints constraints = new TemporalConstraints( fieldName); constraintsSet.put( fieldName, constraints); return constraints; } } public void removeConstraints( final String... names ) { for (String name : names) constraintsSet.remove(name); } public void removeAllConstraintsExcept( final String... names ) { final Map<String, TemporalConstraints> newConstraintsSet = new HashMap<String, TemporalConstraints>(); for (final String name : names) { final TemporalConstraints constraints = constraintsSet.get(name); if (constraints != null) { newConstraintsSet.put( name, constraints); } } constraintsSet.clear(); constraintsSet.putAll(newConstraintsSet); } public boolean hasConstraintsFor( final String propertyName ) { return (propertyName != null) && constraintsSet.containsKey(propertyName); } public Set<Entry<String, TemporalConstraints>> getSet() { return constraintsSet.entrySet(); } public boolean isEmpty() { if (constraintsSet.isEmpty()) { return true; } boolean isEmpty = true; for (final Entry<String, TemporalConstraints> entry : getSet()) { isEmpty &= entry.getValue().isEmpty(); } return isEmpty; } }