/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package br.uff.ic.oceano.ostra.service; import br.uff.ic.oceano.core.exception.ServiceException; import br.uff.ic.oceano.core.factory.ObjectFactory; import br.uff.ic.oceano.core.tools.metrics.MetricManager; import br.uff.ic.oceano.core.model.Metric; import br.uff.ic.oceano.core.model.MetricValue; import br.uff.ic.oceano.core.model.Revision; import br.uff.ic.oceano.core.service.PersistenceService; import br.uff.ic.oceano.ostra.dao.VersionedItemMetricValueDao; import br.uff.ic.oceano.ostra.dao.impl.VersionedItemMetricValueDaoImpl; import br.uff.ic.oceano.ostra.model.VersionedItem; import br.uff.ic.oceano.ostra.model.VersionedItemMetricValue; import br.uff.ic.oceano.core.service.controletransacao.Transacional; import br.uff.ic.oceano.ostra.model.Item; import java.util.List; /** * * @author Heliomar */ public class VersionedItemMetricValueService implements PersistenceService { private VersionedItemMetricValueDao versionedItemMetricValueDao; public void setup() { versionedItemMetricValueDao = ObjectFactory.getObjectWithDataBaseDependencies(VersionedItemMetricValueDaoImpl.class); } public VersionedItemMetricValueService() { } @Transacional public void save(VersionedItemMetricValue versionedItemMetricValueToSave) throws ServiceException { if (versionedItemMetricValueToSave.getId() == null) { versionedItemMetricValueDao.inclui(versionedItemMetricValueToSave); } else { versionedItemMetricValueDao.altera(versionedItemMetricValueToSave); } } /** * Used to deltas, were the value has not changed. * @param metricManager * @param versionedItem * @return */ public VersionedItemMetricValue createVersionedMetricWithZeroValue(MetricManager metricManager, VersionedItem versionedItem) { final Revision revision = versionedItem.getRevision(); VersionedItemMetricValue vimv = new VersionedItemMetricValue(); vimv.setDoubleValue(0D); // vimv.setValue("0"); vimv.setMetric(metricManager.getMetric()); vimv.setVersionedItem(versionedItem); versionedItem.setRevision(revision); return vimv; } public boolean isMeasured(Revision revision, Metric metric) { return versionedItemMetricValueDao.countByRevisionAndMetric(revision, metric) > 0L; } public List<VersionedItemMetricValue> getByRevisionAndMetric(Revision revision, Metric metric) { return versionedItemMetricValueDao.getByRevisionAndMetric(revision, metric); } // @Deprecated // public MetricValue getMetricValueFromVersionedItemsByRevisionAndMetric(Revision revision, Metric metric) { // MetricValue valueToReturn; // List<VersionedItemMetricValue> versionedItemMetricValues = versionedItemMetricValueDao.getByRevisionAndMetric(revision, metric); // Double doubleValue = 0D; // for (VersionedItemMetricValue versionedItemMetricValue : versionedItemMetricValues) { // doubleValue += versionedItemMetricValue.getDoubleValue(); // } // if (!versionedItemMetricValues.isEmpty()) { // doubleValue /= versionedItemMetricValues.size(); // } // valueToReturn = new MetricValue(revision, metric, doubleValue); // return valueToReturn; // } public List<VersionedItemMetricValue> getByRevision(Revision revision) { return versionedItemMetricValueDao.getByRevision(revision); } public VersionedItemMetricValue getNewestByItemAndMetricUntilRevision(Item item, Metric metric, Revision revision) { return versionedItemMetricValueDao.getNewestByItemAndMetricUntilRevision(item, metric, revision.getNumber()); } }