All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ojbc.bundles.utilities.auditing.AuditRestImpl Maven / Gradle / Ivy

The newest version!
/*
 * Unless explicitly acquired and licensed from Licensor under another license, the contents of
 * this file are subject to the Reciprocal Public License ("RPL") Version 1.5, or subsequent
 * versions as allowed by the RPL, and You may not copy or use this file in either source code
 * or executable form, except in compliance with the terms and conditions of the RPL
 *
 * All software distributed under the RPL is provided strictly on an "AS IS" basis, WITHOUT
 * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND LICENSOR HEREBY DISCLAIMS ALL SUCH
 * WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE, QUIET ENJOYMENT, OR NON-INFRINGEMENT. See the RPL for specific language
 * governing rights and limitations under the RPL.
 *
 * http://opensource.org/licenses/RPL-1.5
 *
 * Copyright 2012-2017 Open Justice Broker Consortium
 */
package org.ojbc.bundles.utilities.auditing;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.ojbc.audit.enhanced.dao.EnhancedAuditDAO;
import org.ojbc.audit.enhanced.dao.model.FederalRapbackNotification;
import org.ojbc.audit.enhanced.dao.model.FederalRapbackSubscription;
import org.ojbc.audit.enhanced.dao.model.FederalRapbackSubscriptionDetail;
import org.ojbc.audit.enhanced.dao.model.FirearmsSearchRequest;
import org.ojbc.audit.enhanced.dao.model.IncidentSearchRequest;
import org.ojbc.audit.enhanced.dao.model.NotificationSent;
import org.ojbc.audit.enhanced.dao.model.PersonSearchRequest;
import org.ojbc.audit.enhanced.dao.model.PrintResults;
import org.ojbc.audit.enhanced.dao.model.QueryRequestByDateRange;
import org.ojbc.audit.enhanced.dao.model.UserAcknowledgement;
import org.ojbc.audit.enhanced.dao.model.UserInfo;
import org.ojbc.audit.enhanced.dao.model.VehicleSearchRequest;
import org.ojbc.audit.enhanced.dao.model.auditsearch.AuditSearchRequest;
import org.ojbc.audit.enhanced.dao.model.auditsearch.UserAuthenticationSearchRequest;
import org.ojbc.audit.enhanced.dao.model.auditsearch.UserAuthenticationSearchResponse;
import org.ojbc.intermediaries.sn.dao.SubscriptionSearchQueryDAO;
import org.ojbc.util.model.rapback.AgencyProfile;
import org.ojbc.util.model.rapback.ExpiringSubscriptionRequest;
import org.ojbc.util.model.rapback.Subscription;
import org.springframework.stereotype.Service;

@Service
public class AuditRestImpl implements AuditInterface {

	private static final Log log = LogFactory.getLog(AuditRestImpl.class);
	
	@Resource
	private EnhancedAuditDAO enhancedAuditDao;
	
	@Resource
	private SubscriptionSearchQueryDAO subscriptionSearchQueryDAO;
	
	@Resource
	Map notificationSystemToTriggeringEvent;
	
	private static final String LOGIN_ACTION="login";
	
	private static final String LOGOUT_ACTION="logout";
	
	@Override
	public Response auditPrintResults(PrintResults printResults) {

		log.info("Print Results: " + printResults.toString());
		
		enhancedAuditDao.savePrintResults(printResults);
		
		return Response.status(Status.OK).entity(printResults).build();
	}

	@Override
	public Response auditUserLogin(UserInfo userInfo) {
		log.info("Auditing user login info: " + userInfo.toString());
		
		Integer userInfoPk = null;
		
		//Look up user info here
		List userInfoEntries = enhancedAuditDao.retrieveUserInfoFromFederationId(userInfo.getFederationId());
		
		if (userInfoEntries != null && userInfoEntries.size() > 0)
		{
			userInfoPk = userInfoEntries.get(0).getUserInfoId();
		}
		else
		{	
			userInfoPk = enhancedAuditDao.saveUserInfo(userInfo);
		}	
		
		enhancedAuditDao.saveUserAuthentication(userInfoPk, LOGIN_ACTION);
		
		return Response.status(Status.OK).entity(userInfo).build();
	}

	@Override
	public Response auditUserLogout(UserInfo userInfo) {
		log.info("Auditing user logout info: " + userInfo.toString());
		
		Integer userInfoPk = null;
		
		//Look up user info here
		List userInfoEntries = enhancedAuditDao.retrieveUserInfoFromFederationId(userInfo.getFederationId());
		
		if (userInfoEntries != null && userInfoEntries.size() > 0)
		{
			userInfoPk = userInfoEntries.get(0).getUserInfoId();
		}
		else
		{	
			userInfoPk = enhancedAuditDao.saveUserInfo(userInfo);
		}
		
		enhancedAuditDao.saveUserAuthentication(userInfoPk, LOGOUT_ACTION);
		
		return Response.status(Status.OK).entity(userInfo).build();
	}

