org.cpsolver.ifs.assignment.context

## Class AbstractClassWithContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentContext>

- java.lang.Object
- - org.cpsolver.ifs.assignment.context.AbstractClassWithContext<V,T,C>

- Type Parameters:
    `V` - Variable
    `T` - Value
    `C` - Assignment Context
  All Implemented Interfaces:
    CanHoldContext, HasAssignmentContext<V,T,C>
  Direct Known Subclasses:
    Config, Course, Instructor, RequestGroup, Reservation, Section

      public abstract class AbstractClassWithContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentContext>
      extends Object
      implements HasAssignmentContext<V,T,C>, CanHoldContext

  An abstract implementation of an assignment context holding class. This works much like `ConstraintWithContext` or `VariableWithContext`, however, it is not tight to a particular class type. Instead `getModel()` needs to be implemented.
  Version:
    IFS 1.3 (Iterative Forward Search)
    Copyright (C) 2014 Tomáš Müller
    muller@unitime.org
    http://muller.unitime.org
    This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
    This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    You should have received a copy of the GNU Lesser General Public License along with this library; if not see http://www.gnu.org/licenses.
  Author:
    Tomáš Müller

- - ### Field Summary

    - ### Fields inherited from interface org.cpsolver.ifs.assignment.context.CanHoldContext

      `sMaxSize`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractClassWithContext()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `AssignmentContextReference<V,T,C>` | `getAssignmentContextReference()` Returns an assignment context reference
    `AssignmentContext[]` | `getContext()` An array of `CanHoldContext.sMaxSize` assignment contexts
    `C` | `getContext(Assignment<V,T> assignment)` Returns an assignment context associated with this object.
    `abstract Model<V,T>` | `getModel()` Get the model.
    `void` | `setAssignmentContextReference(AssignmentContextReference<V,T,C> reference)` Store an assignment context reference that was given for the class by the `Model.createReference(HasAssignmentContext)`.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.cpsolver.ifs.assignment.context.HasAssignmentContext

      `createAssignmentContext`

- - ### Constructor Detail

    - #### AbstractClassWithContext

          public AbstractClassWithContext()

  - ### Method Detail

    - #### getContext

          public C getContext(Assignment<V,T> assignment)

      Returns an assignment context associated with this object. If there is no assignment context associated with this object yet, one is created using the `HasAssignmentContext.createAssignmentContext(Assignment)` method.
      Specified by:
        `getContext` in interface `HasAssignmentContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentContext>`
      Parameters:
        `assignment` - given assignment
      Returns:
        assignment context associated with this object and the given assignment

    - #### getAssignmentContextReference

          public AssignmentContextReference<V,T,C> getAssignmentContextReference()

      Description copied from interface: `HasAssignmentContext`
      Returns an assignment context reference
      Specified by:
        `getAssignmentContextReference` in interface `HasAssignmentContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentContext>`
      Returns:
        reference provided by the model by calling `Model.createReference(HasAssignmentContext)` during initialization

    - #### setAssignmentContextReference

          public void setAssignmentContextReference(AssignmentContextReference<V,T,C> reference)

      Description copied from interface: `HasAssignmentContext`
      Store an assignment context reference that was given for the class by the `Model.createReference(HasAssignmentContext)`.
      Specified by:
        `setAssignmentContextReference` in interface `HasAssignmentContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentContext>`
      Parameters:
        `reference` - reference provided by the model by calling `Model.createReference(HasAssignmentContext)` during initialization

    - #### getContext

          public AssignmentContext[] getContext()

      Description copied from interface: `CanHoldContext`
      An array of `CanHoldContext.sMaxSize` assignment contexts
      Specified by:
        `getContext` in interface `CanHoldContext`
      Returns:
        assignment contexts

    - #### getModel

          public abstract Model<V,T> getModel()

      Get the model. This is used to create an assignment context if needed.
      Returns:
        model