| | |
| | | */ |
| | | package org.opends.server.admin.condition; |
| | | |
| | | |
| | | |
| | | import org.forgerock.opendj.ldap.ErrorResultException; |
| | | import org.opends.server.admin.AbstractManagedObjectDefinition; |
| | | import org.opends.server.admin.client.AuthorizationException; |
| | | import org.opends.server.admin.client.CommunicationException; |
| | | import org.opends.server.admin.client.ManagedObject; |
| | | import org.opends.server.admin.client.ManagementContext; |
| | | import org.opends.server.admin.server.ServerManagedObject; |
| | | import org.opends.server.config.ConfigException; |
| | | |
| | | |
| | | |
| | | /** |
| | | * This class consists exclusively of static methods that operate on |
| | | * or return conditions. |
| | | * This class consists exclusively of static methods that operate on or return |
| | | * conditions. |
| | | */ |
| | | public final class Conditions { |
| | | |
| | | /** |
| | | * A condition which always evaluates to <code>false</code>. |
| | | */ |
| | | public static final Condition FALSE = new Condition() { |
| | | /** |
| | | * A condition which always evaluates to <code>false</code>. |
| | | */ |
| | | public static final Condition FALSE = new Condition() { |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | public boolean evaluate(ManagementContext context, ManagedObject<?> managedObject) throws ErrorResultException { |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | public boolean evaluate(ServerManagedObject<?> managedObject) throws ConfigException { |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | public void initialize(AbstractManagedObjectDefinition<?, ?> d) throws Exception { |
| | | // No implementation required. |
| | | } |
| | | |
| | | }; |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | * A condition which always evaluates to <code>true</code>. |
| | | */ |
| | | public boolean evaluate(ManagementContext context, |
| | | ManagedObject<?> managedObject) throws AuthorizationException, |
| | | CommunicationException { |
| | | return false; |
| | | } |
| | | public static final Condition TRUE = new Condition() { |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | public boolean evaluate(ManagementContext context, ManagedObject<?> managedObject) throws ErrorResultException { |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | public boolean evaluate(ServerManagedObject<?> managedObject) throws ConfigException { |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | public void initialize(AbstractManagedObjectDefinition<?, ?> d) throws Exception { |
| | | // No implementation required. |
| | | } |
| | | |
| | | }; |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | * Creates a condition which evaluates to <code>true</code> if and only if |
| | | * all of its sub-conditions are <code>true</code>. |
| | | * |
| | | * @param conditions |
| | | * The sub-conditions which be combined using a logical AND. |
| | | * @return Returns a condition which evaluates to <code>true</code> if and |
| | | * only if all of its sub-conditions are <code>true</code>. |
| | | */ |
| | | public boolean evaluate(ServerManagedObject<?> managedObject) |
| | | throws ConfigException { |
| | | return false; |
| | | public static Condition and(Condition... conditions) { |
| | | return new ANDCondition(conditions); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | * Creates a condition which evaluates to <code>true</code> if and only if a |
| | | * property contains a particular value. |
| | | * |
| | | * @param propertyName |
| | | * The property name. |
| | | * @param propertyStringValue |
| | | * The string representation of the required property value. |
| | | * @return Returns a condition which evaluates to <code>true</code> if and |
| | | * only if a property contains a particular value. |
| | | */ |
| | | public void initialize(AbstractManagedObjectDefinition<?, ?> d) |
| | | throws Exception { |
| | | // No implementation required. |
| | | public static Condition contains(String propertyName, String propertyStringValue) { |
| | | return new ContainsCondition(propertyName, propertyStringValue); |
| | | } |
| | | |
| | | }; |
| | | |
| | | /** |
| | | * A condition which always evaluates to <code>true</code>. |
| | | */ |
| | | public static final Condition TRUE = new Condition() { |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | * Creates a condition which evaluates to <code>false</code> if and only if |
| | | * the first sub-condition evaluates to <code>true</code> and the second |
| | | * sub-condition evaluates to <code>false</code>. This can be used to |
| | | * represent if-then relationships. |
| | | * |
| | | * @param premise |
| | | * The sub-condition which, when <code>true</code> implies that |
| | | * the implication sub-condition must also be <code>true</code>. |
| | | * @param implication |
| | | * The sub-condition which, must be <code>true</code> when the |
| | | * premise is <code>true</code>. |
| | | * @return Returns a condition which evaluates to <code>false</code> if and |
| | | * only if the first sub-condition evaluates to <code>true</code> |
| | | * and the second sub-condition evaluates to <code>false</code>. |
| | | */ |
| | | public boolean evaluate(ManagementContext context, |
| | | ManagedObject<?> managedObject) throws AuthorizationException, |
| | | CommunicationException { |
| | | return true; |
| | | public static Condition implies(Condition premise, Condition implication) { |
| | | return or(not(premise), implication); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | * Creates a condition which evaluates to <code>true</code> if and only if a |
| | | * particular property has any values specified. |
| | | * |
| | | * @param propertyName |
| | | * The property name. |
| | | * @return Returns a condition which evaluates to <code>true</code> if and |
| | | * only if a particular property has any values specified. |
| | | */ |
| | | public boolean evaluate(ServerManagedObject<?> managedObject) |
| | | throws ConfigException { |
| | | return true; |
| | | public static Condition isPresent(String propertyName) { |
| | | return new IsPresentCondition(propertyName); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | * Creates a condition which evaluates to <code>true</code> if the |
| | | * sub-condition is <code>false</code>, or <code>false</code> if the |
| | | * sub-condition is <code>true</code>. |
| | | * |
| | | * @param condition |
| | | * The sub-condition which will be inverted. |
| | | * @return Returns a condition which evaluates to <code>true</code> if the |
| | | * sub-condition is <code>false</code>, or <code>false</code> if the |
| | | * sub-condition is <code>true</code>. |
| | | */ |
| | | public void initialize(AbstractManagedObjectDefinition<?, ?> d) |
| | | throws Exception { |
| | | // No implementation required. |
| | | public static Condition not(Condition condition) { |
| | | return new NOTCondition(condition); |
| | | } |
| | | |
| | | }; |
| | | /** |
| | | * Creates a condition which evaluates to <code>false</code> if and only if |
| | | * all of its sub-conditions are <code>false</code>. |
| | | * |
| | | * @param conditions |
| | | * The sub-conditions which be combined using a logical OR. |
| | | * @return Returns a condition which evaluates to <code>false</code> if and |
| | | * only if all of its sub-conditions are <code>false</code>. |
| | | */ |
| | | public static Condition or(Condition... conditions) { |
| | | return new ORCondition(conditions); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a condition which evaluates to <code>true</code> if and |
| | | * only if all of its sub-conditions are <code>true</code>. |
| | | * |
| | | * @param conditions |
| | | * The sub-conditions which be combined using a logical |
| | | * AND. |
| | | * @return Returns a condition which evaluates to <code>true</code> |
| | | * if and only if all of its sub-conditions are |
| | | * <code>true</code>. |
| | | */ |
| | | public static Condition and(Condition... conditions) { |
| | | return new ANDCondition(conditions); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a condition which evaluates to <code>true</code> if and |
| | | * only if a property contains a particular value. |
| | | * |
| | | * @param propertyName |
| | | * The property name. |
| | | * @param propertyStringValue |
| | | * The string representation of the required property |
| | | * value. |
| | | * @return Returns a condition which evaluates to <code>true</code> |
| | | * if and only if a property contains a particular value. |
| | | */ |
| | | public static Condition contains(String propertyName, |
| | | String propertyStringValue) { |
| | | return new ContainsCondition(propertyName, propertyStringValue); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a condition which evaluates to <code>false</code> if |
| | | * and only if the first sub-condition evaluates to |
| | | * <code>true</code> and the second sub-condition evaluates to |
| | | * <code>false</code>. This can be used to represent if-then |
| | | * relationships. |
| | | * |
| | | * @param premise |
| | | * The sub-condition which, when <code>true</code> |
| | | * implies that the implication sub-condition must also be |
| | | * <code>true</code>. |
| | | * @param implication |
| | | * The sub-condition which, must be <code>true</code> |
| | | * when the premise is <code>true</code>. |
| | | * @return Returns a condition which evaluates to <code>false</code> |
| | | * if and only if the first sub-condition evaluates to |
| | | * <code>true</code> and the second sub-condition |
| | | * evaluates to <code>false</code>. |
| | | */ |
| | | public static Condition implies(Condition premise, Condition implication) { |
| | | return or(not(premise), implication); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a condition which evaluates to <code>true</code> if and |
| | | * only if a particular property has any values specified. |
| | | * |
| | | * @param propertyName |
| | | * The property name. |
| | | * @return Returns a condition which evaluates to <code>true</code> |
| | | * if and only if a particular property has any values |
| | | * specified. |
| | | */ |
| | | public static Condition isPresent(String propertyName) { |
| | | return new IsPresentCondition(propertyName); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a condition which evaluates to <code>true</code> if the |
| | | * sub-condition is <code>false</code>, or <code>false</code> |
| | | * if the sub-condition is <code>true</code>. |
| | | * |
| | | * @param condition |
| | | * The sub-condition which will be inverted. |
| | | * @return Returns a condition which evaluates to <code>true</code> |
| | | * if the sub-condition is <code>false</code>, or |
| | | * <code>false</code> if the sub-condition is |
| | | * <code>true</code>. |
| | | */ |
| | | public static Condition not(Condition condition) { |
| | | return new NOTCondition(condition); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a condition which evaluates to <code>false</code> if |
| | | * and only if all of its sub-conditions are <code>false</code>. |
| | | * |
| | | * @param conditions |
| | | * The sub-conditions which be combined using a logical OR. |
| | | * @return Returns a condition which evaluates to <code>false</code> |
| | | * if and only if all of its sub-conditions are |
| | | * <code>false</code>. |
| | | */ |
| | | public static Condition or(Condition... conditions) { |
| | | return new ORCondition(conditions); |
| | | } |
| | | |
| | | |
| | | |
| | | // Prevent instantiation. |
| | | private Conditions() { |
| | | // No implementation required. |
| | | } |
| | | // Prevent instantiation. |
| | | private Conditions() { |
| | | // No implementation required. |
| | | } |
| | | |
| | | } |