2015-10-14 10:46:13 +02:00
/ * *
*
* /
package org.gcube.accounting.datamodel.basetypes ;
import java.io.Serializable ;
import org.gcube.accounting.datamodel.UsageRecord ;
import org.gcube.accounting.datamodel.decorators.FieldAction ;
import org.gcube.accounting.exception.InvalidValueException ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
public class CalculateWallDurationAction implements FieldAction {
private static final Logger logger = LoggerFactory . getLogger ( CalculateWallDurationAction . class ) ;
@Override
2015-11-30 17:49:18 +01:00
public Comparable < ? extends Serializable > validate ( String key , Comparable < ? extends Serializable > value , UsageRecord usageRecord ) throws InvalidValueException {
2015-10-14 10:46:13 +02:00
try {
long wallDuration = ( ( AbstractJobUsageRecord ) usageRecord ) . calculateWallDuration ( ) ;
if ( key . compareTo ( AbstractJobUsageRecord . WALL_DURATION ) = = 0 ) {
logger . warn ( " {} is automatically computed using {} and {}. This invocation has the only effect of recalculating the value. Any provided value is ignored. " ,
AbstractJobUsageRecord . WALL_DURATION , AbstractJobUsageRecord . JOB_START_TIME , AbstractJobUsageRecord . JOB_END_TIME ) ;
value = wallDuration ;
}
} catch ( InvalidValueException e ) { }
return value ;
}
}