Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2010 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.move;
 
 import java.util.List;
 import java.util.Set;
 
A CompositeMove is composed out of multiple other moves.

Warning: one of the moveList moves should not rely on the effect on of a previous moveList move to create an uncorrupted undoMove. In other words,

See also:
Move
 
 public class CompositeMove implements MoveTabuPropertyEnabled {
 
     protected List<MovemoveList;
 
     public List<MovegetMoveList() {
         return ;
     }

    

Parameters:
moveList cannot be null
 
     public CompositeMove(List<MovemoveList) {
         this. = moveList;
     }
 
     public boolean isMoveDoable(WorkingMemory workingMemory) {
         for (Move move : ) {
             if (!move.isMoveDoable(workingMemory)) {
                 return false;
             }
         }
         return true;
     }
 
     public Move createUndoMove(WorkingMemory workingMemory) {
         List<MoveundoMoveList = new ArrayList<Move>(.size());
         for (Move move : ) {
             // Note: this undoMove doesn't have the affect of a previous move in the moveList
             // This could be made possible by merging the methods createUndoMove and doMove...
             Move undoMove = move.createUndoMove(workingMemory);
             undoMoveList.add(undoMove);
         }
         Collections.reverse(undoMoveList);
         return new CompositeMove(undoMoveList);
     }
 
     public void doMove(WorkingMemory workingMemory) {
         for (Move move : ) {
             move.doMove(workingMemory);
         }
     }
 
     public Collection<? extends ObjectgetTabuProperties() {
         Set<ObjecttabuProperties = new LinkedHashSet<Object>(.size() * 2);
         for (Move move : ) {
             tabuProperties.addAll(((TabuPropertyEnabledmove).getTabuProperties());
         }
         return tabuProperties;
     }
 
     public boolean equals(Object o) {
         if (this == o) {
             return true;
         } else if (o instanceof CompositeMove) {
             CompositeMove other = (CompositeMoveo;
             return .equals(other.moveList);
         } else {
             return false;
         }
     }
 
     public int hashCode() {
         return .hashCode();
     }
    public String toString() {
        return .toString();
    }
New to GrepCode? Check out our FAQ X