public abstract class AccessConstraint extends AccessQuery
 There are two types of AccessConstraints, those that implement
 ILinkConstraint and those that
 implement ISingleObjectConstraint.
 
 ISingleObjectConstraints like
 AltitudeConstraint
 have a ConstrainedObject (get / set)
 property that must be set before the AccessEvaluator
 is created.
 
 ILinkConstraints like
 ElevationAngleConstraint
 have two properties that must be set. The first is
 ConstrainedLink (get / set),
 that must be set to an instance of LinkInstantaneous
 or LinkSpeedOfLight. The second is
 ConstrainedLinkEnd (get / set)
 which must be set to an enumeration of LinkRole.
 
 Some AccessConstraints that implement ILinkConstraint, such as
 CentralBodyObstructionConstraint
 do not use ConstrainedLinkEnd, as the Constraint applies to the Link as a whole instead
 of being dependent on a single Platform.
 
 AccessConstraints that are attached to AccessComputations
 do not need to have their ConstrainedLink, ConstrainedLinkEnd,
 or ConstrainedObject properties set. Instead set the
 Transmitter (get / set),
 and Receiver (get / set) properties
 and add the desired constraints to the ReceiverConstraints (get)
 or TransmitterConstraints (get)
 collections. The appropriate links will be created and assigned behind the scenes.
 
| Modifier | Constructor and Description | 
|---|---|
protected  | 
AccessConstraint()
Initializes a new instance. 
 | 
protected  | 
AccessConstraint(AccessConstraint existingInstance,
                CopyContext context)
Initializes a new instance as a copy of an existing instance. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
abstract void | 
buildQueryEvaluator(ConstraintQueryBuilder builder,
                   EvaluatorGroup group)
Builds a query evaluator from this constraint. 
 | 
protected abstract boolean | 
checkForSameDefinition(AccessConstraint other)
Checks to determine if another instance has the same definition as this instance and
    returns  
true if it does. | 
protected boolean | 
checkForSameDefinition(AccessQuery other)
Checks to determine if another instance has the same definition as this instance and
    returns  
true if it does. | 
protected int | 
computeCurrentDefinitionHashCode()
Computes a hash code based on the current properties of this object. 
 | 
void | 
enumerateDependencies(DependencyEnumerator enumerator)
Enumerates the dependencies of this object by calling
     
DependencyEnumerator#enumerate(T) for each object that this object directly depends upon. | 
protected void | 
freezeAggregatedObjects()
Called by  
DefinitionalObject.freeze() to also freeze any objects that are considered to be a part of this object. | 
AccessConstraintApplicability | 
getApplicability()
Gets the Access situation in which this constraint applies. 
 | 
int | 
getEvaluationOrder()
Gets a number indicating the evaluation order of this constraint relative
    to other constraints. 
 | 
AccessEvaluator | 
getEvaluator(IServiceProvider timeObserver,
            EvaluatorGroup group)
Gets an evaluator that can be used to evaluate this query for a given time or for intervals of time. 
 | 
JulianDateFunctionSampling | 
getSampling()
Gets an instance describing how this constraint is to be sampled. 
 | 
void | 
setApplicability(AccessConstraintApplicability value)
Sets the Access situation in which this constraint applies. 
 | 
void | 
setEvaluationOrder(int value)
Sets a number indicating the evaluation order of this constraint relative
    to other constraints. 
 | 
AccessQuery | 
toDisjunctiveNormalForm()
Transforms this query to disjunctive normal form (DNF). 
 | 
and, and, anyPath, anyPath, anyPath, anyPath, anyPath, anyPath, atLeastN, atMostN, checkForSameDefinition, exactlyN, fromObject, fromObjectAllowNoConstraints, getDebuggingLogger, getEvaluator, getEvaluator, not, or, or, setDebuggingLoggerareSameDefinition, areSameDefinition, areSameDefinition, areSameDefinition, areSameDefinition, clone, collectionItemsAreSameDefinition, collectionItemsAreSameDefinition, collectionItemsAreSameDefinition, dictionaryItemsAreSameDefinition, freeze, getCollectionHashCode, getCollectionHashCode, getCollectionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDictionaryHashCode, getIsFrozen, isSameDefinition, throwIfFrozenprotected AccessConstraint()
protected AccessConstraint(@Nonnull AccessConstraint existingInstance, @Nonnull CopyContext context)
    See ICloneWithContext.clone(CopyContext) for more information about how to implement this constructor
    in a derived class.
