예제 #1
0
 /**
  * Checks whether a field type is supported, and if so adds the new value to the relevent index in
  * the specified array.
  *
  * @param type the field type
  * @param values the array to update
  * @param newValue the new value to store if successful
  */
 private void checkAndUpdate(DurationFieldType type, int[] values, int newValue) {
   int index = indexOf(type);
   if (index == -1) {
     if (newValue != 0) {
       throw new IllegalArgumentException(
           "Period does not support field '" + type.getName() + "'");
     }
   } else {
     values[index] = newValue;
   }
 }
예제 #2
0
 /**
  * Adds the fields from another period.
  *
  * @param values the array of values to update
  * @param period the period to add from, not null
  * @return the updated values
  * @throws IllegalArgumentException if an unsupported field's value is non-zero
  */
 protected int[] addPeriodInto(int[] values, ReadablePeriod period) {
   for (int i = 0, isize = period.size(); i < isize; i++) {
     DurationFieldType type = period.getFieldType(i);
     int value = period.getValue(i);
     if (value != 0) {
       int index = indexOf(type);
       if (index == -1) {
         throw new IllegalArgumentException(
             "Period does not support field '" + type.getName() + "'");
       } else {
         values[index] = FieldUtils.safeAdd(getValue(index), value);
       }
     }
   }
   return values;
 }