2015-10-14 10:46:13 +02:00
/ * *
*
* /
package org.gcube.accounting.datamodel.basetypes ;
import java.io.Serializable ;
2015-12-18 17:09:05 +01:00
import org.gcube.documentstore.exception.InvalidValueException ;
2015-12-21 11:50:09 +01:00
import org.gcube.documentstore.records.Record ;
import org.gcube.documentstore.records.implementation.FieldAction ;
2015-10-14 10:46:13 +02:00
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
2016-01-28 10:42:30 +01:00
public class CalculateJobWallDurationAction implements FieldAction {
2015-10-14 10:46:13 +02:00
2016-01-28 10:42:30 +01:00
private static final Logger logger = LoggerFactory . getLogger ( CalculateJobWallDurationAction . class ) ;
2015-10-14 10:46:13 +02:00
@Override
2016-01-28 18:29:11 +01:00
public Serializable validate ( String key , Serializable value , Record record ) throws InvalidValueException {
2015-10-14 10:46:13 +02:00
try {
2015-12-21 11:50:09 +01:00
long wallDuration = ( ( AbstractJobUsageRecord ) record ) . calculateWallDuration ( ) ;
2016-09-19 11:06:46 +02:00
if ( key . compareTo ( AbstractJobUsageRecord . DURATION ) = = 0 ) {
2015-10-14 10:46:13 +02:00
logger . warn ( " {} is automatically computed using {} and {}. This invocation has the only effect of recalculating the value. Any provided value is ignored. " ,
2016-09-19 11:06:46 +02:00
AbstractJobUsageRecord . DURATION , AbstractJobUsageRecord . JOB_START_TIME , AbstractJobUsageRecord . JOB_END_TIME ) ;
2015-10-14 10:46:13 +02:00
value = wallDuration ;
}
} catch ( InvalidValueException e ) { }
return value ;
}
}