package fi.arcusys.koku.common.external; import java.util.Date; import javax.annotation.PostConstruct; import javax.ejb.EJB; import javax.ejb.Stateless; import javax.naming.InitialContext; import javax.naming.NamingException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import fi.arcusys.koku.common.service.CalendarUtil; import fi.koku.services.utility.log.v1.AuditInfoType; import fi.koku.services.utility.log.v1.LogEntriesType; import fi.koku.services.utility.log.v1.LogEntryType; import fi.koku.services.utility.log.v1.LogServiceFactory; /** * DAO implementation for acccessing LOK-component: logging important system events. * * @author Dmitry Kudinov (dmitry.kudinov@arcusys.fi) * Oct 4, 2011 */ @Stateless public class LogServiceDAOImpl implements LogServiceDAO { private final static Logger logger = LoggerFactory.getLogger(LogServiceDAOImpl.class); private String logUserUid; private String logUserPwd; private String serviceEndpointBaseUrl; private LogServiceFactory logServiceFactory; @EJB private CustomerServiceDAO customerDao; @PostConstruct void init() { try { final InitialContext ctx = new InitialContext(); serviceEndpointBaseUrl = (String) ctx.lookup("koku/urls/lokservice-baseurl"); logger.debug("Overwrite lokServiceEndpointBaseUrl with " + serviceEndpointBaseUrl); } catch (NamingException e) { logger.error(null, e); } logServiceFactory = new LogServiceFactory(logUserUid, logUserPwd, serviceEndpointBaseUrl); } /** * @param message */ @Override public void logMessage(LogMessage message) { final LogEntryType logEntry = new LogEntryType(); logEntry.setClientSystemId(message.getSystemArea().name()); logEntry.setDataItemId(message.getDataItemId()); logEntry.setDataItemType(message.getDataItemType()); logEntry.setMessage(message.getMessage()); logEntry.setOperation(message.getOperation().name()); logEntry.setTimestamp(CalendarUtil.getXmlGregorianCalendar(new Date())); logEntry.setCustomerPic(getHetuByUserUid(message.getCustomerPic())); logEntry.setUserPic(getHetuByUserUid(message.getUserPic())); final AuditInfoType auditHeader = new AuditInfoType(); auditHeader.setComponent(logEntry.getClientSystemId()); auditHeader.setUserId(logEntry.getUserPic()); try { final LogEntriesType logEntries = new LogEntriesType(); logEntries.getLogEntry().add(logEntry); logServiceFactory.getLogService().opLog(logEntries, auditHeader); } catch (Exception e) { logger.error("logMessage failed with error: " + e.getMessage()); if (logger.isDebugEnabled()) { logger.debug("Detailed error: ", e); } } } private String getHetuByUserUid(String userUid) { if (userUid == null || userUid.isEmpty()) { return ""; } return customerDao.getSsnByUserUid(userUid); } }