Search in sources :

Example 1 with UnitDto

use of org.motechproject.mots.dto.UnitDto in project mots by motech-implementations.

the class ModuleMapper method updateModuleFromDto.

/**
 * Update Module using data from DTO.
 * @param moduleDto DTO with new data
 * @param module Module to be updated
 */
private void updateModuleFromDto(ModuleDto moduleDto, Module module) {
    List<UnitDto> unitDtos = moduleDto.getChildren();
    List<Unit> units = module.getUnits();
    List<Unit> updatedUnits = new ArrayList<>();
    if (units == null) {
        units = new ArrayList<>();
    }
    if (unitDtos != null && !unitDtos.isEmpty()) {
        for (int i = 0; i < unitDtos.size(); i++) {
            UnitDto unitDto = unitDtos.get(i);
            Unit unit;
            if (StringUtils.isBlank(unitDto.getId())) {
                unit = new Unit();
            } else {
                unit = units.stream().filter(u -> u.getId().toString().equals(unitDto.getId())).findAny().orElseThrow(() -> new EntityNotFoundException("Cannot update module, because error occurred during unit list update"));
            }
            updateUnitFromDto(unitDto, unit);
            unit.setAllowReplay(BooleanUtils.isTrue(unit.getAllowReplay()));
            unit.setListOrder(i);
            updatedUnits.add(unit);
        }
    }
    updateFromDto(moduleDto, module);
    module.setUnits(updatedUnits);
}
Also used : StringUtils(org.apache.commons.lang.StringUtils) Mappings(org.mapstruct.Mappings) Mapping(org.mapstruct.Mapping) ChoiceDto(org.motechproject.mots.dto.ChoiceDto) CourseModule(org.motechproject.mots.domain.CourseModule) CallFlowElementType(org.motechproject.mots.domain.enums.CallFlowElementType) ArrayList(java.util.ArrayList) UnitDto(org.motechproject.mots.dto.UnitDto) BooleanUtils(org.apache.commons.lang.BooleanUtils) MessageDto(org.motechproject.mots.dto.MessageDto) MappingTarget(org.mapstruct.MappingTarget) Mapper(org.mapstruct.Mapper) MultipleChoiceQuestion(org.motechproject.mots.domain.MultipleChoiceQuestion) Module(org.motechproject.mots.domain.Module) EntityNotFoundException(org.motechproject.mots.exception.EntityNotFoundException) Mappers(org.mapstruct.factory.Mappers) MultipleChoiceQuestionDto(org.motechproject.mots.dto.MultipleChoiceQuestionDto) Choice(org.motechproject.mots.domain.Choice) Course(org.motechproject.mots.domain.Course) CallFlowElement(org.motechproject.mots.domain.CallFlowElement) ReportingPolicy(org.mapstruct.ReportingPolicy) ModuleDto(org.motechproject.mots.dto.ModuleDto) List(java.util.List) Message(org.motechproject.mots.domain.Message) Unit(org.motechproject.mots.domain.Unit) ModuleSimpleDto(org.motechproject.mots.dto.ModuleSimpleDto) Status(org.motechproject.mots.domain.enums.Status) CourseDto(org.motechproject.mots.dto.CourseDto) CallFlowElementDto(org.motechproject.mots.dto.CallFlowElementDto) ArrayList(java.util.ArrayList) EntityNotFoundException(org.motechproject.mots.exception.EntityNotFoundException) Unit(org.motechproject.mots.domain.Unit) UnitDto(org.motechproject.mots.dto.UnitDto)

Example 2 with UnitDto

use of org.motechproject.mots.dto.UnitDto in project mots by motech-implementations.

the class ModuleMapper method updateUnitFromDto.

