@Override protected Map<String, String> resolveDataElementValues( Set<String> elementKeys, ProgramStageInstance entity ) { if ( elementKeys.isEmpty() ) { return Maps.newHashMap(); } return entity.getDataValues().stream() .filter( dv -> elementKeys.contains( dv.getDataElement().getUid() ) ) .collect( Collectors.toMap( dv -> dv.getDataElement().getUid() , ProgramStageNotificationMessageRenderer::filterValue ) ); }
programStageInstance.getDataValues().stream() .filter( dv -> !StringUtils.isEmpty( dv.getValue() )) .map( dv -> dv.getDataElement().getUid() )
@Override public List<RuleEvent> toMappedRuleEvents ( Set<ProgramStageInstance> programStageInstances, ProgramStageInstance psiToEvaluate ) { return programStageInstances.stream().filter( Objects::nonNull ) .filter( psi -> !psi.getUid().equals( psiToEvaluate.getUid() ) ) .map( ps -> RuleEvent.create( ps.getUid(), ps.getProgramStage().getUid(), RuleEvent.Status.valueOf( ps.getStatus().toString() ), ps.getExecutionDate() != null ? ps.getExecutionDate() :ps.getDueDate(), ps.getDueDate(), ps.getOrganisationUnit() != null ? ps.getOrganisationUnit().getUid() : "", ps.getDataValues().stream().filter( Objects::nonNull ) .map( dv -> RuleDataValue.create( ps.getExecutionDate() != null ? ps.getExecutionDate() :ps.getDueDate(), dv.getProgramStageInstance().getProgramStage().getUid(), dv.getDataElement().getUid(), getTrackedEntityDataValue( dv ) ) ) .collect( Collectors.toList() ), ps.getProgramStage().getName() ) ).collect( Collectors.toList() ); }
private ProgramMessageRecipients resolveProgramStageNotificationRecipients( ProgramNotificationTemplate template, OrganisationUnit organisationUnit, ProgramStageInstance psi ) { ProgramMessageRecipients recipients = new ProgramMessageRecipients(); if ( template.getNotificationRecipient() == ProgramNotificationRecipient.DATA_ELEMENT && template.getRecipientDataElement() != null ) { List<String> recipientList = psi.getDataValues().stream() .filter( dv -> template.getRecipientDataElement().getUid().equals( dv.getDataElement().getUid() ) ) .map( TrackedEntityDataValue::getValue ) .collect( Collectors.toList() ); if ( template.getDeliveryChannels().contains( DeliveryChannel.SMS ) ) { recipients.getPhoneNumbers().addAll( recipientList ); } else if ( template.getDeliveryChannels().contains( DeliveryChannel.EMAIL ) ) { recipients.getEmailAddresses().addAll( recipientList ); } return recipients; } else { TrackedEntityInstance trackedEntityInstance = psi.getProgramInstance().getEntityInstance(); return resolveRecipients( template, organisationUnit, trackedEntityInstance, psi.getProgramInstance() ); } }
@Override public List<RuleEvent> toMappedRuleEvents( Set<ProgramStageInstance> programStageInstances ) { return programStageInstances.stream().filter( Objects::nonNull ) .map( ps -> RuleEvent.create( ps.getUid(), ps.getProgramStage().getUid(), RuleEvent.Status.valueOf( ps.getStatus().toString() ), ps.getExecutionDate() != null ? ps.getExecutionDate() : ps.getDueDate(), ps.getDueDate(), ps.getOrganisationUnit() != null ? ps.getOrganisationUnit().getUid() : "", ps.getDataValues().stream().filter( Objects::nonNull ) .map( dv -> RuleDataValue.create( ps.getExecutionDate() != null ? ps.getExecutionDate() :ps.getDueDate(), dv.getProgramStageInstance().getProgramStage().getUid(), dv.getDataElement().getUid(), getTrackedEntityDataValue( dv ) ) ) .collect( Collectors.toList() ), ps.getProgramStage().getName() ) ).collect( Collectors.toList() ); }
@Override public RuleEvent toMappedRuleEvent( ProgramStageInstance psi ) { if ( psi == null ) { return null; } return RuleEvent.create( psi.getUid(), psi.getProgramStage().getUid(), RuleEvent.Status.valueOf( psi.getStatus().toString() ), psi.getExecutionDate() != null ? psi.getExecutionDate() : psi.getDueDate(), psi.getDueDate(), psi.getOrganisationUnit() != null ? psi.getOrganisationUnit().getUid() : "", psi.getDataValues().stream().filter( Objects::nonNull ) .map( dv -> RuleDataValue.create( psi.getExecutionDate() != null ? psi.getExecutionDate() :psi.getDueDate(), dv.getProgramStageInstance().getProgramStage().getUid(), dv.getDataElement().getUid(), getTrackedEntityDataValue( dv ) ) ) .collect( Collectors.toList() ), psi.getProgramStage().getName() ); }
programStageInstance.getDataValues().add( dataValue );