existingInstance - The existing instance to copy.context - A CopyContext that controls the depth of the copy.ArgumentNullException - Thrown when existingInstance or context is null.protected final boolean checkForSameDefinition(AccessQuery other)
true if it does.  Derived classes MUST override this method and check
    all new fields introduced by the derived class for definitional equivalence.  It is NOT necessary
    to check base class fields because the base class will already have done that.  When overriding this method,
    you should NOT call the base implementation because it will return false for all derived-class instances.
    Derived classes should check the type of other to preserve the symmetric nature of IEquatableDefinition.isSameDefinition(java.lang.Object).checkForSameDefinition in class AccessQueryother - The other instance to compare to this one.true if the two objects are defined equivalently; otherwise false.protected abstract boolean checkForSameDefinition(AccessConstraint other)
true if it does.  Derived classes MUST override this method and check
    all new fields introduced by the derived class for definitional equivalence.  It is NOT necessary
    to check base class fields because the base class will already have done that.  When overriding this method,
    you should NOT call the base implementation because it will return false for all derived-class instances.
    Derived classes should check the type of other to preserve the symmetric nature of IEquatableDefinition.isSameDefinition(java.lang.Object).other - The other instance to compare to this one.true if the two objects are defined equivalently; otherwise false.protected int computeCurrentDefinitionHashCode()
AccessConstraint.checkForSameDefinition(agi.foundation.access.AccessQuery) method.computeCurrentDefinitionHashCode in class AccessQuerypublic void enumerateDependencies(DependencyEnumerator enumerator)
DependencyEnumerator#enumerate(T) for each object that this object directly depends upon.
    Derived classes which contain additional dependencies MUST override this method, call the base
    implementation, and enumerate dependencies introduced by the derived class.enumerateDependencies in interface IEnumerateDependenciesenumerateDependencies in class DefinitionalObjectenumerator - The enumerator that is informed of the dependencies of this object.protected void freezeAggregatedObjects()
DefinitionalObject.freeze() to also freeze any objects that are considered to be a part of this object.
    Derived classes which contain additional aggregated objects MUST override this method, call the base
    implementation, and freeze aggregated objects introduced by the derived class. The objects that need to be
    frozen in this method are frequently created in this object's constructor and are not settable via
    properties.freezeAggregatedObjects in class DefinitionalObject@Nonnull public final AccessConstraintApplicability getApplicability()
public final void setApplicability(@Nonnull AccessConstraintApplicability value)
public int getEvaluationOrder()
AccessComputation or that share a common parent (e.g. AccessQueryAnd or
    AccessQueryOr) in an AccessQuery are sorted by this value before being evaluated in
    ascending order, so constraints with a lower evaluation order are evaluated earlier than constraints with
    a higher evaluation order.getEvaluationOrder in class AccessQuerypublic final void setEvaluationOrder(int value)
AccessComputation or that share a common parent (e.g. AccessQueryAnd or
    AccessQueryOr) in an AccessQuery are sorted by this value before being evaluated in
    ascending order, so constraints with a lower evaluation order are evaluated earlier than constraints with
    a higher evaluation order.@Nonnull public final JulianDateFunctionSampling getSampling()
public abstract void buildQueryEvaluator(@Nonnull ConstraintQueryBuilder builder, @Nonnull EvaluatorGroup group)
builder - The builder instance to use to build the evaluator.group - The evaluator group in which to create individual constraint function evaluators.public final AccessEvaluator getEvaluator(IServiceProvider timeObserver, EvaluatorGroup group)
getEvaluator in class AccessQuerytimeObserver - The IServiceProvider time observer to use when evaluating this query.group - The group with which to associate the new evaluator.  By grouping evaluators
    that are often evaluated at the same Julian dates, common computations can be performed only once
    for the entire group instead of multiple times for each evaluator.public AccessQuery toDisjunctiveNormalForm()
toDisjunctiveNormalForm in class AccessQuery