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.JmxDefinitionDataIdentDao;
import rocks.inspectit.shared.all.cmr.model.JmxDefinitionDataIdent;
/**
* The default implementation of the {@link JmxDefinitionDataIdentDao} interface by using Entity
* manager.
*
* @author Alfred Krauss
* @author Marius Oehler
*
*/
@Repository
public class JmxDefinitionDataIdentDaoImpl extends AbstractJpaDao<JmxDefinitionDataIdent> implements JmxDefinitionDataIdentDao {
/**
* Default constructor.
*/
public JmxDefinitionDataIdentDaoImpl() {
super(JmxDefinitionDataIdent.class);
}
/**
* {@inheritDoc}
*/
@Override
public JmxDefinitionDataIdent load(Long id) {
return getEntityManager().find(JmxDefinitionDataIdent.class, id);
}
/**
* {@inheritDoc}
*/
@Override
public void saveOrUpdate(JmxDefinitionDataIdent jmxDefinitionDataIdent) {
// we save if id is not set, otherwise merge
if (0L == jmxDefinitionDataIdent.getId()) {
super.create(jmxDefinitionDataIdent);
} else {
super.update(jmxDefinitionDataIdent);
}
}
/**
* {@inheritDoc}
*/
@Override
public List<Long> findIdForPlatformIdent(long platformId, JmxDefinitionDataIdent jmxDefinitionDataIdentExample, boolean updateTimestamp) {
TypedQuery<Long> query = getEntityManager().createNamedQuery(JmxDefinitionDataIdent.FIND_ID_BY_PLATFORM_AND_EXAMPLE, Long.class);
query.setParameter("platformIdentId", platformId);
query.setParameter("mBeanObjectName", jmxDefinitionDataIdentExample.getmBeanObjectName());
query.setParameter("mBeanAttributeName", jmxDefinitionDataIdentExample.getmBeanAttributeName());
List<Long> resultList = query.getResultList();
if (updateTimestamp && CollectionUtils.isNotEmpty(resultList)) {
Query updateQuery = getEntityManager().createNamedQuery(JmxDefinitionDataIdent.UPDATE_TIMESTAMP);
updateQuery.setParameter("ids", resultList);
updateQuery.executeUpdate();
}
return resultList;
}
}