Example usage for org.apache.commons.collections4 CollectionUtils isEmpty

List of usage examples for org.apache.commons.collections4 CollectionUtils isEmpty

Introduction

In this page you can find the example usage for org.apache.commons.collections4 CollectionUtils isEmpty.

Prototype

public static boolean isEmpty(final Collection<?> coll) 

Source Link

Document

Null-safe check if the specified collection is empty.

Usage

From source file:org.finra.herd.service.impl.BusinessObjectDataInitiateDestroyHelperServiceImpl.java

/**
 * Retrieves and validates storage unit for the specified business object data. The method makes sure that there is one and only one S3 storage unit.
 *
 * @param businessObjectDataEntity the business object data entity
 * @param businessObjectDataKey the business object data key
 *
 * @return the storage unit entity//from   ww  w.j  av  a2 s .com
 */
StorageUnitEntity getAndValidateStorageUnit(BusinessObjectDataEntity businessObjectDataEntity,
        BusinessObjectDataKey businessObjectDataKey) {
    // Retrieve all S3 storage units for this business object data.
    List<StorageUnitEntity> s3StorageUnitEntities = storageUnitDao
            .getStorageUnitsByStoragePlatformAndBusinessObjectData(StoragePlatformEntity.S3,
                    businessObjectDataEntity);

    // Validate that business object data has at least one S3 storage unit.
    if (CollectionUtils.isEmpty(s3StorageUnitEntities)) {
        throw new IllegalArgumentException(
                String.format("Business object data has no S3 storage unit. Business object data: {%s}",
                        businessObjectDataHelper.businessObjectDataKeyToString(businessObjectDataKey)));
    }

    // Validate that this business object data has no multiple S3 storage units.
    if (CollectionUtils.size(s3StorageUnitEntities) > 1) {
        throw new IllegalArgumentException(String.format(
                "Business object data has multiple (%s) %s storage units. Business object data: {%s}",
                s3StorageUnitEntities.size(), StoragePlatformEntity.S3,
                businessObjectDataHelper.businessObjectDataKeyToString(businessObjectDataKey)));
    }

    // Get the S3 storage unit.
    StorageUnitEntity storageUnitEntity = s3StorageUnitEntities.get(0);

    // Get the storage unit status code.
    String storageUnitStatus = storageUnitEntity.getStatus().getCode();

    // Validate storage unit status.
    if (!BusinessObjectDataInitiateDestroyHelperServiceImpl.SUPPORTED_STORAGE_UNIT_STATUSES
            .contains(storageUnitStatus)) {
        throw new IllegalArgumentException(String.format(
                "Storage unit status \"%s\" is not supported by the business object data destroy feature. Storage: {%s}, business object data: {%s}",
                storageUnitStatus, storageUnitEntity.getStorage().getName(),
                businessObjectDataHelper.businessObjectDataKeyToString(businessObjectDataKey)));
    }

    return storageUnitEntity;
}

From source file:org.finra.herd.service.impl.BusinessObjectDataInitiateRestoreHelperServiceImpl.java

/**
 * Retrieves storage unit for the business object data. The method validates that there one and only one storage unit for this business object data in
 * "ARCHIVED" state./*from   w w w  . j  a  v  a  2  s .  c o  m*/
 *
 * @param businessObjectDataEntity the business object data entity
 *
 * @return the archived storage unit entity
 */