private void updateUnitFromDto(UnitDto unitDto, Unit unit) {
    List<CallFlowElementDto> callFlowElementDtos = unitDto.getChildren();
    List<CallFlowElement> callFlowElements = unit.getCallFlowElements();
    List<CallFlowElement> updatedCallFlowElements = new ArrayList<>();
    if (callFlowElements == null) {
        callFlowElements = new ArrayList<>();
    }
    if (callFlowElementDtos != null && !callFlowElementDtos.isEmpty()) {
        for (int i = 0; i < callFlowElementDtos.size(); i++) {
            CallFlowElementDto callFlowElementDto = callFlowElementDtos.get(i);
            CallFlowElement callFlowElement;
            if (callFlowElementDto.getId() == null) {
                callFlowElement = fromDto(callFlowElementDto);
            } else {
                callFlowElement = callFlowElements.stream().filter(cf -> cf.getId().toString().equals(callFlowElementDto.getId())).findAny().orElseThrow(() -> new EntityNotFoundException("Cannot update module, because error occurred during unit list update"));
                updateFromDto(callFlowElementDto, callFlowElement);
            }
            callFlowElement.setListOrder(i);
            updatedCallFlowElements.add(callFlowElement);
        }
    }
    updateFromDto(unitDto, unit);
    unit.setCallFlowElements(updatedCallFlowElements);
}
Also used : StringUtils(org.apache.commons.lang.StringUtils) Mappings(org.mapstruct.Mappings) Mapping(org.mapstruct.Mapping) ChoiceDto(org.motechproject.mots.dto.ChoiceDto) CourseModule(org.motechproject.mots.domain.CourseModule) CallFlowElementType(org.motechproject.mots.domain.enums.CallFlowElementType) ArrayList(java.util.ArrayList) UnitDto(org.motechproject.mots.dto.UnitDto) BooleanUtils(org.apache.commons.lang.BooleanUtils) MessageDto(org.motechproject.mots.dto.MessageDto) MappingTarget(org.mapstruct.MappingTarget) Mapper(org.mapstruct.Mapper) MultipleChoiceQuestion(org.motechproject.mots.domain.MultipleChoiceQuestion) Module(org.motechproject.mots.domain.Module) EntityNotFoundException(org.motechproject.mots.exception.EntityNotFoundException) Mappers(org.mapstruct.factory.Mappers) MultipleChoiceQuestionDto(org.motechproject.mots.dto.MultipleChoiceQuestionDto) Choice(org.motechproject.mots.domain.Choice) Course(org.motechproject.mots.domain.Course) CallFlowElement(org.motechproject.mots.domain.CallFlowElement) ReportingPolicy(org.mapstruct.ReportingPolicy) ModuleDto(org.motechproject.mots.dto.ModuleDto) List(java.util.List) Message(org.motechproject.mots.domain.Message) Unit(org.motechproject.mots.domain.Unit) ModuleSimpleDto(org.motechproject.mots.dto.ModuleSimpleDto) Status(org.motechproject.mots.domain.enums.Status) CourseDto(org.motechproject.mots.dto.CourseDto) CallFlowElementDto(org.motechproject.mots.dto.CallFlowElementDto) CallFlowElementDto(org.motechproject.mots.dto.CallFlowElementDto) CallFlowElement(org.motechproject.mots.domain.CallFlowElement) ArrayList(java.util.ArrayList) EntityNotFoundException(org.motechproject.mots.exception.EntityNotFoundException)

Aggregations

ArrayList (java.util.ArrayList)2 List (java.util.List)2 BooleanUtils (org.apache.commons.lang.BooleanUtils)2 StringUtils (org.apache.commons.lang.StringUtils)2 Mapper (org.mapstruct.Mapper)2 Mapping (org.mapstruct.Mapping)2 MappingTarget (org.mapstruct.MappingTarget)2 Mappings (org.mapstruct.Mappings)2 ReportingPolicy (org.mapstruct.ReportingPolicy)2 Mappers (org.mapstruct.factory.Mappers)2 CallFlowElement (org.motechproject.mots.domain.CallFlowElement)2 Choice (org.motechproject.mots.domain.Choice)2 Course (org.motechproject.mots.domain.Course)2 CourseModule (org.motechproject.mots.domain.CourseModule)2 Message (org.motechproject.mots.domain.Message)2 Module (org.motechproject.mots.domain.Module)2 MultipleChoiceQuestion (org.motechproject.mots.domain.MultipleChoiceQuestion)2 Unit (org.motechproject.mots.domain.Unit)2 CallFlowElementType (org.motechproject.mots.domain.enums.CallFlowElementType)2 Status (org.motechproject.mots.domain.enums.Status)2