/** {@inheritDoc} */ public List<VoProductTypeAttr> update(final List<MutablePair<VoProductTypeAttr, Boolean>> vo) throws Exception { long typeId = 0L; if (federationFacade.isCurrentUserSystemAdmin()) { final VoAssemblySupport.VoAssembler<VoProductTypeAttr, ProductTypeAttrDTO> asm = voAssemblySupport.with(VoProductTypeAttr.class, ProductTypeAttrDTO.class); Map<Long, ProductTypeAttrDTO> existing = Collections.emptyMap(); for (final MutablePair<VoProductTypeAttr, Boolean> item : vo) { if (typeId == 0L) { typeId = item.getFirst().getProducttypeId(); existing = mapAvById((List) dtoProductTypeAttrService.getByProductTypeId(typeId)); } else if (typeId != item.getFirst().getProducttypeId()) { throw new AccessDeniedException("Access is denied"); } if (Boolean.valueOf(item.getSecond())) { if (item.getFirst().getProductTypeAttrId() > 0L) { // delete mode dtoProductTypeAttrService.remove(item.getFirst().getProductTypeAttrId()); } } else if (item.getFirst().getProductTypeAttrId() > 0L) { // update mode final ProductTypeAttrDTO dto = existing.get(item.getFirst().getProductTypeAttrId()); if (dto != null) { asm.assembleDto(dto, item.getFirst()); dtoProductTypeAttrService.update(dto); } else { ShopCodeContext.getLog(this) .warn( "Update skipped for inexistent ID {}", item.getFirst().getProductTypeAttrId()); } } else { // insert mode final ProductTypeAttrDTO dto = dtoProductTypeAttrService.getNew(); dto.setProducttypeId(typeId); dto.setAttributeDTO( dtoAttributeService.getById(item.getFirst().getAttribute().getAttributeId())); asm.assembleDto(dto, item.getFirst()); this.dtoProductTypeAttrService.create(dto); } } } else { throw new AccessDeniedException("Access is denied"); } return getTypeAttributes(typeId); }
/** {@inheritDoc} */ public List<VoProductTypeAttr> getTypeAttributes(final long typeId) throws Exception { final List<ProductTypeAttrDTO> attributes = dtoProductTypeAttrService.getByProductTypeId(typeId); return voAssemblySupport.assembleVos( VoProductTypeAttr.class, ProductTypeAttrDTO.class, attributes); }