package controller;
import db.DatabaseAccessException;
/**
* A {@code Constraint} describes a set of points.
*/
public interface Constraint {
/**
* Activates this {@code Constraint}, determining whether the {@code Constraint} is used to filter all points. It
* updates the value in the {@link Database}, too.
*
* @param active
* Activates or deactivates this {@code Constraint}
* @throws DatabaseAccessException
* if the write operation in {@link Database}
*/
void setActive(boolean active) throws DatabaseAccessException;
/**
* Returns the unique identifier of this {@code Constraint}.
*
* @return the identifier
*/
int getId();
/**
* Returns if this {@code Constraint} is active.
*
* @return True, if the {@code Constraint} is active.
*/
boolean isActive();
/**
* Deletes this {@code Constraint} from the {@link Database}.
*
* @throws DatabaseAccessException
* if the write operation failed in {@link Database}.
*/
void remove() throws DatabaseAccessException;
}