protected StorageUnitEntity getStorageUnit(BusinessObjectDataEntity businessObjectDataEntity) {
    // Retrieve all S3 storage units for this business object data.
    List<StorageUnitEntity> s3StorageUnitEntities = storageUnitDao
            .getStorageUnitsByStoragePlatformAndBusinessObjectData(StoragePlatformEntity.S3,
                    businessObjectDataEntity);

    // Validate that business object data has at least one S3 storage unit.
    if (CollectionUtils.isEmpty(s3StorageUnitEntities)) {
        throw new IllegalArgumentException(String.format(
                "Business object data has no S3 storage unit. Business object data: {%s}",
                businessObjectDataHelper.businessObjectDataEntityAltKeyToString(businessObjectDataEntity)));
    }

    // Validate that this business object data has no multiple S3 storage units.
    if (CollectionUtils.size(s3StorageUnitEntities) > 1) {
        throw new IllegalArgumentException(String.format(
                "Business object data has multiple (%s) %s storage units. Business object data: {%s}",
                s3StorageUnitEntities.size(), StoragePlatformEntity.S3,
                businessObjectDataHelper.businessObjectDataEntityAltKeyToString(businessObjectDataEntity)));
    }

    // Get the S3 storage unit.
    StorageUnitEntity storageUnitEntity = s3StorageUnitEntities.get(0);

    // Get the storage unit status code.
    String storageUnitStatus = storageUnitEntity.getStatus().getCode();

    // Validate that this business object data has its S3 storage unit in "ARCHIVED" state.
    if (!StorageUnitStatusEntity.ARCHIVED.equals(storageUnitStatus)) {
        // Get the storage name.
        String storageName = storageUnitEntity.getStorage().getName();

        // Fail with a custom error message if the S3 storage unit is already enabled.
        if (StorageUnitStatusEntity.ENABLED.equals(storageUnitStatus)) {
            throw new IllegalArgumentException(String.format(
                    "Business object data is already available in \"%s\" S3 storage. Business object data: {%s}",
                    storageName, businessObjectDataHelper.businessObjectDataEntityAltKeyToString(
                            storageUnitEntity.getBusinessObjectData())));
        }
        // Fail with a custom error message if this business object data is already marked as being restored.
        else if (StorageUnitStatusEntity.RESTORING.equals(storageUnitStatus)) {
            throw new IllegalArgumentException(String.format(
                    "Business object data is already being restored in \"%s\" S3 storage. Business object data: {%s}",
                    storageName, businessObjectDataHelper.businessObjectDataEntityAltKeyToString(
                            storageUnitEntity.getBusinessObjectData())));
        }
        // Else, fail and report the actual S3 storage unit status.
        else {
            throw new IllegalArgumentException(String.format("Business object data is not archived. "
                    + "S3 storage unit in \"%s\" storage must have \"%s\" status, but it actually has \"%s\" status. Business object data: {%s}",
                    storageName, StorageUnitStatusEntity.ARCHIVED, storageUnitStatus,
                    businessObjectDataHelper.businessObjectDataEntityAltKeyToString(
                            storageUnitEntity.getBusinessObjectData())));
        }
    }

    return storageUnitEntity;
}

From source file:org.finra.herd.service.impl.BusinessObjectDataServiceImpl.java

/**
 * Retrieves the DDL to initialize the specified type of the database system to perform queries for a range of requested business object data in the
 * specified storage.//from w w  w  .  ja v a  2s .c o  m
 *
 * @param request the business object data DDL request
 * @param skipRequestValidation specifies whether to skip the request validation and trimming
 *
 * @return the business object data DDL information
 */
