/* * Copyright 2015 herd contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.finra.herd.dao; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import org.finra.herd.model.api.xml.Attribute; import org.finra.herd.model.api.xml.BusinessObjectDefinitionKey; import org.finra.herd.model.api.xml.SampleDataFile; import org.finra.herd.model.jpa.BusinessObjectDefinitionAttributeEntity; import org.finra.herd.model.jpa.BusinessObjectDefinitionEntity; import org.finra.herd.model.jpa.BusinessObjectDefinitionSampleDataFileEntity; import org.finra.herd.model.jpa.DataProviderEntity; import org.finra.herd.model.jpa.NamespaceEntity; import org.finra.herd.model.jpa.StorageEntity; @Component public class BusinessObjectDefinitionDaoTestHelper { @Autowired private BusinessObjectDefinitionDao businessObjectDefinitionDao; @Autowired private DataProviderDao dataProviderDao; @Autowired private DataProviderDaoTestHelper dataProviderDaoTestHelper; @Autowired private NamespaceDao namespaceDao; @Autowired private NamespaceDaoTestHelper namespaceDaoTestHelper; @Autowired private StorageDao storageDao; @Autowired private StorageDaoTestHelper storageDaoTestHelper; /** * Creates and persists a new business object definition. * * @return the newly created business object definition. */ public BusinessObjectDefinitionEntity createBusinessObjectDefinition() { String businessObjectDefinitionName = "BusObjDefTest" + AbstractDaoTest.getRandomSuffix(); BusinessObjectDefinitionEntity businessObjectDefinitionEntity = new BusinessObjectDefinitionEntity(); businessObjectDefinitionEntity.setNamespace(namespaceDaoTestHelper.createNamespaceEntity()); businessObjectDefinitionEntity.setDataProvider(dataProviderDaoTestHelper.createDataProviderEntity()); businessObjectDefinitionEntity.setName(businessObjectDefinitionName); businessObjectDefinitionEntity.setDescription("test"); return businessObjectDefinitionDao.saveAndRefresh(businessObjectDefinitionEntity); } /** * Creates and persists a new business object definition entity. * * @param businessObjectDefinitionKey the business object definition key * @param dataProviderName the name of the data provider * @param businessObjectDefinitionDescription the description of the business object definition * * @return the newly created business object definition entity */ public BusinessObjectDefinitionEntity createBusinessObjectDefinitionEntity(BusinessObjectDefinitionKey businessObjectDefinitionKey, String dataProviderName, String businessObjectDefinitionDescription) { return createBusinessObjectDefinitionEntity(businessObjectDefinitionKey.getNamespace(), businessObjectDefinitionKey.getBusinessObjectDefinitionName(), dataProviderName, businessObjectDefinitionDescription); } /** * Creates and persists a new business object definition. * * @return the newly created business object definition. */ public BusinessObjectDefinitionEntity createBusinessObjectDefinitionEntity(String namespaceCode, String businessObjectDefinitionName, String dataProviderName, String businessObjectDefinitionDescription) { return createBusinessObjectDefinitionEntity(namespaceCode, businessObjectDefinitionName, dataProviderName, businessObjectDefinitionDescription, null); } /** * Creates and persists a new business object definition entity. * * @return the newly created business object definition entity */ public BusinessObjectDefinitionEntity createBusinessObjectDefinitionEntity(String namespaceCode, String businessObjectDefinitionName, String dataProviderName, String businessObjectDefinitionDescription, List<Attribute> attributes) { return createBusinessObjectDefinitionEntity(namespaceCode, businessObjectDefinitionName, dataProviderName, businessObjectDefinitionDescription, null, attributes); } /** * Creates and persists a new business object definition entity. * * @return the newly created business object definition entity */ public BusinessObjectDefinitionEntity createBusinessObjectDefinitionEntity(String namespaceCode, String businessObjectDefinitionName, String dataProviderName, String businessObjectDefinitionDescription, String displayName, List<Attribute> attributes) { return createBusinessObjectDefinitionEntity(namespaceCode, businessObjectDefinitionName, dataProviderName, businessObjectDefinitionDescription, displayName, attributes, null); } /** * Creates and persists a new business object definition entity. * * @return the newly created business object definition entity */ public BusinessObjectDefinitionEntity createBusinessObjectDefinitionEntity(String namespaceCode, String businessObjectDefinitionName, String dataProviderName, String businessObjectDefinitionDescription, String displayName, List<Attribute> attributes, List<SampleDataFile> sampleDataFiles) { // Create a namespace entity if needed. NamespaceEntity namespaceEntity = namespaceDao.getNamespaceByCd(namespaceCode); if (namespaceEntity == null) { namespaceEntity = namespaceDaoTestHelper.createNamespaceEntity(namespaceCode); } // Create a data provider entity if needed. DataProviderEntity dataProviderEntity = dataProviderDao.getDataProviderByName(dataProviderName); if (dataProviderEntity == null) { dataProviderEntity = dataProviderDaoTestHelper.createDataProviderEntity(dataProviderName); } return createBusinessObjectDefinitionEntity(namespaceEntity, businessObjectDefinitionName, dataProviderEntity, businessObjectDefinitionDescription, displayName, attributes, sampleDataFiles); } /** * Creates and persists a new business object definition entity. * * @return the newly created business object definition entity */ public BusinessObjectDefinitionEntity createBusinessObjectDefinitionEntity(NamespaceEntity namespaceEntity, String businessObjectDefinitionName, DataProviderEntity dataProviderEntity, String businessObjectDefinitionDescription, String displayName, List<Attribute> attributes, List<SampleDataFile> sampleDataFiles) { BusinessObjectDefinitionEntity businessObjectDefinitionEntity = new BusinessObjectDefinitionEntity(); businessObjectDefinitionEntity.setNamespace(namespaceEntity); businessObjectDefinitionEntity.setDataProvider(dataProviderEntity); businessObjectDefinitionEntity.setName(businessObjectDefinitionName); businessObjectDefinitionEntity.setDescription(businessObjectDefinitionDescription); businessObjectDefinitionEntity.setDisplayName(displayName); // Create business object definition attribute entities if they are specified. if (!CollectionUtils.isEmpty(attributes)) { List<BusinessObjectDefinitionAttributeEntity> attributeEntities = new ArrayList<>(); businessObjectDefinitionEntity.setAttributes(attributeEntities); for (Attribute attribute : attributes) { BusinessObjectDefinitionAttributeEntity attributeEntity = new BusinessObjectDefinitionAttributeEntity(); attributeEntities.add(attributeEntity); attributeEntity.setBusinessObjectDefinition(businessObjectDefinitionEntity); attributeEntity.setName(attribute.getName()); attributeEntity.setValue(attribute.getValue()); } } // Create business object definition sample data file entities if they are specified. if (!CollectionUtils.isEmpty(sampleDataFiles)) { // Create a storage entity if needed. StorageEntity storageEntity = storageDao.getStorageByName(AbstractDaoTest.STORAGE_NAME); if (storageEntity == null) { storageEntity = storageDaoTestHelper.createStorageEntity(AbstractDaoTest.STORAGE_NAME); } // Create sample data file entities. List<BusinessObjectDefinitionSampleDataFileEntity> sampleDataFileEntities = new ArrayList<>(); businessObjectDefinitionEntity.setSampleDataFiles(sampleDataFileEntities); for (SampleDataFile sampleDataFile : sampleDataFiles) { BusinessObjectDefinitionSampleDataFileEntity sampleDataFileEntity = new BusinessObjectDefinitionSampleDataFileEntity(); sampleDataFileEntities.add(sampleDataFileEntity); sampleDataFileEntity.setBusinessObjectDefinition(businessObjectDefinitionEntity); sampleDataFileEntity.setDirectoryPath(sampleDataFile.getDirectoryPath()); sampleDataFileEntity.setFileName(sampleDataFile.getFileName()); sampleDataFileEntity.setFileSizeBytes(AbstractDaoTest.FILE_SIZE_1_KB); sampleDataFileEntity.setStorage(storageEntity); } } return businessObjectDefinitionDao.saveAndRefresh(businessObjectDefinitionEntity); } /** * Creates and returns a list of business object definition entities. * * @return the list of expected business object definition entities */ public List<BusinessObjectDefinitionEntity> createExpectedBusinessObjectDefinitionEntities() { List<BusinessObjectDefinitionEntity> businessObjectDefinitionEntities = new ArrayList<>(); BusinessObjectDefinitionEntity businessObjectDefinitionEntityOne = createBusinessObjectDefinitionEntity(AbstractDaoTest.NAMESPACE, AbstractDaoTest.BDEF_NAME, AbstractDaoTest.DATA_PROVIDER_NAME, AbstractDaoTest.BDEF_DESCRIPTION); BusinessObjectDefinitionEntity businessObjectDefinitionEntityTwo = createBusinessObjectDefinitionEntity(AbstractDaoTest.NAMESPACE_2, AbstractDaoTest.BDEF_NAME_2, AbstractDaoTest.DATA_PROVIDER_NAME_2, AbstractDaoTest.BDEF_DESCRIPTION_2); BusinessObjectDefinitionEntity businessObjectDefinitionEntityThree = createBusinessObjectDefinitionEntity(AbstractDaoTest.NAMESPACE_3, AbstractDaoTest.BDEF_NAME_3, AbstractDaoTest.DATA_PROVIDER_NAME, AbstractDaoTest.BDEF_DESCRIPTION_WITH_HTML_AND_CARET_VALUES); businessObjectDefinitionEntities.add(businessObjectDefinitionEntityOne); businessObjectDefinitionEntities.add(businessObjectDefinitionEntityTwo); businessObjectDefinitionEntities.add(businessObjectDefinitionEntityThree); return businessObjectDefinitionEntities; } /** * Returns a list of test business object definition keys expected to be returned by getBusinessObjectDefinitionKeys() method. * * @return the list of expected business object definition keys */ public List<BusinessObjectDefinitionKey> getExpectedBusinessObjectDefinitionKeys() { List<BusinessObjectDefinitionKey> keys = new ArrayList<>(); keys.add(new BusinessObjectDefinitionKey(AbstractDaoTest.NAMESPACE, AbstractDaoTest.BDEF_NAME)); keys.add(new BusinessObjectDefinitionKey(AbstractDaoTest.NAMESPACE_2, AbstractDaoTest.BDEF_NAME)); keys.add(new BusinessObjectDefinitionKey(AbstractDaoTest.NAMESPACE, AbstractDaoTest.BDEF_NAME_2)); keys.add(new BusinessObjectDefinitionKey(AbstractDaoTest.NAMESPACE_2, AbstractDaoTest.BDEF_NAME_2)); return keys; } /** * Returns a list of test business object definition keys expected to be returned by getBusinessObjectDefinitionKeysByNamespace() method. * * @return the list of expected business object definition keys */ public List<BusinessObjectDefinitionKey> getExpectedBusinessObjectDefinitionKeysForNamespace() { List<BusinessObjectDefinitionKey> keys = new ArrayList<>(); keys.add(new BusinessObjectDefinitionKey(AbstractDaoTest.NAMESPACE, AbstractDaoTest.BDEF_NAME)); keys.add(new BusinessObjectDefinitionKey(AbstractDaoTest.NAMESPACE, AbstractDaoTest.BDEF_NAME_2)); return keys; } /** * Returns a list of test business object definition keys. * * @return the list of test business object definition keys */ public List<BusinessObjectDefinitionKey> getTestBusinessObjectDefinitionKeys() { List<BusinessObjectDefinitionKey> keys = new ArrayList<>(); keys.add(new BusinessObjectDefinitionKey(AbstractDaoTest.NAMESPACE, AbstractDaoTest.BDEF_NAME_2)); keys.add(new BusinessObjectDefinitionKey(AbstractDaoTest.NAMESPACE_2, AbstractDaoTest.BDEF_NAME_2)); keys.add(new BusinessObjectDefinitionKey(AbstractDaoTest.NAMESPACE, AbstractDaoTest.BDEF_NAME)); keys.add(new BusinessObjectDefinitionKey(AbstractDaoTest.NAMESPACE_2, AbstractDaoTest.BDEF_NAME)); return keys; } }