package cz.cuni.mff.d3s.been.taskapi; import cz.cuni.mff.d3s.been.core.persistence.Entities; import cz.cuni.mff.d3s.been.core.persistence.EntityID; import cz.cuni.mff.d3s.been.evaluators.EvaluatorResult; import cz.cuni.mff.d3s.been.mq.MessagingException; import cz.cuni.mff.d3s.been.persistence.DAOException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Tasks which stores Evaluator data to the persistent storage. * * @author Kuba Brecka */ public abstract class Evaluator extends Task { /** * logging */ private static final Logger log = LoggerFactory.getLogger(Evaluator.class); /** * Method which is responsible for generating {@link EvaluatorResult}. * <p/> * The result will be stored to appropriate persistent storage on behalf of this {@link Evaluator}. * * @return result to be stored to persistent storage * @throws TaskException * @throws MessagingException * @throws DAOException */ protected abstract EvaluatorResult evaluate() throws TaskException, MessagingException, DAOException; @Override public void run(String[] args) throws TaskException, MessagingException, DAOException { EvaluatorResult evaluatorResult = evaluate(); if (evaluatorResult == null) { log.warn("Evaluator returned no data!"); return; } final EntityID evaluatorId = Entities.RESULT_EVALUATOR.getId(); try (final Persister rp = ((JSONResultFacade) results).createPersister(evaluatorId)) { rp.persist(evaluatorResult); } } }