Search in sources :

Example 1 with Tag

use of org.finra.herd.model.api.xml.Tag in project herd by FINRAOS.

the class TagServiceImpl method getTags.

@Override
public TagListResponse getTags(String tagTypeCode, String tagCode) {
    // Validate and trim the tag type code.
    String tagTypeCodeLocal = alternateKeyHelper.validateStringParameter("tag type code", tagTypeCode);
    String cleanTagCode = tagCode;
    // Retrieve and ensure that a tag type exists for the specified tag type code.
    tagTypeDaoHelper.getTagTypeEntity(new TagTypeKey(tagTypeCodeLocal));
    // Get the list of tag keys.
    TagListResponse response = new TagListResponse();
    // getTag method will validate the requested tag exists
    if (tagCode != null) {
        cleanTagCode = alternateKeyHelper.validateStringParameter("tag code", tagCode);
        TagKey tagKey = new TagKey(tagTypeCodeLocal, cleanTagCode);
        Tag tag = getTag(tagKey);
        response.setTagKey(tag.getTagKey());
        response.setParentTagKey(tag.getParentTagKey());
    }
    List<TagChild> tagChildren = tagDao.getTagsByTagTypeAndParentTagCode(tagTypeCodeLocal, cleanTagCode);
    response.setTagChildren(tagChildren);
    return response;
}
Also used : TagChild(org.finra.herd.model.api.xml.TagChild) TagListResponse(org.finra.herd.model.api.xml.TagListResponse) TagTypeKey(org.finra.herd.model.api.xml.TagTypeKey) TagKey(org.finra.herd.model.api.xml.TagKey) Tag(org.finra.herd.model.api.xml.Tag)

Example 2 with Tag

use of org.finra.herd.model.api.xml.Tag in project herd by FINRAOS.

the class TagServiceImpl method createTagFromEntity.

/**
 * Creates the tag from the persisted entity.
 *
 * @param tagEntity the tag entity
 * @param includeId specifies to include the display name field
 * @param includeDisplayName specifies to include the display name field
 * @param includeSearchScoreMultiplier specifies to include the search score multiplier
 * @param includeDescription specifies to include the description field
 * @param includeUserId specifies to include the user id of the user who created this tag
 * @param includeLastUpdatedByUserId specifies to include the user id of the user who last updated this tag
 * @param includeUpdatedTime specifies to include the timestamp of when this tag is last updated
 * @param includeParentTagKey specifies to include the parent tag key field
 * @param includeHasChildren specifies to include the hasChildren field
 *
 * @return the tag
 */
private Tag createTagFromEntity(TagEntity tagEntity, boolean includeId, boolean includeDisplayName, boolean includeSearchScoreMultiplier, boolean includeDescription, boolean includeUserId, boolean includeLastUpdatedByUserId, boolean includeUpdatedTime, boolean includeParentTagKey, boolean includeHasChildren) {
    Tag tag = new Tag();
    if (includeId) {
        tag.setId(tagEntity.getId());
    }
    tag.setTagKey(new TagKey(tagEntity.getTagType().getCode(), tagEntity.getTagCode()));
    if (includeDisplayName) {
        tag.setDisplayName(tagEntity.getDisplayName());
    }
    if (includeSearchScoreMultiplier) {
        tag.setSearchScoreMultiplier(tagEntity.getSearchScoreMultiplier());
    }
    if (includeDescription) {
        tag.setDescription(tagEntity.getDescription());
    }
    if (includeUserId) {
        tag.setUserId(tagEntity.getCreatedBy());
    }
    if (includeLastUpdatedByUserId) {
        tag.setLastUpdatedByUserId(tagEntity.getUpdatedBy());
    }
    if (includeUpdatedTime) {
        tag.setUpdatedTime(HerdDateUtils.getXMLGregorianCalendarValue(tagEntity.getUpdatedOn()));
    }
    if (includeParentTagKey) {
        TagEntity parentTagEntity = tagEntity.getParentTagEntity();
        if (parentTagEntity != null) {
            tag.setParentTagKey(new TagKey(parentTagEntity.getTagType().getCode(), parentTagEntity.getTagCode()));
        }
    }
    if (includeHasChildren) {
        tag.setHasChildren(!tagEntity.getChildrenTagEntities().isEmpty());
    }
    return tag;
}
Also used : TagEntity(org.finra.herd.model.jpa.TagEntity) TagKey(org.finra.herd.model.api.xml.TagKey) Tag(org.finra.herd.model.api.xml.Tag)

Example 3 with Tag

use of org.finra.herd.model.api.xml.Tag in project herd by FINRAOS.

the class TagServiceImpl method indexValidateTagsList.

/**
 * A helper method that will validate a list of tags
 *
 * @param tagEntityList the list of tags that will be validated
 *
 * @return true all of the tags are valid in the index
 */