BusinessObjectDataDdl generateBusinessObjectDataDdlImpl(BusinessObjectDataDdlRequest request,
        boolean skipRequestValidation) {
    // Perform the validation.
    if (!skipRequestValidation) {
        validateBusinessObjectDataDdlRequest(request);
    }

    // Get the business object format entity for the specified parameters and make sure it exists.
    // Please note that when format version is not specified, we should get back the latest format version.
    BusinessObjectFormatEntity businessObjectFormatEntity = businessObjectFormatDaoHelper
            .getBusinessObjectFormatEntity(new BusinessObjectFormatKey(request.getNamespace(),
                    request.getBusinessObjectDefinitionName(), request.getBusinessObjectFormatUsage(),
                    request.getBusinessObjectFormatFileType(), request.getBusinessObjectFormatVersion()));

    // Validate that format has schema information.
    Assert.notEmpty(businessObjectFormatEntity.getSchemaColumns(), String.format(
            "Business object format with namespace \"%s\", business object definition name \"%s\", format usage \"%s\", format file type \"%s\","
                    + " and format version \"%s\" doesn't have schema information.",
            businessObjectFormatEntity.getBusinessObjectDefinition().getNamespace().getCode(),
            businessObjectFormatEntity.getBusinessObjectDefinition().getName(),
            businessObjectFormatEntity.getUsage(), businessObjectFormatEntity.getFileType().getCode(),
            businessObjectFormatEntity.getBusinessObjectFormatVersion()));

    // If it was specified, retrieve the custom DDL and ensure it exists.
    CustomDdlEntity customDdlEntity = null;
    if (StringUtils.isNotBlank(request.getCustomDdlName())) {
        CustomDdlKey customDdlKey = new CustomDdlKey(
                businessObjectFormatEntity.getBusinessObjectDefinition().getNamespace().getCode(),
                businessObjectFormatEntity.getBusinessObjectDefinition().getName(),
                businessObjectFormatEntity.getUsage(), businessObjectFormatEntity.getFileType().getCode(),
                businessObjectFormatEntity.getBusinessObjectFormatVersion(), request.getCustomDdlName());
        customDdlEntity = customDdlDaoHelper.getCustomDdlEntity(customDdlKey);
    }

    // Build a list of storage names specified in the request.
    List<String> storageNames = new ArrayList<>();
    if (StringUtils.isNotBlank(request.getStorageName())) {
        storageNames.add(request.getStorageName());
    }
    if (!CollectionUtils.isEmpty(request.getStorageNames())) {
        storageNames.addAll(request.getStorageNames());
    }

    // Validate that storage entities, specified in the request, exist, of a proper storage platform type, and have S3 bucket name configured.
    Map<String, StorageEntity> storageEntities = new HashMap<>();
    Map<String, String> s3BucketNames = new HashMap<>();
    for (String storageName : storageNames) {
        StorageEntity storageEntity = storageDaoHelper.getStorageEntity(storageName);

        // Only S3 storage platform is currently supported.
        Assert.isTrue(storageEntity.getStoragePlatform().getName().equals(StoragePlatformEntity.S3),
                String.format("Cannot generate DDL for \"%s\" storage platform.",
                        storageEntity.getStoragePlatform().getName()));

        // Validate that storage have S3 bucket name configured. Please note that since S3 bucket name attribute value is required we pass a "true" flag.
        String s3BucketName = storageHelper.getStorageAttributeValueByName(
                configurationHelper.getProperty(ConfigurationValue.S3_ATTRIBUTE_NAME_BUCKET_NAME),
                storageEntity, true);

        // Memorize retrieved values for faster processing.
        String upperCaseStorageName = storageName.toUpperCase();
        storageEntities.put(upperCaseStorageName, storageEntity);
        s3BucketNames.put(upperCaseStorageName, s3BucketName);
    }

    // Create and initialize a business object data DDL object instance.
    BusinessObjectDataDdl businessObjectDataDdl = createBusinessObjectDataDdl(request);
    businessObjectDataDdl.setDdl(
            ddlGeneratorFactory.getDdlGenerator(request.getOutputFormat()).generateCreateTableDdl(request,
                    businessObjectFormatEntity, customDdlEntity, storageNames, storageEntities, s3BucketNames));

    return businessObjectDataDdl;
}

From source file:org.finra.herd.service.impl.BusinessObjectDataServiceImpl.java

/**
 * Updates the list of not-available statuses by adding business object data status instances created from discovered "non-available" registered
 * sub-partitions as per list of "matched" partition filters to the specified list of not-available statuses.
 *
 * @param notAvailableStatuses the list of not-available statuses to be updated
 * @param businessObjectFormatKey the business object format key
 * @param matchedAvailablePartitionFilters the list of "matched" partition filters
 * @param availablePartitions the list of already discovered "available" partitions, where each partition consists of primary and optional sub-partition
 * values/*ww w.ja v a  2s .  com*/
 * @param storageNames the list of storage names
 */
