/**
   * Formats Claim Policy information to be in synch with Claim Import layout
   *
   * @param returnDetailsForImport
   * @param claimsPolicyCompositeHelper
   * @param clmDetailResponse
   */
  public void processClaimPolicy(
      boolean returnDetailsForImport,
      ClaimsPolicyCompositeHelper claimsPolicyCompositeHelper,
      ClaimDetailsResponseDTO clmDetailResponse) {
    ClaimPolicyDTO clmPolicyDTO = clmDetailResponse.getClaimDTO().getPolicy();

    getClaimPolicyUnitExternalSourceId().clear();

    // populate claim policy party info.
    claimsPolicyCompositeHelper.normalizePolicyDetails(clmPolicyDTO);

    // Claim Details returns a Collection of ClaimPolicyParticipationDTO
    // which contains ClaimPolicyFinancialInterestParticipationDTO,
    // ClaimPolicyDriverParticipationDTO,
    // ClaimPolicyAgencyParticipationDTO,
    // ClaimPolicyInsuredParticipationDTO.
    // For Claim Import we need the Participants as separate Collection.
    // So we loop thru' the Collection of ClaimPolicyParticipationDTO
    // add to the corresponding Collections.
    if (clmPolicyDTO != null && clmPolicyDTO.getParticipations() != null) {

      for (ClaimPolicyParticipationDTO participantDTO : clmPolicyDTO.getParticipations()) {
        if (participantDTO.getParticipationEffectiveDate() == null) {
          participantDTO.setParticipationEffectiveDate(DateUtility.getSystemDateTime());
        }
        participantDTO.setAlreadyUpdated(true);
        if (participantDTO instanceof ClaimPolicyFinancialInterestParticipationDTO) {
          clmPolicyDTO
              .getClmPolicyFinancialInterestParticipants()
              .add((ClaimPolicyFinancialInterestParticipationDTO) participantDTO);
        } else if (participantDTO instanceof ClaimPolicyDriverParticipationDTO) {
          clmPolicyDTO
              .getClmPolicyDriverParticipants()
              .add((ClaimPolicyDriverParticipationDTO) participantDTO);
        } else if (participantDTO instanceof ClaimPolicyAgencyParticipationDTO) {
          clmPolicyDTO
              .getClmPolicyAgencyParticipants()
              .add((ClaimPolicyAgencyParticipationDTO) participantDTO);
        } else if (participantDTO instanceof ClaimPolicyInsuredParticipationDTO) {
          clmPolicyDTO
              .getClmPolicyInsuredParticipants()
              .add((ClaimPolicyInsuredParticipationDTO) participantDTO);
        }
      }
      clmPolicyDTO.setParticipations(null);
    }
    // For Claim Import Claim Policy Units should be a Collection of
    // ClaimPolicyUnitVehicleDTO.
    // Claim Details returns the Collection with ClaimPolicyUnitDTO and
    // ClaimPolicyUnitVehicleDTO.
    if (clmPolicyDTO != null && clmPolicyDTO.getUnits() != null) {

      Collection<ClaimPolicyUnitDTO> claimPolicyUnits = new ArrayList<ClaimPolicyUnitDTO>();

      for (ClaimPolicyUnitDTO claimPolicyUnit : clmPolicyDTO.getUnits()) {
        if (returnDetailsForImport) {
          getClaimPolicyUnitExternalSourceId()
              .put(claimPolicyUnit.getRecordId(), claimPolicyUnit.getExternalSourceId());
        }
        if (claimPolicyUnit instanceof ClaimPolicyUnitDTO) {
          ClaimPolicyUnitVehicleDTO claimPolicyVehicleUnit = new ClaimPolicyUnitVehicleDTO();
          BeanUtils.copyProperties(claimPolicyUnit, claimPolicyVehicleUnit);
          claimPolicyUnits.add(claimPolicyVehicleUnit);
        } else {
          claimPolicyUnits.add((ClaimPolicyUnitVehicleDTO) claimPolicyUnit);
        }
      }
      clmPolicyDTO.setUnits(claimPolicyUnits);
      /*
       * for(ClaimPolicyUnitDTO claimPolicyVehicleUnit:
       * clmPolicyDTO.getUnits()) { if(claimPolicyVehicleUnit
       * instanceof ClaimPolicyUnitVehicleDTO) {
       * claimPolicyUnits.add(claimPolicyVehicleUnit); } }
       */
    }
  }