Jaki macie pomysł na refactoring tego?

0
@Override
	public Client dtoToSource(ClientDto clientDto) {
		if (clientDto == null) {
			return null;
		}
		if(clientDto.getNip() == null) {
			return this.dtoToNewSource(clientDto);
		}
		return clientRepo.findById(clientDto.getNip()).orElseGet(() -> this.dtoToNewSource(clientDto));
        }
	
	private Client dtoToNewSource(ClientDto clientDto) {
		User user = userMapper.dtoToSource(clientDto.getUserDto());
		Address contactAddress = addressMapper.dtoToSource(clientDto.getContactAddress());
		Address registerAddress = addressMapper.dtoToSource(clientDto.getRegisterAddress());
		
		Client c = new Client(clientDto.getNip());
		c.setCompanyName(clientDto.getCompanyName());

		c.setUser(user);
		c.setContactAddress(contactAddress);
		c.setRegisterAddress(registerAddress);
		return c; 
	}

wkurza mnie ten dodatkowy if, przez co 2 razy mam this.dtoToNewSource(clientDto).
Wszystko przez to, że repository się wywala, gdy dostanie nulla: repo.findById(null)

0

może nie najładniejsze rozwiązanie ale

   if (clientDto == null || (clientDto != null && clientDto.getNip() == null)) {
           return null;
       }

1 użytkowników online, w tym zalogowanych: 0, gości: 1