class KewTypeBoServiceImpl implements KewTypeRepositoryService {

    @Override
    public void updateKewTypeAttribute(KewTypeAttribute kewTypeAttribute) {
        if (kewTypeAttribute == null) {
            throw new RiceIllegalArgumentException("kewTypeAttribute is null");
        }
        final KewTypeAttributeBo existing = dataObjectService.find(KewTypeAttributeBo.class, kewTypeAttribute.getId());
        if (existing == null) {
            throw new RiceIllegalStateException("The KEW type Attribute does not exist: " + kewTypeAttribute);
        }
        final KewTypeAttribute toUpdate;
        if (!existing.getId().equals(kewTypeAttribute.getId())){
            final KewTypeAttribute.Builder builder = KewTypeAttribute.Builder.create(kewTypeAttribute);
            builder.setId(existing.getId());
            toUpdate = builder.build();
        } else {
            toUpdate = kewTypeAttribute;
        }

        KewTypeBo kewType = existing.getType();
        if (!existing.getTypeId().equals(kewTypeAttribute.getTypeId())) {
            kewType = dataObjectService.find(KewTypeBo.class, kewTypeAttribute.getTypeId());
        }

        dataObjectService.save(KewTypeAttributeBo.from(toUpdate, kewType));
    }

}