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.score;

Default implementation of HardAndSoftScore.

This class is immutable.

 
 public final class DefaultHardAndSoftScore extends AbstractScore<HardAndSoftScore>
         implements HardAndSoftScore {
 
     private static final String HARD_LABEL = "hard";
     private static final String SOFT_LABEL = "soft";
 
     public static DefaultHardAndSoftScore parseScore(String scoreString) {
         String[] scoreTokens = scoreString.split( + "\\/");
         if (scoreTokens.length != 2 || !scoreTokens[1].endsWith()) {
             throw new IllegalArgumentException("The scoreString (" + scoreString
                     + ") doesn't follow the 999hard/999soft pattern.");
         }
         int hardScore = Integer.parseInt(scoreTokens[0]);
         int softScore = Integer.parseInt(scoreTokens[1].substring(0, scoreTokens[1].length() - .length()));
         return valueOf(hardScoresoftScore);
     }
 
     public static DefaultHardAndSoftScore valueOf(int hardScore) {
         return new DefaultHardAndSoftScore(hardScore);
     }
 
     public static DefaultHardAndSoftScore valueOf(int hardScoreint softScore) {
         return new DefaultHardAndSoftScore(hardScoresoftScore);
     }
 
     private final int hardScore;
     private final int softScore;
 
     public DefaultHardAndSoftScore(int hardScore) {
         // Any other softScore is better
         this(hardScore.);
     }
 
     public DefaultHardAndSoftScore(int hardScoreint softScore) {
         this. = hardScore;
         this. = softScore;
     }
 
     public int getHardScore() {
         return ;
     }
 
     public int getSoftScore() {
         return ;
     }
 
     // ************************************************************************
     // Worker methods
     // ************************************************************************
 
     public HardAndSoftScore add(HardAndSoftScore augment) {
         return new DefaultHardAndSoftScore( + augment.getHardScore(),
                 this. + augment.getSoftScore());
     }
 
     public HardAndSoftScore subtract(HardAndSoftScore subtrahend) {
         return new DefaultHardAndSoftScore( - subtrahend.getHardScore(),
                 this. - subtrahend.getSoftScore());
     }
 
     public HardAndSoftScore multiply(double multiplicand) {
         return new DefaultHardAndSoftScore((int) Math.floor( * multiplicand),
                 (int) Math.floor(this. * multiplicand));
     }
 
     public HardAndSoftScore divide(double divisor) {
         return new DefaultHardAndSoftScore((int) Math.floor( / divisor),
                 (int) Math.floor(this. / divisor));
     }
 
     public double[] toDoubleArray() {
         return new double[]{};
     }
 
     public boolean equals(Object o) {
        // A direct implementation (instead of EqualsBuilder) to avoid dependencies
        if (this == o) {
            return true;
        } else if (o instanceof HardAndSoftScore) {
            HardAndSoftScore other = (HardAndSoftScoreo;
            return  == other.getHardScore()
                    &&  == other.getSoftScore();
        } else {
            return false;
        }
    }
    public int hashCode() {
        // A direct implementation (instead of HashCodeBuilder) to avoid dependencies
        return (((17 * 37) + )) * 37 + ;
    }
    public int compareTo(HardAndSoftScore other) {
        // A direct implementation (instead of CompareToBuilder) to avoid dependencies
        if ( != other.getHardScore()) {
            if ( < other.getHardScore()) {
                return -1;
            } else {
                return 1;
            }
        } else {
            if ( < other.getSoftScore()) {
                return -1;
            } else if ( > other.getSoftScore()) {
                return 1;
            } else {
                return 0;
            }
        }
    }
    public String toString() {
        return  +  + "/" +  + ;
    }
New to GrepCode? Check out our FAQ X