/** * Transforms a {@link PlanboardMessage} to a {@link FlexOfferDto}. * * @param offer * @return */ public static FlexOfferDto transform(PlanboardMessage offer) { if (offer == null) { return null; } FlexOfferDto flexOfferDto = new FlexOfferDto(); flexOfferDto.setPeriod(offer.getPeriod()); flexOfferDto.setParticipantDomain(offer.getParticipantDomain()); flexOfferDto.setConnectionGroupEntityAddress(offer.getConnectionGroup().getUsefIdentifier()); flexOfferDto.setSequenceNumber(offer.getSequence()); flexOfferDto.setFlexRequestSequenceNumber(offer.getOriginSequence()); flexOfferDto.setExpirationDateTime(offer.getExpirationDate()); return flexOfferDto; }
/* * (non-Javadoc) * * @see WorkflowStep#invoke(WorkflowContext) */ @Override public WorkflowContext invoke(WorkflowContext context) { LOGGER.info("AgrFlexOfferStub: started"); List<FlexOfferDto> outputFlexOffers = new ArrayList<>(); @SuppressWarnings("unchecked") List<FlexRequestDto> inputFlexRequests = (List<FlexRequestDto>) context.getValue( FlexOfferDetermineFlexibilityStepParameter.IN.FLEX_REQUEST_DTO_LIST.name()); /* * For each give flex request, choose to: - create an offer, - do not create offer at all, - do not create offer now. */ int decision; for (FlexRequestDto flexRequestDto : inputFlexRequests) { decision = 1; // original: RANDOM.nextInt(3); // 0,1 or 2 FlexOfferDto flexOfferDto = new FlexOfferDto(); flexOfferDto.setFlexRequestSequenceNumber(flexRequestDto.getSequenceNumber()); flexOfferDto.setExpirationDateTime( now.plusDays(FLEX_OFFER_EXPIRATION_DAYS).withTime(0, 0, 0, 0)); if (decision == 0) { // create a flex offer for the flex request: put a populated flex offer. LOGGER.debug( "A new FlexOffer will be created for FlexRequest with sequence [{}]", flexRequestDto.getSequenceNumber()); populateFlexOfferDto(flexOfferDto, flexRequestDto, true); outputFlexOffers.add(flexOfferDto); } else if (decision == 1) { // refuse to create an offer for the flex request: put an empty flex offer. LOGGER.debug( "An empty FlexOffer will be created for FlexRequest with sequence [{}]", flexRequestDto.getSequenceNumber()); populateFlexOfferDto(flexOfferDto, flexRequestDto, false); outputFlexOffers.add(flexOfferDto); } else { // do not create a flex offer now: don't put anything new in the output list. LOGGER.debug( "No FlexOffer will be created now for FlexRequest with sequence [{}]", flexRequestDto.getSequenceNumber()); } } context.setValue( FlexOfferDetermineFlexibilityStepParameter.OUT.FLEX_OFFER_DTO_LIST.name(), outputFlexOffers); LOGGER.info("AgrFlexOfferStub: complete"); return context; }