package fi.arcusys.koku.tiva.soa; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import javax.interceptor.InvocationContext; import fi.arcusys.koku.common.external.LogMessage; import fi.arcusys.koku.common.external.LoggedOperation; import fi.arcusys.koku.common.external.SystemArea; import fi.arcusys.koku.common.soa.AbstractLoggingInterceptor; /** * Interceptor for performing logging about business valuable events in TIVA-Tietopyyntö * * @author Dmitry Kudinov (dmitry.kudinov@arcusys.fi) * Oct 4, 2011 */ public class KokuTietopyyntoInterceptor extends AbstractLoggingInterceptor { private static Set<String> operations = new HashSet<String>(Arrays.asList( "createInformationRequest", "approveRequest", "declineRequest" )); /** * @param ctx * @return */ @Override protected boolean isLogNeeded(InvocationContext ctx) { return operations.contains(ctx.getMethod().getName()); } /** * @param ctx * @return */ @Override protected LogMessage createLogMessage(InvocationContext ctx, final Object result) { final LogMessage message = new LogMessage(); message.setSystemArea(SystemArea.TIVA); message.setDataItemType("tiva.tietopyynto"); final String methodName = ctx.getMethod().getName(); if ("createInformationRequest".equals(methodName)) { final InformationRequestTO request = getGenericParameter(ctx, 0); message.setOperation(LoggedOperation.Create); message.setUserPic(request.getSenderUid()); message.setCustomerPic(request.getTargetPersonUid()); if (result instanceof Long) { message.setDataItemId(String.valueOf(result)); } } else if ("approveRequest".equals(methodName)) { final InformationRequestReplyTO reply = getGenericParameter(ctx, 0); message.setOperation(LoggedOperation.Update); message.setDataItemId(String.valueOf(reply.getRequestId())); } else if ("declineRequest".equals(methodName)) { message.setOperation(LoggedOperation.Update); message.setDataItemId(getParameterAsString(ctx, 0)); } message.setMessage(methodName); return message; } }