private void addNotAvailableBusinessObjectDataStatuses(List<BusinessObjectDataStatus> notAvailableStatuses,
        BusinessObjectFormatKey businessObjectFormatKey, List<List<String>> matchedAvailablePartitionFilters,
        List<List<String>> availablePartitions, List<String> storageNames) {
    // Now try to retrieve latest business object data per list of matched filters regardless of business object data and/or storage unit statuses.
    // This is done to include all registered sub-partitions in the response.
    // Business object data availability works across all storage platform types, so the storage platform type is not specified in the herdDao call.
    // We want to select any existing storage units regardless of their status, so we pass "false" for selectOnlyAvailableStorageUnits parameter.
    List<StorageUnitAvailabilityDto> matchedNotAvailableStorageUnitEntities = storageUnitDao
            .getStorageUnitsByPartitionFilters(businessObjectFormatKey, matchedAvailablePartitionFilters, null,
                    null, storageNames, null, null, false);

    // Exclude all storage units with business object data having "DELETED" status.
    matchedNotAvailableStorageUnitEntities = storageUnitHelper.excludeBusinessObjectDataStatus(
            matchedNotAvailableStorageUnitEntities, BusinessObjectDataStatusEntity.DELETED);

    // Exclude all already discovered "available" partitions. Please note that, since we got here, the list of matched partitions can not be empty.
    matchedNotAvailableStorageUnitEntities = storageUnitHelper
            .excludePartitions(matchedNotAvailableStorageUnitEntities, availablePartitions);

    // Keep processing the matched "not available" storage units only when the list is not empty.
    if (!CollectionUtils.isEmpty(matchedNotAvailableStorageUnitEntities)) {
        // Populate the "not available" statuses with all found "not available" registered sub-partitions.
        addNotAvailableBusinessObjectDataStatuses(notAvailableStatuses, matchedNotAvailableStorageUnitEntities);
    }
}

From source file:org.finra.herd.service.impl.BusinessObjectDataServiceImpl.java

/**
 * Performs a search and returns a list of business object data key values and relative statuses for a range of requested business object data.
 *
 * @param request the business object data availability request
 * @param skipRequestValidation specifies whether to skip the request validation and trimming
 *
 * @return the business object data availability information
 *//*from   w ww .jav a2 s. c o  m*/