private boolean indexValidateTagsList(final List<TagEntity> tagEntityList) {
    final String indexName = SearchIndexTypeEntity.SearchIndexTypes.TAG.name().toLowerCase();
    final String documentType = configurationHelper.getProperty(ConfigurationValue.ELASTICSEARCH_BDEF_DOCUMENT_TYPE, String.class);
    Predicate<TagEntity> validInIndexPredicate = tagEntity -> {
        // Fetch Join with .size()
        tagEntity.getChildrenTagEntities().size();
        // Convert the tag entity to a JSON string
        final String jsonString = tagHelper.safeObjectMapperWriteValueAsString(tagEntity);
        return this.indexFunctionsDao.isValidDocumentIndex(indexName, documentType, tagEntity.getId().toString(), jsonString);
    // searchFunctions.getIsValidFunction().test(indexName, documentType, tagEntity.getId().toString(), jsonString);
    };
    boolean isValid = true;
    for (TagEntity tagEntity : tagEntityList) {
        if (!validInIndexPredicate.test(tagEntity)) {
            isValid = false;
        }
    }
    return isValid;
}
Also used : SEARCH_INDEX_UPDATE_TYPE_CREATE(org.finra.herd.model.dto.SearchIndexUpdateDto.SEARCH_INDEX_UPDATE_TYPE_CREATE) LoggerFactory(org.slf4j.LoggerFactory) TagTypeDaoHelper(org.finra.herd.service.helper.TagTypeDaoHelper) Autowired(org.springframework.beans.factory.annotation.Autowired) TagCreateRequest(org.finra.herd.model.api.xml.TagCreateRequest) StringUtils(org.apache.commons.lang3.StringUtils) SearchIndexUpdateDto(org.finra.herd.model.dto.SearchIndexUpdateDto) Tag(org.finra.herd.model.api.xml.Tag) BigDecimal(java.math.BigDecimal) Future(java.util.concurrent.Future) TagSearchKey(org.finra.herd.model.api.xml.TagSearchKey) Map(java.util.Map) BusinessObjectDefinitionEntity(org.finra.herd.model.jpa.BusinessObjectDefinitionEntity) AsyncResult(org.springframework.scheduling.annotation.AsyncResult) TagTypeEntity(org.finra.herd.model.jpa.TagTypeEntity) ConfigurationValue(org.finra.herd.model.dto.ConfigurationValue) ImmutableSet(com.google.common.collect.ImmutableSet) Predicate(java.util.function.Predicate) TagUpdateRequest(org.finra.herd.model.api.xml.TagUpdateRequest) Set(java.util.Set) List(java.util.List) ConfigurationHelper(org.finra.herd.core.helper.ConfigurationHelper) TagListResponse(org.finra.herd.model.api.xml.TagListResponse) TagTypeKey(org.finra.herd.model.api.xml.TagTypeKey) IndexFunctionsDao(org.finra.herd.dao.IndexFunctionsDao) Async(org.springframework.scheduling.annotation.Async) TagSearchFilter(org.finra.herd.model.api.xml.TagSearchFilter) TagHelper(org.finra.herd.service.helper.TagHelper) TagSearchRequest(org.finra.herd.model.api.xml.TagSearchRequest) HashMap(java.util.HashMap) BooleanUtils(org.apache.commons.lang3.BooleanUtils) DaoSpringModuleConfig(org.finra.herd.dao.config.DaoSpringModuleConfig) CollectionUtils(org.apache.commons.collections4.CollectionUtils) SearchIndexUpdateHelper(org.finra.herd.service.helper.SearchIndexUpdateHelper) ArrayList(java.util.ArrayList) AlreadyExistsException(org.finra.herd.model.AlreadyExistsException) TagSearchResponse(org.finra.herd.model.api.xml.TagSearchResponse) SEARCH_INDEX_UPDATE_TYPE_UPDATE(org.finra.herd.model.dto.SearchIndexUpdateDto.SEARCH_INDEX_UPDATE_TYPE_UPDATE) Service(org.springframework.stereotype.Service) TagChild(org.finra.herd.model.api.xml.TagChild) TagKey(org.finra.herd.model.api.xml.TagKey) TagDao(org.finra.herd.dao.TagDao) Logger(org.slf4j.Logger) AlternateKeyHelper(org.finra.herd.service.helper.AlternateKeyHelper) SearchableService(org.finra.herd.service.SearchableService) HerdDateUtils(org.finra.herd.core.HerdDateUtils) TagEntity(org.finra.herd.model.jpa.TagEntity) BusinessObjectDefinitionDao(org.finra.herd.dao.BusinessObjectDefinitionDao) TagService(org.finra.herd.service.TagService) SEARCH_INDEX_UPDATE_TYPE_DELETE(org.finra.herd.model.dto.SearchIndexUpdateDto.SEARCH_INDEX_UPDATE_TYPE_DELETE) TagDaoHelper(org.finra.herd.service.helper.TagDaoHelper) Collections(java.util.Collections) SearchIndexTypeEntity(org.finra.herd.model.jpa.SearchIndexTypeEntity) Transactional(org.springframework.transaction.annotation.Transactional) Assert(org.springframework.util.Assert) TagEntity(org.finra.herd.model.jpa.TagEntity)

