/** * */ 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 public Comparable validate(String key, Comparable value, UsageRecord usageRecord) throws InvalidValueException { 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; } }