	@Override
	public Response auditUserAcknowledgement(
			UserAcknowledgement userAcknowledgement) {
		log.info("Audit user acknowledgement: " + userAcknowledgement.toString());
		
		Integer userInfoPk = null;
		
		//Look up user info here
		List userInfoEntries = enhancedAuditDao.retrieveUserInfoFromFederationId(userAcknowledgement.getUserInfo().getFederationId());
		
		if (userInfoEntries != null && userInfoEntries.size() > 0)
		{
			userInfoPk = userInfoEntries.get(0).getUserInfoId();
		}
		else
		{	
			userInfoPk = enhancedAuditDao.saveUserInfo(userAcknowledgement.getUserInfo());
		}		
	
		userAcknowledgement.getUserInfo().setUserInfoId(userInfoPk);
		
		enhancedAuditDao.saveuserAcknowledgement(userAcknowledgement);
		
		return Response.status(Status.OK).entity(userAcknowledgement).build();	
		
	}	
	
	@Override
	public List searchForFederalRapbackSubscriptions(String subscriptionId) {
		log.info("Subscription ID: " + subscriptionId);
		
		List federalRapbackSubscriptions = enhancedAuditDao.retrieveFederalRapbackSubscriptionFromStateSubscriptionId(subscriptionId);
		
		return federalRapbackSubscriptions;
	}

	@Override
	public List retrieveExpiringSubscriptions(ExpiringSubscriptionRequest request) {
		
		log.info("Days until expiration: " + request.getDaysUntilExpiry());
		log.info("ORIs: " + request.getOris());
		
		List subscriptions = subscriptionSearchQueryDAO.searchForExpiringAndInvalidSubscriptions(request.getOris(), request.getDaysUntilExpiry(), request.getSystemName());
		
		return subscriptions;
	}

	@Override
	public List retrieveExpiredSubscriptions(
			ExpiringSubscriptionRequest request) {
		log.info("Days until expiration: " + request.getDaysUntilExpiry());
		log.info("ORIs: " + request.getOris());
		
		List subscriptions = subscriptionSearchQueryDAO.searchForExpiredAndInvalidSubscriptions(request.getOris(), request.getDaysUntilExpiry(), request.getSystemName());
		
		return subscriptions;
	}

	@Override
	public List retrieveAllAgencies() {
		
		List agencyProfiles = subscriptionSearchQueryDAO.returnAllAgencies();
		
		
		return agencyProfiles;
	}

	@Override
	public List retrieveRapbackNotifications(QueryRequestByDateRange queryRequestByDateRange) {
		List federalRapbackNotifications = enhancedAuditDao.retrieveFederalNotifications(queryRequestByDateRange.getStartDate(), queryRequestByDateRange.getEndDate());
		return federalRapbackNotifications;
	}
	
	@Override
	public List retrieveNotificationsSent(QueryRequestByDateRange queryRequestByDateRange) {
		List notificationSents = enhancedAuditDao.retrieveNotifications(queryRequestByDateRange.getStartDate(), queryRequestByDateRange.getEndDate());
		
		for (NotificationSent notificationSent : notificationSents)
		{
			if (StringUtils.isNotBlank(notificationSent.getNotifyingSystemName()))
			{
				if (notificationSystemToTriggeringEvent.containsKey(notificationSent.getNotifyingSystemName()))
				{
					ArrayList triggeringEvents = new ArrayList();
					triggeringEvents.add(notificationSystemToTriggeringEvent.get(notificationSent.getNotifyingSystemName()));
					
					notificationSent.setTriggeringEvents(triggeringEvents);
				}	
			}
		}	
		
		
		return notificationSents;
	}	

	@Override
	public List searchForFederalRapbackNotifications(
			String subscriptionId) {
		List federalRapbackNotifications = enhancedAuditDao.retrieveFederalNotificationsBySubscriptionId(subscriptionId);
		return federalRapbackNotifications;
	}

	@Override
	public List retrieveFederalRapbackSubscriptionErrors() {
		log.info("Retrieve Federal Subscription Errors.");
		
		List federalRapbackSubscriptions = enhancedAuditDao.retrieveFederalRapbackSubscriptionErrors();
		
		return federalRapbackSubscriptions;	
	}