private BusinessObjectDataAvailability checkBusinessObjectDataAvailabilityImpl(
        BusinessObjectDataAvailabilityRequest request, boolean skipRequestValidation) {
    // Perform the validation.
    if (!skipRequestValidation) {
        validateBusinessObjectDataAvailabilityRequest(request);
    }

    // Get business object format key from the request.
    BusinessObjectFormatKey businessObjectFormatKey = getBusinessObjectFormatKey(request);

    // Make sure that specified business object format exists.
    BusinessObjectFormatEntity businessObjectFormatEntity = businessObjectFormatDaoHelper
            .getBusinessObjectFormatEntity(businessObjectFormatKey);

    // Get the list of storage names from the request and validate that specified storage entities exist.
    List<String> storageNames = getStorageNames(request);
    storageDaoHelper.validateStorageExistence(storageNames);

    // Build partition filters based on the specified partition value filters.
    // Business object data availability works across all storage platform types, so the storage platform type is not specified in the call.
    List<List<String>> partitionFilters = businessObjectDataDaoHelper.buildPartitionFilters(
            request.getPartitionValueFilters(), request.getPartitionValueFilter(), businessObjectFormatKey,
            request.getBusinessObjectDataVersion(), storageNames, null, null, businessObjectFormatEntity);

    // Retrieve a list of storage unit availability DTOs for the specified partition values. The list will be sorted by partition value that is identified
    // by partition column position. If a business object data version isn't specified, the latest VALID business object data version is returned.
    // Business object data availability works across all storage platform types, so the storage platform type is not specified in the herdDao call.
    // We want to select only "available" storage units, so we pass "true" for selectOnlyAvailableStorageUnits parameter.
    List<StorageUnitAvailabilityDto> availableStorageUnitAvailabilityDtos = storageUnitDao
            .getStorageUnitsByPartitionFilters(businessObjectFormatKey, partitionFilters,
                    request.getBusinessObjectDataVersion(), BusinessObjectDataStatusEntity.VALID, storageNames,
                    null, null, true);

    // Create business object data availability object instance and initialise it with request field values.
    BusinessObjectDataAvailability businessObjectDataAvailability = createBusinessObjectDataAvailability(
            request);

    // Create "available" and "not available" business object data status lists.
    List<BusinessObjectDataStatus> availableStatuses = new ArrayList<>();
    businessObjectDataAvailability.setAvailableStatuses(availableStatuses);
    List<BusinessObjectDataStatus> notAvailableStatuses = new ArrayList<>();
    businessObjectDataAvailability.setNotAvailableStatuses(notAvailableStatuses);

    // Build a list of matched available partition filters and populate the available statuses list. Please note that each request partition filter
    // might result in multiple available business object data entities. If storage names are not specified, fail on "duplicate" business object data
    // (same business object data instance registered with multiple storages). Otherwise, remove possible "duplicates".
    List<List<String>> matchedAvailablePartitionFilters = new ArrayList<>();
    List<List<String>> availablePartitions = new ArrayList<>();
    Map<BusinessObjectDataKey, StorageUnitAvailabilityDto> businessObjectDataToStorageUnitMap = new HashMap<>();
    for (StorageUnitAvailabilityDto storageUnitAvailabilityDto : availableStorageUnitAvailabilityDtos) {
        BusinessObjectDataKey businessObjectDataKey = storageUnitAvailabilityDto.getBusinessObjectDataKey();

        if (businessObjectDataToStorageUnitMap.containsKey(businessObjectDataKey)) {
            // If storage names are not specified, fail on a business object data registered in multiple storage. Otherwise, ignore that storage unit.
            if (CollectionUtils.isEmpty(storageNames)) {
                throw new IllegalArgumentException(String.format(
                        "Found business object data registered in more than one storage. "
                                + "Please specify storage(s) in the request to resolve this. Business object data {%s}",
                        businessObjectDataHelper.businessObjectDataKeyToString(businessObjectDataKey)));
            }
        } else {
            matchedAvailablePartitionFilters.add(businessObjectDataHelper
                    .getPartitionFilter(businessObjectDataKey, partitionFilters.get(0)));
            availablePartitions
                    .add(businessObjectDataHelper.getPrimaryAndSubPartitionValues(businessObjectDataKey));
            availableStatuses.add(createAvailableBusinessObjectDataStatus(storageUnitAvailabilityDto));
            businessObjectDataToStorageUnitMap.put(businessObjectDataKey, storageUnitAvailabilityDto);
        }
    }

    // Check if request specifies to include all registered sub-partitions in the response.
    boolean includeAllRegisteredSubPartitions = request.getBusinessObjectDataVersion() == null
            && BooleanUtils.isTrue(request.isIncludeAllRegisteredSubPartitions());

    // If request specifies to include all registered sub-partitions in the response, query all
    // matched partition filters one more time to discover any non-available registered sub-partitions.
    if (includeAllRegisteredSubPartitions && !CollectionUtils.isEmpty(matchedAvailablePartitionFilters)) {
        addNotAvailableBusinessObjectDataStatuses(notAvailableStatuses, businessObjectFormatKey,
                matchedAvailablePartitionFilters, availablePartitions, storageNames);
    }

    // Get a list of unmatched partition filters.
    List<List<String>> unmatchedPartitionFilters = new ArrayList<>(partitionFilters);
    unmatchedPartitionFilters.removeAll(matchedAvailablePartitionFilters);

    // We still need to try to retrieve business object data per list of unmatched filters regardless of business object data and/or storage unit statuses.
    // This is done to populate not-available statuses with legitimate reasons.
    // Business object data availability works across all storage platform types, so the storage platform type is not specified in the herdDao call.
    // We want to select any existing storage units regardless of their status, so we pass "false" for selectOnlyAvailableStorageUnits parameter.
    List<StorageUnitAvailabilityDto> notAvailableStorageUnitAvailabilityDtos = storageUnitDao
            .getStorageUnitsByPartitionFilters(businessObjectFormatKey, unmatchedPartitionFilters,
                    request.getBusinessObjectDataVersion(), null, storageNames, null, null, false);

    // Populate the not-available statuses list.
    addNotAvailableBusinessObjectDataStatuses(notAvailableStatuses, notAvailableStorageUnitAvailabilityDtos);

    // Build a list of matched "not-available" partition filters.
    // Please note that each request partition filter might result in multiple available business object data entities.
    List<List<String>> matchedNotAvailablePartitionFilters = getPartitionFilters(
            notAvailableStorageUnitAvailabilityDtos, partitionFilters.get(0));

    // Update the list of unmatched partition filters.
    unmatchedPartitionFilters.removeAll(matchedNotAvailablePartitionFilters);

    // Populate the "not available" statuses per remaining unmatched filters.
    for (List<String> unmatchedPartitionFilter : unmatchedPartitionFilters) {
        notAvailableStatuses.add(createNotAvailableBusinessObjectDataStatus(request, unmatchedPartitionFilter,
                REASON_NOT_REGISTERED));
    }

    return businessObjectDataAvailability;
}

