/** * Transforms a complete list of {@link PtuFlexOffer} to a {@link FlexOfferDto}. * * @param ptuFlexOffers a {@link java.util.List} of {@link PtuFlexOffer}. * @return a {@link FlexOfferDto}. */ public static FlexOfferDto transformPtuFlexOffers(List<PtuFlexOffer> ptuFlexOffers) { if (ptuFlexOffers == null || ptuFlexOffers.isEmpty()) { return null; } PtuFlexOffer firstPtuFlexOffer = ptuFlexOffers.get(0); FlexOfferDto flexOfferDto = new FlexOfferDto(); flexOfferDto.setParticipantDomain(firstPtuFlexOffer.getParticipantDomain()); flexOfferDto.setConnectionGroupEntityAddress( firstPtuFlexOffer.getConnectionGroup().getUsefIdentifier()); flexOfferDto.setPeriod(firstPtuFlexOffer.getPtuContainer().getPtuDate()); flexOfferDto.setFlexRequestSequenceNumber(firstPtuFlexOffer.getFlexRequestSequence()); flexOfferDto.setSequenceNumber(firstPtuFlexOffer.getSequence()); ptuFlexOffers .stream() .forEach(ptuFlexOffer -> flexOfferDto.getPtus().add(transformPtuFlexOffer(ptuFlexOffer))); return flexOfferDto; }
private void populateFlexOfferDto( FlexOfferDto flexOfferDto, FlexRequestDto flexRequestDto, boolean populatePtus) { flexOfferDto.setPeriod(flexRequestDto.getPeriod()); flexOfferDto.setConnectionGroupEntityAddress(flexRequestDto.getConnectionGroupEntityAddress()); flexOfferDto.setParticipantDomain(flexRequestDto.getParticipantDomain()); if (populatePtus) { flexRequestDto .getPtus() .stream() .forEach( ptuFlexRequestDto -> { PtuFlexOfferDto ptuFlexOfferDto = new PtuFlexOfferDto(); ptuFlexOfferDto.setPtuIndex(ptuFlexRequestDto.getPtuIndex()); if (ptuFlexRequestDto.getDisposition() == DispositionTypeDto.AVAILABLE) { ptuFlexOfferDto.setPrice(BigDecimal.ZERO); ptuFlexOfferDto.setPower(BigInteger.ZERO); } else { max100PercentOfOriginalPower(ptuFlexRequestDto, ptuFlexOfferDto); } flexOfferDto.getPtus().add(ptuFlexOfferDto); }); } }