	@Override
	public FederalRapbackSubscriptionDetail returnFederalRapbackSubscriptionDetail(
			String subscriptionId) {

		FederalRapbackSubscriptionDetail federalRapbackSubscriptionDetail = new FederalRapbackSubscriptionDetail();
		
		//Return all federal subscription info for the state subscription
		List federalRapbackSubscriptions = enhancedAuditDao.retrieveFederalRapbackSubscriptionFromStateSubscriptionId(subscriptionId);
	
		federalRapbackSubscriptionDetail.setFederalRapbackSubscriptions(federalRapbackSubscriptions);
		
		boolean latestMaintenanceRequestFound = false;
		
		//Results come back sorted in descending order by timestamp
		for (FederalRapbackSubscription federalRapbackSubscription : federalRapbackSubscriptions)
		{
			if ("RBSCVL".equals(federalRapbackSubscription.getTransactionCategoryCodeRequest()))
			{
				federalRapbackSubscriptionDetail.setFbiSubscriptionSent(true);
				
				if (StringUtils.isNotBlank(federalRapbackSubscription.getTransactionCategoryCodeResponse()) && federalRapbackSubscription.getTransactionCategoryCodeResponse().equals("RBSR") && StringUtils.isNotBlank(federalRapbackSubscription.getFbiSubscriptionId()))
				{
					federalRapbackSubscriptionDetail.setFbiSubscriptionCreated(true);
				}	
				
				if (StringUtils.isNotBlank(federalRapbackSubscription.getTransactionStatusText()))
				{	
					federalRapbackSubscriptionDetail.setFbiSubscriptionErrorText(federalRapbackSubscription.getTransactionStatusText());
				}	
			}	
			
			if ("RBSCRM".equals(federalRapbackSubscription.getTransactionCategoryCodeRequest()))
			{
				federalRapbackSubscriptionDetail.setFbiSubscriptionSent(true);
				
				if (StringUtils.isNotBlank(federalRapbackSubscription.getTransactionCategoryCodeResponse()) && federalRapbackSubscription.getTransactionCategoryCodeResponse().equals("RBSR") && StringUtils.isNotBlank(federalRapbackSubscription.getFbiSubscriptionId()))
				{
					federalRapbackSubscriptionDetail.setFbiSubscriptionCreated(true);
				}	
				
				if (StringUtils.isNotBlank(federalRapbackSubscription.getTransactionStatusText()))
				{	
					federalRapbackSubscriptionDetail.setFbiSubscriptionErrorText(federalRapbackSubscription.getTransactionStatusText());
				}	
			}				
			
			if (!latestMaintenanceRequestFound)
			{
				if ("RBMNT".equals(federalRapbackSubscription.getTransactionCategoryCodeRequest()))
				{
					federalRapbackSubscriptionDetail.setFbiRapbackMaintenanceSent(true);
					
					if (StringUtils.isNotBlank(federalRapbackSubscription.getTransactionCategoryCodeResponse()) && federalRapbackSubscription.getTransactionCategoryCodeResponse().equals("RBMNTR") && StringUtils.isNotBlank(federalRapbackSubscription.getFbiSubscriptionId()))
					{
						federalRapbackSubscriptionDetail.setFbiRapbackMaintenanceConfirmed(true);
					}	
					
					if (StringUtils.isNotBlank(federalRapbackSubscription.getTransactionStatusText()))
					{	
						federalRapbackSubscriptionDetail.setFbiRapbackMaintenanceErrorText(federalRapbackSubscription.getTransactionStatusText());
					}	
					
					latestMaintenanceRequestFound = true;
				}	
				
			}	
		}	
		
		return federalRapbackSubscriptionDetail;
	}

	@Override
	public List retrieveUserAuthentications(
			UserAuthenticationSearchRequest authenticationSearchRequest) {

		log.info("User Authentication Search Request: " + authenticationSearchRequest.toString());
		
		List userAuthenticationSearchResponses = enhancedAuditDao.retrieveUserAuthentication(authenticationSearchRequest);
		
		return userAuthenticationSearchResponses;
	}

	@Override
	public List retrievePersonSearchRequest(AuditSearchRequest auditSearchRequest) {
		
		log.info("Person Audit Search Request: " + auditSearchRequest.toString());
		
		List personSearchRequests = enhancedAuditDao.retrievePersonSearchRequest(auditSearchRequest);
		
		return personSearchRequests;

	}

	@Override
	public List retrieveFirearmSearchRequest(AuditSearchRequest auditSearchRequest) {
		
		log.info("Firearm Audit Search Request: " + auditSearchRequest.toString());
		
		List firearmsSearchRequests = enhancedAuditDao.retrieveFirearmSearchRequest(auditSearchRequest);
		
		return firearmsSearchRequests;
	}

	@Override
	public List retrieveVehicleSearchRequest(AuditSearchRequest auditSearchRequest) {
		
		log.info("Vehicle Audit Search Request: " + auditSearchRequest.toString());
		
		List vehicleSearchRequests = enhancedAuditDao.retrieveVehicleSearchRequest(auditSearchRequest);
		
		return vehicleSearchRequests;

	}

	@Override
	public List retrieveIncidentSearchRequest(AuditSearchRequest auditSearchRequest) {
		
		log.info("Incident Audit Search Request: " + auditSearchRequest.toString());
		
		List incidentSearchRequests = enhancedAuditDao.retrieveIncidentSearchRequest(auditSearchRequest);
		
		return incidentSearchRequests;

	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy