package rocks.inspectit.server.service;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import rocks.inspectit.server.dao.ExceptionSensorDataDao;
import rocks.inspectit.server.spring.aop.MethodLog;
import rocks.inspectit.shared.all.cmr.service.ICachedDataService;
import rocks.inspectit.shared.all.communication.data.AggregatedExceptionSensorData;
import rocks.inspectit.shared.all.communication.data.ExceptionSensorData;
import rocks.inspectit.shared.all.spring.logger.Log;
import rocks.inspectit.shared.cs.cmr.service.IExceptionDataAccessService;
import rocks.inspectit.shared.cs.cmr.service.cache.CachedDataService;
import rocks.inspectit.shared.cs.communication.comparator.ResultComparator;
/**
* Service class for retrieving {@link ExceptionSensorData} objects from the CMR.
*
* @author Eduard Tudenhoefner
*
*/
@Service
public class ExceptionDataAccessService implements IExceptionDataAccessService {
/** The logger of this class. */
@Log
Logger log;
/**
* The exception sensor DAO.
*/
@Autowired
private ExceptionSensorDataDao exceptionSensorDataDao;
/**
* {@link CachedDataService}.
*/
@Autowired
private ICachedDataService cachedDataService;
/**
* {@inheritDoc}
*/
@Override
@MethodLog
public List<ExceptionSensorData> getUngroupedExceptionOverview(ExceptionSensorData template, int limit, ResultComparator<ExceptionSensorData> resultComparator) {
if (null != resultComparator) {
resultComparator.setCachedDataService(cachedDataService);
}
List<ExceptionSensorData> result = exceptionSensorDataDao.getUngroupedExceptionOverview(template, limit, resultComparator);
return result;
}
/**
* {@inheritDoc}
*/
@Override
@MethodLog
public List<ExceptionSensorData> getUngroupedExceptionOverview(ExceptionSensorData template, int limit, Date fromDate, Date toDate, ResultComparator<ExceptionSensorData> resultComparator) {
if (null != resultComparator) {
resultComparator.setCachedDataService(cachedDataService);
}
List<ExceptionSensorData> result = exceptionSensorDataDao.getUngroupedExceptionOverview(template, limit, fromDate, toDate, resultComparator);
return result;
}
/**
* {@inheritDoc}
*/
@Override
@MethodLog
public List<ExceptionSensorData> getUngroupedExceptionOverview(ExceptionSensorData template, ResultComparator<ExceptionSensorData> resultComparator) {
if (null != resultComparator) {
resultComparator.setCachedDataService(cachedDataService);
}
List<ExceptionSensorData> result = exceptionSensorDataDao.getUngroupedExceptionOverview(template, resultComparator);
return result;
}
/**
* {@inheritDoc}
*/
@Override
@MethodLog
public List<ExceptionSensorData> getUngroupedExceptionOverview(ExceptionSensorData template, Date fromDate, Date toDate, ResultComparator<ExceptionSensorData> resultComparator) {
if (null != resultComparator) {
resultComparator.setCachedDataService(cachedDataService);
}
List<ExceptionSensorData> result = exceptionSensorDataDao.getUngroupedExceptionOverview(template, fromDate, toDate, resultComparator);
return result;
}
/**
* {@inheritDoc}
*/
@Override
@MethodLog
public List<ExceptionSensorData> getExceptionTree(ExceptionSensorData template) {
List<ExceptionSensorData> result = exceptionSensorDataDao.getExceptionTree(template);
return result;
}
/**
* {@inheritDoc}
*/
@Override
@MethodLog
public List<AggregatedExceptionSensorData> getDataForGroupedExceptionOverview(ExceptionSensorData template) {
List<AggregatedExceptionSensorData> result = exceptionSensorDataDao.getDataForGroupedExceptionOverview(template);
return result;
}
/**
* {@inheritDoc}
*/
@Override
@MethodLog
public List<AggregatedExceptionSensorData> getDataForGroupedExceptionOverview(ExceptionSensorData template, Date fromDate, Date toDate) {
List<AggregatedExceptionSensorData> result = exceptionSensorDataDao.getDataForGroupedExceptionOverview(template, fromDate, toDate);
return result;
}
/**
* {@inheritDoc}
*/
@Override
@MethodLog
public List<ExceptionSensorData> getStackTraceMessagesForThrowableType(ExceptionSensorData template) {
List<ExceptionSensorData> result = exceptionSensorDataDao.getStackTraceMessagesForThrowableType(template);
return result;
}
/**
* Is executed after dependency injection is done to perform any initialization.
*
* @throws Exception
* if an error occurs during {@link PostConstruct}
*/
@PostConstruct
public void postConstruct() throws Exception {
if (log.isInfoEnabled()) {
log.info("|-Exception Sensor Data Access Service active...");
}
}
}