private void recalcDuration ( ) { long min = getStart ( ) . getDate ( ) . getTime ( ) ; long max = getEnd ( ) . getDate ( ) . getTime ( ) ; double secs = .001 * ( max - min ) ; if ( secs < 0 ) secs = 0 ; if ( duration == null ) { try { duration = new TimeDuration ( chooseResolution ( secs ) ) ; } catch ( ParseException e ) { // cant happen throw new RuntimeException ( e ) ; } } if ( resolution == null ) { duration . setValueInSeconds ( secs ) ; } else { // make it a multiple of resolution double resSecs = resolution . getValueInSeconds ( ) ; double closest = Math . round ( secs / resSecs ) ; secs = closest * resSecs ; duration . setValueInSeconds ( secs ) ; } hashCode = 0 ; }
assumes not moving