package gov.samhsa.consent2share.domain.provider; import gov.samhsa.consent2share.domain.reference.EntityType; import gov.samhsa.consent2share.service.provider.OrganizationalProviderService; import java.security.SecureRandom; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Random; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Configurable; import org.springframework.stereotype.Component; @Configurable @Component public class OrganizationalProviderDataOnDemand { private Random rnd = new SecureRandom(); private List<OrganizationalProvider> data; @Autowired OrganizationalProviderService organizationalProviderService; @Autowired OrganizationalProviderRepository organizationalProviderRepository; public OrganizationalProvider getNewTransientOrganizationalProvider(int index) { OrganizationalProvider obj = new OrganizationalProvider(); setAuthorizedOfficialFirstName(obj, index); setAuthorizedOfficialLastName(obj, index); setAuthorizedOfficialNamePrefix(obj, index); setAuthorizedOfficialTelephoneNumber(obj, index); setAuthorizedOfficialTitle(obj, index); setEntityType(obj, index); setEnumerationDate(obj, index); setFirstLineMailingAddress(obj, index); setFirstLinePracticeLocationAddress(obj, index); setLastUpdateDate(obj, index); setMailingAddressCityName(obj, index); setMailingAddressCountryCode(obj, index); setMailingAddressFaxNumber(obj, index); setMailingAddressPostalCode(obj, index); setMailingAddressStateName(obj, index); setMailingAddressTelephoneNumber(obj, index); setNpi(obj, index); setOrgName(obj, index); setOtherOrgName(obj, index); setPracticeLocationAddressCityName(obj, index); setPracticeLocationAddressCountryCode(obj, index); setPracticeLocationAddressFaxNumber(obj, index); setPracticeLocationAddressPostalCode(obj, index); setPracticeLocationAddressStateName(obj, index); setPracticeLocationAddressTelephoneNumber(obj, index); setProviderTaxonomyCode(obj, index); setProviderTaxonomyDescription(obj, index); setSecondLineMailingAddress(obj, index); setSecondLinePracticeLocationAddress(obj, index); return obj; } public void setAuthorizedOfficialFirstName(OrganizationalProvider obj, int index) { String authorizedOfficialFirstName = "authorizedOfficialFirstName_" + index; if (authorizedOfficialFirstName.length() > 30) { authorizedOfficialFirstName = authorizedOfficialFirstName.substring(0, 30); } obj.setAuthorizedOfficialFirstName(authorizedOfficialFirstName); } public void setAuthorizedOfficialLastName(OrganizationalProvider obj, int index) { String authorizedOfficialLastName = "authorizedOfficialLastName_" + index; if (authorizedOfficialLastName.length() > 30) { authorizedOfficialLastName = authorizedOfficialLastName.substring(0, 30); } obj.setAuthorizedOfficialLastName(authorizedOfficialLastName); } public void setAuthorizedOfficialNamePrefix(OrganizationalProvider obj, int index) { String authorizedOfficialNamePrefix = "authorizedOfficialNamePrefix_" + index; if (authorizedOfficialNamePrefix.length() > 30) { authorizedOfficialNamePrefix = authorizedOfficialNamePrefix.substring(0, 30); } obj.setAuthorizedOfficialNamePrefix(authorizedOfficialNamePrefix); } public void setAuthorizedOfficialTelephoneNumber(OrganizationalProvider obj, int index) { String authorizedOfficialTelephoneNumber = "authorizedOfficialTelephoneN_" + index; if (authorizedOfficialTelephoneNumber.length() > 30) { authorizedOfficialTelephoneNumber = authorizedOfficialTelephoneNumber.substring(0, 30); } obj.setAuthorizedOfficialTelephoneNumber(authorizedOfficialTelephoneNumber); } public void setAuthorizedOfficialTitle(OrganizationalProvider obj, int index) { String authorizedOfficialTitle = "authorizedOfficialTitle_" + index; if (authorizedOfficialTitle.length() > 30) { authorizedOfficialTitle = authorizedOfficialTitle.substring(0, 30); } obj.setAuthorizedOfficialTitle(authorizedOfficialTitle); } public void setEntityType(OrganizationalProvider obj, int index) { EntityType entityType = EntityType.class.getEnumConstants()[0]; obj.setEntityType(entityType); } public void setEnumerationDate(OrganizationalProvider obj, int index) { String enumerationDate = "enumerationDate_" + index; if (enumerationDate.length() > 30) { enumerationDate = enumerationDate.substring(0, 30); } obj.setEnumerationDate(enumerationDate); } public void setFirstLineMailingAddress(OrganizationalProvider obj, int index) { String firstLineMailingAddress = "foo" + index + "@bar.com"; if (firstLineMailingAddress.length() > 30) { firstLineMailingAddress = firstLineMailingAddress.substring(0, 30); } obj.setFirstLineMailingAddress(firstLineMailingAddress); } public void setFirstLinePracticeLocationAddress(OrganizationalProvider obj, int index) { String firstLinePracticeLocationAddress = "firstLinePracticeLocationAdd_" + index; if (firstLinePracticeLocationAddress.length() > 30) { firstLinePracticeLocationAddress = firstLinePracticeLocationAddress.substring(0, 30); } obj.setFirstLinePracticeLocationAddress(firstLinePracticeLocationAddress); } public void setLastUpdateDate(OrganizationalProvider obj, int index) { String lastUpdateDate = "lastUpdateDate_" + index; if (lastUpdateDate.length() > 30) { lastUpdateDate = lastUpdateDate.substring(0, 30); } obj.setLastUpdateDate(lastUpdateDate); } public void setMailingAddressCityName(OrganizationalProvider obj, int index) { String mailingAddressCityName = "mailingAddressCityName_" + index; if (mailingAddressCityName.length() > 30) { mailingAddressCityName = mailingAddressCityName.substring(0, 30); } obj.setMailingAddressCityName(mailingAddressCityName); } public void setMailingAddressCountryCode(OrganizationalProvider obj, int index) { String mailingAddressCountryCode = "mailingAddressCountryCode_" + index; if (mailingAddressCountryCode.length() > 30) { mailingAddressCountryCode = mailingAddressCountryCode.substring(0, 30); } obj.setMailingAddressCountryCode(mailingAddressCountryCode); } public void setMailingAddressFaxNumber(OrganizationalProvider obj, int index) { String mailingAddressFaxNumber = "mailingAddressFaxNumber_" + index; if (mailingAddressFaxNumber.length() > 30) { mailingAddressFaxNumber = mailingAddressFaxNumber.substring(0, 30); } obj.setMailingAddressFaxNumber(mailingAddressFaxNumber); } public void setMailingAddressPostalCode(OrganizationalProvider obj, int index) { String mailingAddressPostalCode = "mailingAddressPostalCode_" + index; if (mailingAddressPostalCode.length() > 30) { mailingAddressPostalCode = mailingAddressPostalCode.substring(0, 30); } obj.setMailingAddressPostalCode(mailingAddressPostalCode); } public void setMailingAddressStateName(OrganizationalProvider obj, int index) { String mailingAddressStateName = "mailingAddressStateName_" + index; if (mailingAddressStateName.length() > 30) { mailingAddressStateName = mailingAddressStateName.substring(0, 30); } obj.setMailingAddressStateName(mailingAddressStateName); } public void setMailingAddressTelephoneNumber(OrganizationalProvider obj, int index) { String mailingAddressTelephoneNumber = "mailingAddressTelephoneNumbe_" + index; if (mailingAddressTelephoneNumber.length() > 30) { mailingAddressTelephoneNumber = mailingAddressTelephoneNumber.substring(0, 30); } obj.setMailingAddressTelephoneNumber(mailingAddressTelephoneNumber); } public void setNpi(OrganizationalProvider obj, int index) { String npi = "npi_" + index; if (npi.length() > 30) { npi = npi.substring(0, 30); } obj.setNpi(npi); } public void setOrgName(OrganizationalProvider obj, int index) { String orgName = "orgName_" + index; if (orgName.length() > 30) { orgName = orgName.substring(0, 30); } obj.setOrgName(orgName); } public void setOtherOrgName(OrganizationalProvider obj, int index) { String otherOrgName = "otherOrgName_" + index; if (otherOrgName.length() > 30) { otherOrgName = otherOrgName.substring(0, 30); } obj.setOtherOrgName(otherOrgName); } public void setPracticeLocationAddressCityName(OrganizationalProvider obj, int index) { String practiceLocationAddressCityName = "practiceLocationAddressCityN_" + index; if (practiceLocationAddressCityName.length() > 30) { practiceLocationAddressCityName = practiceLocationAddressCityName.substring(0, 30); } obj.setPracticeLocationAddressCityName(practiceLocationAddressCityName); } public void setPracticeLocationAddressCountryCode(OrganizationalProvider obj, int index) { String practiceLocationAddressCountryCode = "practiceLocationAddressCount_" + index; if (practiceLocationAddressCountryCode.length() > 30) { practiceLocationAddressCountryCode = practiceLocationAddressCountryCode.substring(0, 30); } obj.setPracticeLocationAddressCountryCode(practiceLocationAddressCountryCode); } public void setPracticeLocationAddressFaxNumber(OrganizationalProvider obj, int index) { String practiceLocationAddressFaxNumber = "practiceLocationAddressFaxNu_" + index; if (practiceLocationAddressFaxNumber.length() > 30) { practiceLocationAddressFaxNumber = practiceLocationAddressFaxNumber.substring(0, 30); } obj.setPracticeLocationAddressFaxNumber(practiceLocationAddressFaxNumber); } public void setPracticeLocationAddressPostalCode(OrganizationalProvider obj, int index) { String practiceLocationAddressPostalCode = "practiceLocationAddressPosta_" + index; if (practiceLocationAddressPostalCode.length() > 30) { practiceLocationAddressPostalCode = practiceLocationAddressPostalCode.substring(0, 30); } obj.setPracticeLocationAddressPostalCode(practiceLocationAddressPostalCode); } public void setPracticeLocationAddressStateName(OrganizationalProvider obj, int index) { String practiceLocationAddressStateName = "practiceLocationAddressState_" + index; if (practiceLocationAddressStateName.length() > 30) { practiceLocationAddressStateName = practiceLocationAddressStateName.substring(0, 30); } obj.setPracticeLocationAddressStateName(practiceLocationAddressStateName); } public void setPracticeLocationAddressTelephoneNumber(OrganizationalProvider obj, int index) { String practiceLocationAddressTelephoneNumber = "practiceLocationAddressTelep_" + index; if (practiceLocationAddressTelephoneNumber.length() > 30) { practiceLocationAddressTelephoneNumber = practiceLocationAddressTelephoneNumber.substring(0, 30); } obj.setPracticeLocationAddressTelephoneNumber(practiceLocationAddressTelephoneNumber); } public void setProviderTaxonomyCode(OrganizationalProvider obj, int index) { String providerTaxonomyCode = "providerTaxonomyCode_" + index; if (providerTaxonomyCode.length() > 30) { providerTaxonomyCode = providerTaxonomyCode.substring(0, 30); } obj.setProviderTaxonomyCode(providerTaxonomyCode); } public void setProviderTaxonomyDescription(OrganizationalProvider obj, int index) { String providerTaxonomyDescription = "providerTaxonomyDescription_" + index; if (providerTaxonomyDescription.length() > 30) { providerTaxonomyDescription = providerTaxonomyDescription.substring(0, 30); } obj.setProviderTaxonomyDescription(providerTaxonomyDescription); } public void setSecondLineMailingAddress(OrganizationalProvider obj, int index) { String secondLineMailingAddress = "foo" + index + "@bar.com"; if (secondLineMailingAddress.length() > 30) { secondLineMailingAddress = secondLineMailingAddress.substring(0, 30); } obj.setSecondLineMailingAddress(secondLineMailingAddress); } public void setSecondLinePracticeLocationAddress(OrganizationalProvider obj, int index) { String secondLinePracticeLocationAddress = "secondLinePracticeLocationAd_" + index; if (secondLinePracticeLocationAddress.length() > 30) { secondLinePracticeLocationAddress = secondLinePracticeLocationAddress.substring(0, 30); } obj.setSecondLinePracticeLocationAddress(secondLinePracticeLocationAddress); } public OrganizationalProvider getSpecificOrganizationalProvider(int index) { init(); if (index < 0) { index = 0; } if (index > (data.size() - 1)) { index = data.size() - 1; } OrganizationalProvider obj = data.get(index); Long id = obj.getId(); return organizationalProviderService.findOrganizationalProvider(id); } public OrganizationalProvider getRandomOrganizationalProvider() { init(); OrganizationalProvider obj = data.get(rnd.nextInt(data.size())); Long id = obj.getId(); return organizationalProviderService.findOrganizationalProvider(id); } public boolean modifyOrganizationalProvider(OrganizationalProvider obj) { return false; } public void init() { int from = 0; int to = 10; data = organizationalProviderService.findOrganizationalProviderEntries(from, to); if (data == null) { throw new IllegalStateException("Find entries implementation for 'OrganizationalProvider' illegally returned null"); } if (!data.isEmpty()) { return; } data = new ArrayList<OrganizationalProvider>(); for (int i = 0; i < 10; i++) { OrganizationalProvider obj = getNewTransientOrganizationalProvider(i); try { organizationalProviderService.saveOrganizationalProvider(obj); } catch (ConstraintViolationException e) { StringBuilder msg = new StringBuilder(); for (Iterator<ConstraintViolation<?>> iter = e.getConstraintViolations().iterator(); iter.hasNext();) { ConstraintViolation<?> cv = iter.next(); msg.append("[").append(cv.getConstraintDescriptor()).append(":").append(cv.getMessage()).append("=").append(cv.getInvalidValue()).append("]"); } throw new RuntimeException(msg.toString(), e); } organizationalProviderRepository.flush(); data.add(obj); } } }