From source file:org.finra.herd.service.impl.BusinessObjectDataServiceImpl.java

/**
 * Gets storage names from the business object data availability request.
 *
 * @param request the business object data availability request
 *
 * @return the list of storage names/*from ww  w. j  av a  2s . co m*/
 */
private List<String> getStorageNames(BusinessObjectDataAvailabilityRequest request) {
    List<String> storageNames = new ArrayList<>();

    if (StringUtils.isNotBlank(request.getStorageName())) {
        storageNames.add(request.getStorageName());
    }

    if (!CollectionUtils.isEmpty(request.getStorageNames())) {
        storageNames.addAll(request.getStorageNames());
    }

    return storageNames;
}

From source file:org.finra.herd.service.impl.BusinessObjectDataServiceImpl.java

/**
 * Validates a business object data availability collection request. This method also trims appropriate request parameters.
 *
 * @param businessObjectDataAvailabilityCollectionRequest the request
 *
 * @throws IllegalArgumentException if any validation errors were found
 */// w w w.  j a v a 2s .c o  m
private void validateBusinessObjectDataAvailabilityCollectionRequest(
        BusinessObjectDataAvailabilityCollectionRequest businessObjectDataAvailabilityCollectionRequest) {
    Assert.notNull(businessObjectDataAvailabilityCollectionRequest,
            "A business object data availability collection request must be specified.");

    Assert.isTrue(
            !CollectionUtils.isEmpty(businessObjectDataAvailabilityCollectionRequest
                    .getBusinessObjectDataAvailabilityRequests()),
            "At least one business object data availability request must be specified.");

    for (BusinessObjectDataAvailabilityRequest request : businessObjectDataAvailabilityCollectionRequest
            .getBusinessObjectDataAvailabilityRequests()) {
        validateBusinessObjectDataAvailabilityRequest(request);
    }
}

From source file:org.finra.herd.service.impl.BusinessObjectDataServiceImpl.java

/**
 * Validates the business object data availability request. This method also trims appropriate request parameters.
 *
 * @param request the request/*from ww w .j a v a 2s. co m*/
 *
 * @throws IllegalArgumentException if any validation errors were found
 */
private void validateBusinessObjectDataAvailabilityRequest(BusinessObjectDataAvailabilityRequest request) {
    Assert.notNull(request, "A business object data availability request must be specified.");

    // Validate and trim the request parameters.
    Assert.hasText(request.getNamespace(), "A namespace must be specified.");
    request.setNamespace(request.getNamespace().trim());

    Assert.hasText(request.getBusinessObjectDefinitionName(),
            "A business object definition name must be specified.");
    request.setBusinessObjectDefinitionName(request.getBusinessObjectDefinitionName().trim());

    Assert.hasText(request.getBusinessObjectFormatUsage(), "A business object format usage must be specified.");
    request.setBusinessObjectFormatUsage(request.getBusinessObjectFormatUsage().trim());

    Assert.hasText(request.getBusinessObjectFormatFileType(),
            "A business object format file type must be specified.");
    request.setBusinessObjectFormatFileType(request.getBusinessObjectFormatFileType().trim());

    // Validate the partition value filters. Allow partition value tokens to be specified.
    businessObjectDataHelper.validatePartitionValueFilters(request.getPartitionValueFilters(),
            request.getPartitionValueFilter(), true);

    // Make sure that request does not contain both a list of storage names and a standalone storage name.
    Assert.isTrue(request.getStorageNames() == null || request.getStorageName() == null,
            "A list of storage names and a standalone storage name cannot be both specified.");

    // Trim the standalone storage name, if specified.
    if (request.getStorageName() != null) {
        Assert.hasText(request.getStorageName(), "A storage name must be specified.");
        request.setStorageName(request.getStorageName().trim());
    }

    // Validate and trim the list of storage names.
    if (!CollectionUtils.isEmpty(request.getStorageNames())) {
        for (int i = 0; i < request.getStorageNames().size(); i++) {
            Assert.hasText(request.getStorageNames().get(i), "A storage name must be specified.");
            request.getStorageNames().set(i, request.getStorageNames().get(i).trim());
        }
    }
}

From source file:org.finra.herd.service.impl.BusinessObjectDataServiceImpl.java

/**
 * Validates a business object data DDL collection request. This method also trims appropriate request parameters.
 *
 * @param businessObjectDataDdlCollectionRequest the request
 *
 * @throws IllegalArgumentException if any validation errors were found
 *///from   w w w . j  a  v a  2s  .  co m
private void validateBusinessObjectDataDdlCollectionRequest(
        BusinessObjectDataDdlCollectionRequest businessObjectDataDdlCollectionRequest) {
    Assert.notNull(businessObjectDataDdlCollectionRequest,
            "A business object data DDL collection request must be specified.");

    Assert.isTrue(
            !CollectionUtils.isEmpty(businessObjectDataDdlCollectionRequest.getBusinessObjectDataDdlRequests()),
            "At least one business object data DDL request must be specified.");

    for (BusinessObjectDataDdlRequest request : businessObjectDataDdlCollectionRequest
            .getBusinessObjectDataDdlRequests()) {
        validateBusinessObjectDataDdlRequest(request);
    }
}

From source file:org.finra.herd.service.impl.BusinessObjectDataServiceImpl.java

/**
 * Validates the business object data DDL request. This method also trims appropriate request parameters.
 *
 * @param request the request/*w  w  w  .  j av  a 2  s .c  om*/
 *
 * @throws IllegalArgumentException if any validation errors were found
 */
private void validateBusinessObjectDataDdlRequest(BusinessObjectDataDdlRequest request) {
    Assert.notNull(request, "A business object data DDL request must be specified.");

    // Validate and trim the request parameters.
    Assert.hasText(request.getNamespace(), "A namespace must be specified.");
    request.setNamespace(request.getNamespace().trim());

    Assert.hasText(request.getBusinessObjectDefinitionName(),
            "A business object definition name must be specified.");
    request.setBusinessObjectDefinitionName(request.getBusinessObjectDefinitionName().trim());

    Assert.hasText(request.getBusinessObjectFormatUsage(), "A business object format usage must be specified.");
    request.setBusinessObjectFormatUsage(request.getBusinessObjectFormatUsage().trim());

    Assert.hasText(request.getBusinessObjectFormatFileType(),
            "A business object format file type must be specified.");
    request.setBusinessObjectFormatFileType(request.getBusinessObjectFormatFileType().trim());

    // Validate the partition value filters. Do not allow partition value tokens to be specified.
    businessObjectDataHelper.validatePartitionValueFilters(request.getPartitionValueFilters(),
            request.getPartitionValueFilter(), false);

    // Make sure that request does not contain both a list of storage names and a standalone storage name.
    Assert.isTrue(request.getStorageNames() == null || request.getStorageName() == null,
            "A list of storage names and a standalone storage name cannot be both specified.");

    // Trim the standalone storage name, if specified.
    if (request.getStorageName() != null) {
        Assert.hasText(request.getStorageName(), "A storage name must be specified.");
        request.setStorageName(request.getStorageName().trim());
    }

    // Validate and trim the list of storage names.
    if (!CollectionUtils.isEmpty(request.getStorageNames())) {
        for (int i = 0; i < request.getStorageNames().size(); i++) {
            Assert.hasText(request.getStorageNames().get(i), "A storage name must be specified.");
            request.getStorageNames().set(i, request.getStorageNames().get(i).trim());
        }
    }

    Assert.notNull(request.getOutputFormat(), "An output format must be specified.");

    Assert.hasText(request.getTableName(), "A table name must be specified.");
    request.setTableName(request.getTableName().trim());

    if (StringUtils.isNotBlank(request.getCustomDdlName())) {
        request.setCustomDdlName(request.getCustomDdlName().trim());
    }
}