Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2011 JBoss Inc
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package org.drools.planner.core.heuristic.selector.variable;
 
 import java.util.List;
 import java.util.Map;
 
 
     
 
     private WorkingMemory workingMemory;
 
     private Object planningEntity;
 
     public PlanningVariableWalker(PlanningEntityDescriptor planningEntityDescriptor) {
         this. = planningEntityDescriptor;
     }
 
     public void setPlanningValueWalkerList(List<PlanningValueWalkerplanningValueWalkerList) {
         this. = planningValueWalkerList;
     }
 
         Map<PlanningVariableDescriptorObjectvariableToValueMap
                 = new LinkedHashMap<PlanningVariableDescriptorObject>(.size());
         for (PlanningValueWalker planningValueWalker : ) {
             variableToValueMap.put(planningValueWalker.getPlanningVariableDescriptor(),
                     planningValueWalker.getWorkingValue());
         }
         return variableToValueMap;
     }
 
     // ************************************************************************
     // Lifecycle methods
     // ************************************************************************
 
     public void phaseStarted(AbstractSolverPhaseScope solverPhaseScope) {
         for (PlanningValueWalker planningValueWalker : ) {
             planningValueWalker.phaseStarted(solverPhaseScope);
         }
          = solverPhaseScope.getWorkingMemory();
     }
 
     public void beforeDeciding(AbstractStepScope stepScope) {
         for (PlanningValueWalker planningValueWalker : ) {
             planningValueWalker.beforeDeciding(stepScope);
         }
     }
 
     public void stepDecided(AbstractStepScope stepScope) {
         for (PlanningValueWalker planningValueWalker : ) {
             planningValueWalker.stepDecided(stepScope);
         }
     }
 
     public void stepTaken(AbstractStepScope stepScope) {
         for (PlanningValueWalker planningValueWalker : ) {
             planningValueWalker.stepTaken(stepScope);
         }
     }
 
     public void phaseEnded(AbstractSolverPhaseScope solverPhaseScope) {
         for (PlanningValueWalker planningValueWalker : ) {
             planningValueWalker.phaseEnded(solverPhaseScope);
         }
          = null;
          = null;
     }
 
     // ************************************************************************
     // Worker methods
     // ************************************************************************
    public void initWalk(Object planningEntity) {
        this. = planningEntity;
        for (PlanningValueWalker planningValueWalker : ) {
            planningValueWalker.initWalk(planningEntity);
        }
        // Insert must happen after every planningValueWalker.initWalk() to avoid a NullPointerException, for example:
        // Rules use Lecture.getDay(), which is implemented as "return period.getDay();"
        // so the planning variable period cannot be null when the planning entity is inserted.
         = .insert(planningEntity);
        for (PlanningValueWalker planningValueWalker : ) {
            planningValueWalker.initPlanningEntityFactHandle();
        }
    }
    public boolean hasWalk() {
        for (PlanningValueWalker planningValueWalker : ) {
            if (planningValueWalker.hasWalk()) {
                return true;
            }
        }
        // All levels are maxed out
        return false;
    }
    public void walk() {
        // Find the level to increment (for example in 115999)
        for (PlanningValueWalker planningValueWalker : ) {
            if (planningValueWalker.hasWalk()) {
                // Increment that level (for example 5 in 115999)
                planningValueWalker.walk();
                // Do not touch the higher levels (for example each 1 in 115999)
                break;
            } else {
                // Reset the lower levels (for example each 9 in 115999)
                planningValueWalker.resetWalk();
            }
        }
    }
    public void resetWalk() {
        for (PlanningValueWalker planningValueWalker : ) {
            planningValueWalker.resetWalk();
        }
    }
New to GrepCode? Check out our FAQ X