Example 4 with Tag

use of org.finra.herd.model.api.xml.Tag in project herd by FINRAOS.

the class TagServiceImpl method searchTags.

@Override
public TagSearchResponse searchTags(TagSearchRequest request, Set<String> fields) {
    // Validate and trim the request parameters.
    validateTagSearchRequest(request);
    // Validate and trim the search response fields.
    validateSearchResponseFields(fields);
    // Prepare the result list.
    List<TagEntity> tagEntities = new ArrayList<>();
    // If search key is specified, use it to retrieve the tags.
    if (CollectionUtils.isNotEmpty(request.getTagSearchFilters()) && request.getTagSearchFilters().get(0) != null) {
        // Get the tag search key.
        TagSearchKey tagSearchKey = request.getTagSearchFilters().get(0).getTagSearchKeys().get(0);
        // Retrieve and ensure that a tag type exists for the specified tag type code.
        TagTypeEntity tagTypeEntity = tagTypeDaoHelper.getTagTypeEntity(new TagTypeKey(tagSearchKey.getTagTypeCode()));
        // Retrieve the tags.
        tagEntities.addAll(tagDao.getTagsByTagTypeEntityAndParentTagCode(tagTypeEntity, tagSearchKey.getParentTagCode(), tagSearchKey.isIsParentTagNull()));
    } else // The search key is not specified, so select all tags registered in the system.
    {
        // Retrieve the tags.
        tagEntities.addAll(tagDao.getTags());
    }
    // Build the list of tags.
    List<Tag> tags = new ArrayList<>();
    for (TagEntity tagEntity : tagEntities) {
        tags.add(createTagFromEntity(tagEntity, false, fields.contains(DISPLAY_NAME_FIELD), fields.contains(SEARCH_SCORE_MULTIPLIER_FIELD), fields.contains(DESCRIPTION_FIELD), false, false, false, fields.contains(PARENT_TAG_KEY_FIELD), fields.contains(HAS_CHILDREN_FIELD)));
    }
    // Build and return the tag search response.
    return new TagSearchResponse(tags);
}
Also used : TagSearchKey(org.finra.herd.model.api.xml.TagSearchKey) TagSearchResponse(org.finra.herd.model.api.xml.TagSearchResponse) TagTypeKey(org.finra.herd.model.api.xml.TagTypeKey) TagEntity(org.finra.herd.model.jpa.TagEntity) ArrayList(java.util.ArrayList) TagTypeEntity(org.finra.herd.model.jpa.TagTypeEntity) Tag(org.finra.herd.model.api.xml.Tag)

Example 5 with Tag

use of org.finra.herd.model.api.xml.Tag in project herd by FINRAOS.

the class TagRestControllerTest method getNewTag.

private Tag getNewTag(TagKey tagKey) {
    Calendar cal = Calendar.getInstance();
    Date createdTime = cal.getTime();
    String createdBy = "some test";
    String updatedBy = "some test 2";
    Tag tag = new Tag(ID, tagKey, TAG_DISPLAY_NAME, TAG_SEARCH_SCORE_MULTIPLIER, TAG_DESCRIPTION, createdBy, updatedBy, HerdDateUtils.getXMLGregorianCalendarValue(createdTime), NO_PARENT_TAG_KEY, NO_TAG_HAS_CHILDREN_FLAG);
    return tag;
}
Also used : Calendar(java.util.Calendar) Tag(org.finra.herd.model.api.xml.Tag) Date(java.util.Date)

Aggregations

Tag (org.finra.herd.model.api.xml.Tag)41 TagKey (org.finra.herd.model.api.xml.TagKey)39 Test (org.junit.Test)36 TagEntity (org.finra.herd.model.jpa.TagEntity)28 TagUpdateRequest (org.finra.herd.model.api.xml.TagUpdateRequest)11 TagCreateRequest (org.finra.herd.model.api.xml.TagCreateRequest)10 TagSearchKey (org.finra.herd.model.api.xml.TagSearchKey)9 TagSearchResponse (org.finra.herd.model.api.xml.TagSearchResponse)9 TagSearchFilter (org.finra.herd.model.api.xml.TagSearchFilter)8 TagSearchRequest (org.finra.herd.model.api.xml.TagSearchRequest)8 ArrayList (java.util.ArrayList)3 TagTypeKey (org.finra.herd.model.api.xml.TagTypeKey)3 TagChild (org.finra.herd.model.api.xml.TagChild)2 TagListResponse (org.finra.herd.model.api.xml.TagListResponse)2 TagTypeEntity (org.finra.herd.model.jpa.TagTypeEntity)2 ImmutableSet (com.google.common.collect.ImmutableSet)1 BigDecimal (java.math.BigDecimal)1 Calendar (java.util.Calendar)1 Collections (java.util.Collections)1 Date (java.util.Date)1