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

io.mosip.registration.dao.impl.SyncJobControlDAOImpl Maven / Gradle / Ivy

package io.mosip.registration.dao.impl;

import static io.mosip.registration.constants.RegistrationConstants.APPLICATION_ID;
import static io.mosip.registration.constants.RegistrationConstants.APPLICATION_NAME;

import java.util.Arrays;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import io.mosip.kernel.core.logger.spi.Logger;
import io.mosip.registration.audit.AuditManagerService;
import io.mosip.registration.config.AppConfig;
import io.mosip.registration.constants.AuditEvent;
import io.mosip.registration.constants.AuditReferenceIdTypes;
import io.mosip.registration.constants.Components;
import io.mosip.registration.constants.RegistrationClientStatusCode;
import io.mosip.registration.constants.RegistrationConstants;
import io.mosip.registration.context.SessionContext;
import io.mosip.registration.dao.SyncJobControlDAO;
import io.mosip.registration.entity.Registration;
import io.mosip.registration.entity.SyncControl;
import io.mosip.registration.exception.RegBaseUncheckedException;
import io.mosip.registration.repositories.RegistrationRepository;
import io.mosip.registration.repositories.SyncJobControlRepository;

/**
 * The implementation class for {@link SyncJobControlDAO}.
 *
 * @author Sreekar Chukka
 * @author Mahesh Kumar
 * @since 1.0.0
 */
@Repository
public class SyncJobControlDAOImpl implements SyncJobControlDAO {

	private static final List REG_STATUS_CODES = Arrays.asList(RegistrationClientStatusCode.CREATED.getCode(),
			RegistrationClientStatusCode.REJECTED.getCode(), RegistrationClientStatusCode.APPROVED.getCode(),
			RegistrationClientStatusCode.CORRECTION.getCode(), RegistrationClientStatusCode.UIN_UPDATE.getCode(),
			RegistrationClientStatusCode.UIN_LOST.getCode(),
			RegistrationClientStatusCode.META_INFO_SYN_SERVER.getCode(),
			RegistrationClientStatusCode.ON_HOLD.getCode());

	private static final List LAST_EXPORT_STATUS_CODES = Arrays.asList(
			RegistrationClientStatusCode.UPLOADED_SUCCESSFULLY.getCode(),
			RegistrationClientStatusCode.EXPORT.getCode());

	/** Object for Sync Status Repository. */
	@Autowired
	private SyncJobControlRepository syncJobRepository;

	/** Object for Registration Repository. */
	@Autowired
	private RegistrationRepository registrationRepository;

	/**
	 * Object for Logger
	 */
	private static final Logger LOGGER = AppConfig.getLogger(SyncJobControlDAOImpl.class);

	@Autowired
	private AuditManagerService auditFactory;

	/*
	 * (non-Javadoc)
	 * 
	 * @see io.mosip.registration.dao.SyncJobDAO#validateSyncStatus()
	 */
	public SyncJobInfo getSyncStatus() {

		LOGGER.info("REGISTRATION - SYNC - VALIDATION", APPLICATION_NAME, APPLICATION_ID,
				"Fetching the last sync details from database started");

		try {
			Long registrationsListCount = registrationRepository
					.countByClientStatusCodeInOrderByUpdDtimesDesc(REG_STATUS_CODES);
			Registration lastExportRegistration = registrationRepository
					.findTopByClientStatusCodeInOrderByUpdDtimesDesc(LAST_EXPORT_STATUS_CODES);

			LOGGER.info("REGISTRATION - SYNC - VALIDATION", APPLICATION_NAME, APPLICATION_ID,
					"Fetching the last sync details from database ended");

			auditFactory.audit(AuditEvent.SYNCJOB_INFO_FETCH, Components.SYNC_VALIDATE, SessionContext.userId(),
					AuditReferenceIdTypes.USER_ID.getReferenceTypeId());

			return new SyncJobInfo(syncJobRepository.findAll(), registrationsListCount, lastExportRegistration);

		} catch (RuntimeException runtimeException) {
			throw new RegBaseUncheckedException(RegistrationConstants.SYNC_STATUS_VALIDATE,
					runtimeException.toString());
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * io.mosip.registration.dao.SyncJobDAO#update(io.mosip.registration.entity.
	 * SyncControl)
	 */
	@Override
	public SyncControl update(SyncControl syncControl) {
		LOGGER.info(RegistrationConstants.SYNC_JOB_CONTROL_DAO_LOGGER_TITLE, APPLICATION_NAME, APPLICATION_ID,
				"updating sync details from database started");
		return syncJobRepository.update(syncControl);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see io.mosip.registration.dao.SyncJobDAO#save(io.mosip.registration.entity.
	 * SyncControl)
	 */
	@Override
	public SyncControl save(SyncControl syncControl) {
		LOGGER.info(RegistrationConstants.SYNC_JOB_CONTROL_DAO_LOGGER_TITLE, APPLICATION_NAME, APPLICATION_ID,
				"saving sync details to database started");
		return syncJobRepository.save(syncControl);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see io.mosip.registration.dao.SyncJobDAO#findBySyncJobId(java.lang.String)
	 */
	@Override
	public SyncControl findBySyncJobId(String syncJobId) {
		LOGGER.info(RegistrationConstants.SYNC_JOB_CONTROL_DAO_LOGGER_TITLE, APPLICATION_NAME, APPLICATION_ID,
				"Fetching the sync details from database started");
		return syncJobRepository.findBySyncJobId(syncJobId);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see io.mosip.registration.dao.SyncJobDAO#findAll()
	 */
	@Override
	public List findAll() {
		LOGGER.info(RegistrationConstants.SYNC_JOB_CONTROL_DAO_LOGGER_TITLE, APPLICATION_NAME, APPLICATION_ID,
				"Fetching the list of sync details from database started");
		return syncJobRepository.findAll();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see io.mosip.registration.dao.SyncJobDAO#getRegistrationDetails()
	 */
	public List getRegistrationDetails() {

		LOGGER.info(RegistrationConstants.SYNC_JOB_CONTROL_DAO_LOGGER_TITLE, APPLICATION_NAME, APPLICATION_ID,
				"Fetching the Registration Details of Registered Status");

		return registrationRepository
				.findByclientStatusCodeOrderByCrDtimeAsc(RegistrationClientStatusCode.CREATED.getCode());
	}
	
	@Override
	public Long getRegistrationCount() {
		LOGGER.info(RegistrationConstants.SYNC_JOB_CONTROL_DAO_LOGGER_TITLE, APPLICATION_NAME, APPLICATION_ID,
				"Fetching the total registration count of Registered Status");

		return registrationRepository
				.countByclientStatusCodeOrderByCrDtimeAsc(RegistrationClientStatusCode.CREATED.getCode());
	}

	@Override
	public Registration getFirstRegistration() {
		LOGGER.info(RegistrationConstants.SYNC_JOB_CONTROL_DAO_LOGGER_TITLE, APPLICATION_NAME, APPLICATION_ID,
				"Fetching the first registration from the list of registrations with Registered Status");

		return registrationRepository
				.findTopByclientStatusCodeOrderByCrDtimeAsc(RegistrationClientStatusCode.CREATED.getCode());
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy