package rocks.inspectit.server.dao.impl; import java.util.List; import javax.persistence.Query; import javax.persistence.TypedQuery; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Repository; import rocks.inspectit.server.dao.MethodIdentToSensorTypeDao; import rocks.inspectit.shared.all.cmr.model.MethodIdentToSensorType; /** * The default implementation of the {@link MethodIdentToSensorTypeDao} interface by using Entity * manager. * * @author Ivan Senic * */ @Repository public class MethodIdentToSensorTypeDaoImpl extends AbstractJpaDao<MethodIdentToSensorType> implements MethodIdentToSensorTypeDao { /** * Default constructor. */ public MethodIdentToSensorTypeDaoImpl() { super(MethodIdentToSensorType.class); } /** * {@inheritDoc} */ @Override public void saveOrUpdate(MethodIdentToSensorType methodIdentToSensorType) { // we save if id is not set, otherwise merge if (null == methodIdentToSensorType.getId()) { super.create(methodIdentToSensorType); } else { super.update(methodIdentToSensorType); } } /** * {@inheritDoc} */ @Override public Long findId(long methodIdentId, long methodSensorTypeIdentId, boolean updateTimestamp) { TypedQuery<Long> query = getEntityManager().createNamedQuery(MethodIdentToSensorType.FIND_ID_FOR_METHOD_ID_AND_METOHD_SENSOR_TYPE_ID, Long.class); query.setParameter("methodIdentId", methodIdentId); query.setParameter("methodSensorTypeIdentId", methodSensorTypeIdentId); List<Long> results = query.getResultList(); if (updateTimestamp && CollectionUtils.isNotEmpty(results)) { Query updateQuery = getEntityManager().createNamedQuery(MethodIdentToSensorType.UPDATE_TIMESTAMP); updateQuery.setParameter("ids", results); updateQuery.executeUpdate(); } if (1 == results.size()) { return results.get(0); } else { return null; } } }