use of io.gravitee.repository.management.model.Category in project gravitee-management-rest-api by gravitee-io.
the class CategoryServiceImpl method update.
@Override
public CategoryEntity update(String categoryId, UpdateCategoryEntity categoryEntity) {
try {
LOGGER.debug("Update Category {}", categoryId);
Optional<Category> optCategoryToUpdate = categoryRepository.findById(categoryId);
if (!optCategoryToUpdate.isPresent()) {
throw new CategoryNotFoundException(categoryId);
}
final Category categoryToUpdate = optCategoryToUpdate.get();
Category category = convert(categoryEntity, categoryToUpdate.getEnvironmentId());
// If no new picture and the current picture url is not the default one, keep the current picture
if (categoryEntity.getPicture() == null && categoryEntity.getPictureUrl() != null && categoryEntity.getPictureUrl().indexOf("?hash") > 0) {
category.setPicture(categoryToUpdate.getPicture());
}
final Date updatedAt = new Date();
category.setCreatedAt(categoryToUpdate.getCreatedAt());
category.setUpdatedAt(updatedAt);
CategoryEntity updatedCategory = convert(categoryRepository.update(category));
auditService.createEnvironmentAuditLog(Collections.singletonMap(CATEGORY, category.getId()), CATEGORY_UPDATED, updatedAt, categoryToUpdate, category);
return updatedCategory;
} catch (TechnicalException ex) {
LOGGER.error("An error occurs while trying to update category {}", categoryEntity.getName(), ex);
throw new TechnicalManagementException("An error occurs while trying to update category " + categoryEntity.getName(), ex);
}
}
use of io.gravitee.repository.management.model.Category in project gravitee-management-rest-api by gravitee-io.
the class CategoryServiceImpl method create.
@Override
public CategoryEntity create(NewCategoryEntity newCategory) {
// First we prevent the duplicate category name
final List<CategoryEntity> categories = findAll();
final Optional<CategoryEntity> optionalCategory = categories.stream().filter(v -> v.getName().equals((newCategory.getName()))).findAny();
if (optionalCategory.isPresent()) {
throw new DuplicateCategoryNameException(optionalCategory.get().getName());
}
try {
// check if environment exists
String environment = GraviteeContext.getCurrentEnvironment();
this.environmentService.findById(environment);
Category category = convert(newCategory);
final Date createdAt = new Date();
category.setCreatedAt(createdAt);
category.setUpdatedAt(createdAt);
category.setEnvironmentId(environment);
category.setOrder(categories.size());
CategoryEntity createdCategory = convert(categoryRepository.create(category));
auditService.createEnvironmentAuditLog(Collections.singletonMap(CATEGORY, category.getId()), CATEGORY_CREATED, createdAt, null, category);
return createdCategory;
} catch (TechnicalException ex) {
LOGGER.error("An error occurs while trying to create category {}", newCategory.getName(), ex);
throw new TechnicalManagementException("An error occurs while trying to create category " + newCategory.getName(), ex);
}
}
use of io.gravitee.repository.management.model.Category in project gravitee-management-rest-api by gravitee-io.
the class CategoryServiceImpl method convert.
private Category convert(final NewCategoryEntity categoryEntity) {
final Category category = new Category();
category.setId(UuidString.generateRandom());
category.setKey(IdGenerator.generate(categoryEntity.getName()));
category.setName(categoryEntity.getName());
category.setDescription(categoryEntity.getDescription());
category.setOrder(categoryEntity.getOrder());
category.setHidden(categoryEntity.isHidden());
category.setHighlightApi(categoryEntity.getHighlightApi());
category.setPicture(categoryEntity.getPicture());
category.setBackground(categoryEntity.getBackground());
category.setPage(categoryEntity.getPage());
return category;
}
use of io.gravitee.repository.management.model.Category in project gravitee-management-rest-api by gravitee-io.
the class CategoryServiceImpl method update.
@Override
public List<CategoryEntity> update(final List<UpdateCategoryEntity> categoriesEntities) {
final List<CategoryEntity> savedCategories = new ArrayList<>(categoriesEntities.size());
categoriesEntities.forEach(categoryEntity -> {
try {
Optional<Category> optCategoryToUpdate = categoryRepository.findById(categoryEntity.getId());
if (optCategoryToUpdate.isPresent()) {
final Category categoryToUpdate = optCategoryToUpdate.get();
Category category = convert(categoryEntity, categoryToUpdate.getEnvironmentId());
// check if picture has been set
if (category.getPicture() == null) {
// Picture can not be updated when re-ordering categories
category.setPicture(categoryToUpdate.getPicture());
}
// check if background has been set
if (category.getBackground() == null) {
// Background can not be updated when re-ordering categories
category.setBackground(categoryToUpdate.getBackground());
}
final Date updatedAt = new Date();
category.setCreatedAt(categoryToUpdate.getCreatedAt());
category.setUpdatedAt(updatedAt);
savedCategories.add(convert(categoryRepository.update(category)));
auditService.createEnvironmentAuditLog(Collections.singletonMap(CATEGORY, category.getId()), CATEGORY_UPDATED, updatedAt, categoryToUpdate, category);
}
} catch (TechnicalException ex) {
LOGGER.error("An error occurs while trying to update category {}", categoryEntity.getName(), ex);
throw new TechnicalManagementException("An error occurs while trying to update category " + categoryEntity.getName(), ex);
}
});
return savedCategories;
}
use of io.gravitee.repository.management.model.Category in project gravitee-management-rest-api by gravitee-io.
the class CategoryService_UpdateTest method shouldUpdateCategory_single_mode.
@Test
public void shouldUpdateCategory_single_mode() throws TechnicalException {
UpdateCategoryEntity mockCategory = mock(UpdateCategoryEntity.class);
when(mockCategory.getId()).thenReturn("category-id");
when(mockCategory.getName()).thenReturn("Category ID");
when(mockCategoryRepository.findById("category-id")).thenReturn(Optional.of(new Category()));
Category updatedCategory = mock(Category.class);
when(updatedCategory.getId()).thenReturn("category-id");
when(updatedCategory.getName()).thenReturn("category-name");
when(updatedCategory.getDescription()).thenReturn("category-description");
when(updatedCategory.getOrder()).thenReturn(1);
when(updatedCategory.isHidden()).thenReturn(true);
when(updatedCategory.getUpdatedAt()).thenReturn(new Date(1234567890L));
when(updatedCategory.getCreatedAt()).thenReturn(new Date(9876543210L));
when(mockCategoryRepository.update(argThat(cat -> cat.getUpdatedAt() != null))).thenReturn(updatedCategory);
CategoryEntity category = categoryService.update("category-id", mockCategory);
assertNotNull(category);
assertEquals("Id", "category-id", category.getId());
assertEquals("Name", "category-name", category.getName());
assertEquals("Description", "category-description", category.getDescription());
assertEquals("Total APIs", 0, category.getTotalApis());
assertEquals("Order", 1, category.getOrder());
assertEquals("Hidden", true, category.isHidden());
assertEquals("UpdatedAt", new Date(1234567890L), category.getUpdatedAt());
assertEquals("CreatedAt", new Date(9876543210L), category.getCreatedAt());
verify(mockCategoryRepository, times(1)).findById(any());
verify(mockCategoryRepository, times(1)).update(any());
verify(mockAuditService, times(1)).createEnvironmentAuditLog(any(), eq(CATEGORY_UPDATED), any(), any(), any());
}
Aggregations