@Override public TagType createTagType(TagTypeCreateRequest request) { // Validate and trim the request parameters. validateTagTypeCreateRequest(request); // Validate the tag type does not already exist in the database. TagTypeEntity tagTypeEntity = tagTypeDao.getTagTypeByKey(request.getTagTypeKey()); if (tagTypeEntity != null) { throw new AlreadyExistsException( String.format( "Unable to create tag type with code \"%s\" because it already exists.", request.getTagTypeKey().getTagTypeCode())); } // Validate the display name does not already exist in the database tagTypeDaoHelper.assertTagTypeDisplayNameDoesNotExist(request.getDisplayName()); // Create and persist a new tag type entity from the request information. tagTypeEntity = createTagTypeEntity( request.getTagTypeKey().getTagTypeCode(), request.getDisplayName(), request.getTagTypeOrder()); // Create and return the tag type object from the persisted entity. return createTagTypeFromEntity(tagTypeEntity); }
/** * Update and persist the tag type per specified update request. * * @param tagTypeEntity the tag type entity * @param request the tag type update request */ private void updateTagTypeEntity(TagTypeEntity tagTypeEntity, TagTypeUpdateRequest request) { tagTypeEntity.setDisplayName(request.getDisplayName()); tagTypeEntity.setOrderNumber(request.getTagTypeOrder()); // Persist and refresh the entity. tagTypeDao.saveAndRefresh(tagTypeEntity); }
/** * Creates and persists a new tag type entity. * * @param tagTypeCode the tag type code * @param displayName the display name * @param tagTypeOrder the tag type order number * @return the newly created tag type entity */ private TagTypeEntity createTagTypeEntity( String tagTypeCode, String displayName, int tagTypeOrder) { TagTypeEntity tagTypeEntity = new TagTypeEntity(); tagTypeEntity.setCode(tagTypeCode); tagTypeEntity.setDisplayName(displayName); tagTypeEntity.setOrderNumber(tagTypeOrder); return tagTypeDao.saveAndRefresh(tagTypeEntity); }
@Override public TagType deleteTagType(TagTypeKey tagTypeKey) { // Perform validation and trim. tagTypeHelper.validateTagTypeKey(tagTypeKey); // Retrieve and ensure that a tag type already exists with the specified key. TagTypeEntity tagTypeEntity = tagTypeDaoHelper.getTagTypeEntity(tagTypeKey); // Delete the tag type. tagTypeDao.delete(tagTypeEntity); // Create and return the tag type object from the deleted entity. return createTagTypeFromEntity(tagTypeEntity); }
@Override public TagTypeSearchResponse searchTagTypes(TagTypeSearchRequest request, Set<String> fields) { // Validate the request. Assert.notNull(request, "A tag type search request must be specified."); // Validate and trim the search response fields. validateSearchResponseFields(fields); // Retrieve the tag types. List<TagTypeEntity> tagTypeEntities = tagTypeDao.getTagTypes(); // Build the list of tag types. List<TagType> tagTypes = new ArrayList<>(); for (TagTypeEntity tagTypeEntity : tagTypeEntities) { tagTypes.add( createTagTypeFromEntity( tagTypeEntity, fields.contains(DISPLAY_NAME_FIELD), fields.contains(TAG_TYPE_ORDER_FIELD))); } // Build and return the search response. return new TagTypeSearchResponse(tagTypes); }
@Override public TagTypeKeys getTagTypes() { return new TagTypeKeys(tagTypeDao.getTagTypeKeys()); }