/* * */ package org.uic.barcode.ticket.api.utils; import java.io.IOException; import java.util.Date; import java.util.List; import org.uic.barcode.ticket.api.asn.omv1.BerthDetailData; import org.uic.barcode.ticket.api.asn.omv1.CarCarriageReservationData; import org.uic.barcode.ticket.api.asn.omv1.CardReferenceType; import org.uic.barcode.ticket.api.asn.omv1.CompartmentDetailsType; import org.uic.barcode.ticket.api.asn.omv1.ControlData; import org.uic.barcode.ticket.api.asn.omv1.CountermarkData; import org.uic.barcode.ticket.api.asn.omv1.CustomerCardData; import org.uic.barcode.ticket.api.asn.omv1.CustomerStatusType; import org.uic.barcode.ticket.api.asn.omv1.DelayConfirmation; import org.uic.barcode.ticket.api.asn.omv1.DeltaCoordinates; import org.uic.barcode.ticket.api.asn.omv1.DocumentData; import org.uic.barcode.ticket.api.asn.omv1.ExtensionData; import org.uic.barcode.ticket.api.asn.omv1.FIPTicketData; import org.uic.barcode.ticket.api.asn.omv1.GeoCoordinateType; import org.uic.barcode.ticket.api.asn.omv1.IncludedOpenTicketType; import org.uic.barcode.ticket.api.asn.omv1.IssuingData; import org.uic.barcode.ticket.api.asn.omv1.LineType; import org.uic.barcode.ticket.api.asn.omv1.LuggageRestrictionType; import org.uic.barcode.ticket.api.asn.omv1.OpenTicketData; import org.uic.barcode.ticket.api.asn.omv1.ParkingGroundData; import org.uic.barcode.ticket.api.asn.omv1.PassData; import org.uic.barcode.ticket.api.asn.omv1.PlacesType; import org.uic.barcode.ticket.api.asn.omv1.PolygoneType; import org.uic.barcode.ticket.api.asn.omv1.RegionalValidityType; import org.uic.barcode.ticket.api.asn.omv1.RegisteredLuggageType; import org.uic.barcode.ticket.api.asn.omv1.ReservationData; import org.uic.barcode.ticket.api.asn.omv1.ReturnRouteDescriptionType; import org.uic.barcode.ticket.api.asn.omv1.RouteSectionType; import org.uic.barcode.ticket.api.asn.omv1.SeriesDetailType; import org.uic.barcode.ticket.api.asn.omv1.StationPassageData; import org.uic.barcode.ticket.api.asn.omv1.TariffType; import org.uic.barcode.ticket.api.asn.omv1.TicketLinkType; import org.uic.barcode.ticket.api.asn.omv1.TimeRangeType; import org.uic.barcode.ticket.api.asn.omv1.TokenType; import org.uic.barcode.ticket.api.asn.omv1.TrainLinkType; import org.uic.barcode.ticket.api.asn.omv1.TravelerData; import org.uic.barcode.ticket.api.asn.omv1.TravelerType; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.asn.omv1.ValidityPeriodDetailType; import org.uic.barcode.ticket.api.asn.omv1.ValidityPeriodType; import org.uic.barcode.ticket.api.asn.omv1.VatDetailType; import org.uic.barcode.ticket.api.asn.omv1.ViaStationType; import org.uic.barcode.ticket.api.asn.omv1.VoucherData; import org.uic.barcode.ticket.api.asn.omv1.ZoneType; import org.uic.barcode.ticket.api.impl.SimpleUicTicketObjectFactory; import org.uic.barcode.ticket.api.spec.IBerth; import org.uic.barcode.ticket.api.spec.IBerthTypeType; import org.uic.barcode.ticket.api.spec.ICarCarriageReservation; import org.uic.barcode.ticket.api.spec.ICardReference; import org.uic.barcode.ticket.api.spec.ICompartmentDetails; import org.uic.barcode.ticket.api.spec.ICompartmentGenderType; import org.uic.barcode.ticket.api.spec.ICompartmentPositionType; import org.uic.barcode.ticket.api.spec.IControlDetail; import org.uic.barcode.ticket.api.spec.ICounterMark; import org.uic.barcode.ticket.api.spec.ICustomerCard; import org.uic.barcode.ticket.api.spec.ICustomerStatusDescription; import org.uic.barcode.ticket.api.spec.IDelayConfirmation; import org.uic.barcode.ticket.api.spec.IDocumentExtension; import org.uic.barcode.ticket.api.spec.IExtension; import org.uic.barcode.ticket.api.spec.IFipTicket; import org.uic.barcode.ticket.api.spec.IGenderType; import org.uic.barcode.ticket.api.spec.IGeoCoordinate; import org.uic.barcode.ticket.api.spec.IGeoCoordinateSystemType; import org.uic.barcode.ticket.api.spec.IGeoUnitType; import org.uic.barcode.ticket.api.spec.IHemisphereLatitudeType; import org.uic.barcode.ticket.api.spec.IHemisphereLongitudeType; import org.uic.barcode.ticket.api.spec.IIncludedOpenTicket; import org.uic.barcode.ticket.api.spec.IIssuingDetail; import org.uic.barcode.ticket.api.spec.ILine; import org.uic.barcode.ticket.api.spec.ILinkMode; import org.uic.barcode.ticket.api.spec.ILoadingDeckType; import org.uic.barcode.ticket.api.spec.ILuggageRestriction; import org.uic.barcode.ticket.api.spec.IOpenTicket; import org.uic.barcode.ticket.api.spec.IParkingGround; import org.uic.barcode.ticket.api.spec.IPass; import org.uic.barcode.ticket.api.spec.IPassengerType; import org.uic.barcode.ticket.api.spec.IPlaces; import org.uic.barcode.ticket.api.spec.IPolygone; import org.uic.barcode.ticket.api.spec.IPriceTypeType; import org.uic.barcode.ticket.api.spec.IRegionalValidity; import org.uic.barcode.ticket.api.spec.IRegisteredLuggage; import org.uic.barcode.ticket.api.spec.IReservation; import org.uic.barcode.ticket.api.spec.IReturnRouteDescription; import org.uic.barcode.ticket.api.spec.IRoofRackType; import org.uic.barcode.ticket.api.spec.IRouteSection; import org.uic.barcode.ticket.api.spec.ISeriesDataDetails; import org.uic.barcode.ticket.api.spec.IServiceBrand; import org.uic.barcode.ticket.api.spec.IStationCodeTable; import org.uic.barcode.ticket.api.spec.IStationPassage; import org.uic.barcode.ticket.api.spec.ITariff; import org.uic.barcode.ticket.api.spec.ITicketLink; import org.uic.barcode.ticket.api.spec.ITicketType; import org.uic.barcode.ticket.api.spec.ITimeRange; import org.uic.barcode.ticket.api.spec.IToken; import org.uic.barcode.ticket.api.spec.ITrainLink; import org.uic.barcode.ticket.api.spec.ITravelClassType; import org.uic.barcode.ticket.api.spec.ITraveler; import org.uic.barcode.ticket.api.spec.ITravelerDetail; import org.uic.barcode.ticket.api.spec.IUicRailTicket; import org.uic.barcode.ticket.api.spec.IUicTicketObjectFactory; import org.uic.barcode.ticket.api.spec.IValidityDetails; import org.uic.barcode.ticket.api.spec.IValidityRange; import org.uic.barcode.ticket.api.spec.IVatDetail; import org.uic.barcode.ticket.api.spec.IViaStation; import org.uic.barcode.ticket.api.spec.IVoucher; import org.uic.barcode.ticket.api.spec.IZone; /** * The Class OpenAsn2ApiDecoder. */ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { IUicTicketObjectFactory factory = SimpleUicTicketObjectFactory.getInstance(); /** * Decode from asn.1 unaligned PER encoded data. * * @param asnUicRailTicketData the asn uic rail ticket data * @return the decoded uic rail ticket * @throws IOException Signals that an I/O exception has occurred. */ public IUicRailTicket decodeFromAsn (UicRailTicketData asnUicRailTicketData) throws IOException{ IUicRailTicket uicRailTicket = factory.createUicRailTicket(); populateFromAsn1Model(uicRailTicket, asnUicRailTicketData); return uicRailTicket; } /** * Decode from asn.1 unaligned PER encoded data. * * @param data byte array of the asn.1 encoded FCB data * @return the decoded uic rail ticket * @throws IOException Signals that an I/O exception has occurred. */ public IUicRailTicket decodeFromAsn (byte[] data) throws IOException{ UicRailTicketData asnUicRailTicketData = UicRailTicketData.decode(data); IUicRailTicket uicRailTicket = factory.createUicRailTicket(); populateFromAsn1Model(uicRailTicket, asnUicRailTicketData); return uicRailTicket; } /** * Populate from asn1 model. * * @param uicRailTicket the uic rail ticket * @param asnUicRailTicketData the asn uic rail ticket data */ protected void populateFromAsn1Model(IUicRailTicket uicRailTicket, UicRailTicketData asnUicRailTicketData) { if (asnUicRailTicketData.getExtension()!= null && !asnUicRailTicketData.getExtension().isEmpty()) { for (ExtensionData asnExtension : asnUicRailTicketData.getExtension()){ uicRailTicket.addExtension(convertExtension(asnExtension)); } } if (asnUicRailTicketData.getIssuingDetail() != null) { populateIssuingDetail(asnUicRailTicketData.getIssuingDetail(), uicRailTicket.getIssuerDetails()); } if (asnUicRailTicketData.getControlDetail() != null) { populateControlDetails(asnUicRailTicketData.getControlDetail(),uicRailTicket.getControlDetails()); } if (asnUicRailTicketData.getTravelerDetail() != null) { populateTravelerDetails(asnUicRailTicketData.getTravelerDetail(),uicRailTicket.getTravelerDetails()); } if (asnUicRailTicketData.getTransportDocument() != null && !asnUicRailTicketData.getTransportDocument().isEmpty()) { // date is already converted to local time, use UTC for internal calculations Date localIssuingDate = uicRailTicket.getIssuerDetails().getIssuingDate(); Date issuingDate = DateTimeUtils.dateToUTC(localIssuingDate); populateTravelDocuments(asnUicRailTicketData.getTransportDocument(),uicRailTicket, issuingDate); } } /** * Populate travel documents. * * @param asnTransportDocuments the asn transport documents * @param uicRailTicket the uic rail ticket * @param issuingDate the issuing date */ protected void populateTravelDocuments(List asnTransportDocuments,IUicRailTicket uicRailTicket, Date issuingDate) { for ( DocumentData asnDocument : asnTransportDocuments){ if (asnDocument.getTicket() == null) { break; } if (asnDocument.getTicket().getExtension() != null) { IDocumentExtension ticket = convertDocumentExtension(asnDocument.getTicket().getExtension()); if (asnDocument.getToken() != null) { IToken token = convertToken(asnDocument.getToken()); ticket.setToken(token); } uicRailTicket.addDocumentExtension(ticket); } if (asnDocument.getTicket().getCarCarriageReservation() != null) { ICarCarriageReservation ticket = convertCarCarriage(asnDocument.getTicket().getCarCarriageReservation(),issuingDate); if (asnDocument.getToken() != null) { IToken token = convertToken(asnDocument.getToken()); ticket.setToken(token); } uicRailTicket.addCarCarriageReservation(ticket); } if (asnDocument.getTicket().getCounterMark() != null) { ICounterMark ticket = convertCountermark(asnDocument.getTicket().getCounterMark(),issuingDate); if (asnDocument.getToken() != null) { IToken token = convertToken(asnDocument.getToken()); ticket.setToken(token); } uicRailTicket.addCounterMark(ticket); } if (asnDocument.getTicket().getCustomerCard()!= null) { ICustomerCard ticket = convertCustomerCard(asnDocument.getTicket().getCustomerCard(),issuingDate); if (asnDocument.getToken() != null) { IToken token = convertToken(asnDocument.getToken()); ticket.setToken(token); } uicRailTicket.addCustomerCard(ticket); } if (asnDocument.getTicket().getFipTicket()!= null) { IFipTicket ticket = convertFipTicket(asnDocument.getTicket().getFipTicket(),issuingDate); if (asnDocument.getToken() != null) { IToken token = convertToken(asnDocument.getToken()); ticket.setToken(token); } uicRailTicket.addFipTicket(ticket); } if (asnDocument.getTicket().getOpenTicket()!= null) { IOpenTicket ticket = convertOpenTicket(asnDocument.getTicket().getOpenTicket(),issuingDate); if (asnDocument.getToken() != null) { IToken token = convertToken(asnDocument.getToken()); ticket.setToken(token); } uicRailTicket.addOpenTicket(ticket); } if (asnDocument.getTicket().getParkingGround()!= null) { IParkingGround ticket = convertParkingGround(asnDocument.getTicket().getParkingGround(),issuingDate); if (asnDocument.getToken() != null) { IToken token = convertToken(asnDocument.getToken()); ticket.setToken(token); } uicRailTicket.addParkingGround(ticket); } if (asnDocument.getTicket().getPass() != null) { IPass ticket = convertPass(asnDocument.getTicket().getPass(),issuingDate); if (asnDocument.getToken() != null) { IToken token = convertToken(asnDocument.getToken()); ticket.setToken(token); } uicRailTicket.addPass(ticket); } if (asnDocument.getTicket().getStationPassage() != null) { IStationPassage ticket = convertStationPassage(asnDocument.getTicket().getStationPassage(),issuingDate); if (asnDocument.getToken() != null) { IToken token = convertToken(asnDocument.getToken()); ticket.setToken(token); } uicRailTicket.addStationPassage(ticket); } if (asnDocument.getTicket().getReservation() != null) { IReservation ticket = convertReservation(asnDocument.getTicket().getReservation(),issuingDate); if (asnDocument.getToken() != null) { IToken token = convertToken(asnDocument.getToken()); ticket.setToken(token); } uicRailTicket.addReservation(ticket); } if (asnDocument.getTicket().getVoucher()!= null) { IVoucher ticket = convertVoucher(asnDocument.getTicket().getVoucher(),issuingDate); if (asnDocument.getToken() != null) { IToken token = convertToken(asnDocument.getToken()); ticket.setToken(token); } uicRailTicket.addVoucher(ticket); } if (asnDocument.getTicket().getDelayConfirmation()!= null) { IDelayConfirmation ticket = convertDelayConfirmation(asnDocument.getTicket().getDelayConfirmation(),issuingDate); if (asnDocument.getToken() != null) { IToken token = convertToken(asnDocument.getToken()); ticket.setToken(token); } uicRailTicket.addDelayConfirmation(ticket); } } } private IToken convertToken(TokenType asnToken) { if (asnToken == null) return null; IToken token = factory.createToken(); token.setToken(asnToken.getToken()); token.setTokenProvider(UicEncoderUtils.mapToString(asnToken.getTokenProviderNum(), asnToken.getTokenProviderIA5())); token.setTokenSpecification(asnToken.getTokenSpecification()); return token; } private IDelayConfirmation convertDelayConfirmation(DelayConfirmation asnDocument, Date issuingDate) { IDelayConfirmation document = factory.createDelayConfirmation(); document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum().longValue(),asnDocument.getReferenceIA5())); document.setExtension(convertExtension(asnDocument.getExtension())); document.setInfoText(asnDocument.getInfoText()); if (asnDocument.getStationCodeTable()!=null){ document.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); } document.setStation(UicEncoderUtils.mapToString(asnDocument.getStationNum(),asnDocument.getStationIA5())); document.setArrivalDate(asnDocument.getPlannedArrivalDate()); document.setArrivalUTCoffset(asnDocument.getDepartureUTCOffset()); if (asnDocument.getConfirmationType() != null) { document.setConfirmationType(asnDocument.getConfirmationType().ordinal()); } if (asnDocument.getDelay() != null) { document.setDelay(asnDocument.getDelay().intValue()); } if (asnDocument.getTrainCancelled() != null) { document.setTrainCancelled(asnDocument.getTrainCancelled()); } else { document.setTrainCancelled(false); } if (asnDocument.getAffectedTickets() !=null && !asnDocument.getAffectedTickets().isEmpty()) { for (TicketLinkType asnTicketLink : asnDocument.getAffectedTickets()) { document.addLinkedTicket(convertTicketLink(asnTicketLink)); } } return document; } /** * Convert reservation. * * @param asnDocument the asn document * @param issuingDate the issuing date * @return the i reservation */ protected IReservation convertReservation(ReservationData asnDocument, Date issuingDate) { IReservation document = factory.createReservation(); document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); document.setProductId(UicEncoderUtils.mapToString(asnDocument.getProductIdNum(),asnDocument.getProductIdIA5())); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); document.setExtension(convertExtension(asnDocument.getExtension())); document.setInfoText(asnDocument.getInfoText()); if (asnDocument.getStationCodeTable()!=null){ document.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); } document.setFromStation(UicEncoderUtils.mapToString(asnDocument.getFromStationNum(),asnDocument.getFromStationIA5())); document.setToStation(UicEncoderUtils.mapToString(asnDocument.getToStationNum(),asnDocument.getToStationIA5())); document.setFromStationName(asnDocument.getFromStationNameUTF8()); document.setToStationName(asnDocument.getToStationNameUTF8()); document.setDepartureDate(asnDocument.getDepartureDate(issuingDate)); document.setArrivalDate(asnDocument.getArrivalDate(issuingDate)); document.setDepartureUTCoffset(asnDocument.getDepartureUTCOffset()); if (asnDocument.getArrivalUTCOffset() != null) { document.setArrivalUTCoffset(asnDocument.getArrivalUTCOffset()); } else { document.setArrivalUTCoffset(asnDocument.getDepartureUTCOffset()); } if(asnDocument.getClassCode()!=null){ document.setClassCode(ITravelClassType.valueOf(asnDocument.getClassCode().name())); } document.setCompartmentDetails(convertCompartmentDetails(asnDocument.getCompartmentDetails())); document.setLuggageRestriction(convertLuggageRestriction(asnDocument.getLuggage())); if (asnDocument.getNumberOfOverbooked() != null) { document.setNumberOfOverbooked(asnDocument.getNumberOfOverbooked().intValue()); } if (asnDocument.getNumberOfSupplements() != null) { document.setNumberOfSupplements(asnDocument.getNumberOfSupplements().intValue()); } if (asnDocument.getPlaces()!=null) { document.setPlaces(convertPlaces(asnDocument.getPlaces())); } if (asnDocument.getBicyclePlaces()!=null) { document.setBicyclePlaces(convertPlaces(asnDocument.getBicyclePlaces())); } document.setPriceType(IPriceTypeType.valueOf(asnDocument.getPriceType().name())); IServiceBrand serviceBrand = factory.createServiceBrand(); if (asnDocument.getServiceBrand()!=null){ serviceBrand.setServiceBrand(asnDocument.getServiceBrand().intValue()); } serviceBrand.setServiceBrandAbbreviation(asnDocument.getServiceBrandAbrUTF8()); serviceBrand.setServiceBrandDescription(asnDocument.getServiceBrandNameUTF8()); document.setServiceBrand(serviceBrand); if (asnDocument.getServiceLevel()!=null && asnDocument.getServiceLevel().length() != 0) { document.setServiceLevel(asnDocument.getServiceLevel()); } document.setTrain(UicEncoderUtils.mapToString(asnDocument.getTrainNum(), asnDocument.getTrainIA5())); if (asnDocument.getTypeOfSupplement()!=null) { document.setTypeOfSupplement(asnDocument.getTypeOfSupplement().intValue()); } if (asnDocument.getBerth()!=null && !asnDocument.getBerth().isEmpty()){ for (BerthDetailData asnBerth : asnDocument.getBerth()){ document.addBerth(convertBerth(asnBerth)); } } if (asnDocument.getCarrierNum()!=null && !asnDocument.getCarrierNum().isEmpty()){ for(Long carrier :asnDocument.getCarrierNum()){ document.addCarrier(carrier.toString()); } } if (asnDocument.getCarrierIA5()!=null && !asnDocument.getCarrierIA5().isEmpty()){ for(String carrier :asnDocument.getCarrierIA5()){ document.addCarrier(carrier); } } if (asnDocument.getTariff()!=null && !asnDocument.getTariff().isEmpty()){ for (TariffType asnTariff : asnDocument.getTariff()) { document.addTariff(convertTariff(asnTariff)); } } document.setPrice(asnDocument.getPrice()); if (asnDocument.getVatDetails() != null && !asnDocument.getVatDetails().isEmpty()){ for (VatDetailType vat : asnDocument.getVatDetails()) { document.addVatDetail(decodeVatDetail(vat)); } } return document; } /** * Convert car carriage. * * @param asnDocument the asn document * @param issuingDate the issuing date * @return the i car carriage reservation */ protected ICarCarriageReservation convertCarCarriage(CarCarriageReservationData asnDocument , Date issuingDate) { ICarCarriageReservation document = factory.createCarCarriageReservation(); document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); document.setProductId(UicEncoderUtils.mapToString(asnDocument.getProductIdNum(),asnDocument.getProductIdIA5())); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); document.setExtension(convertExtension(asnDocument.getExtension())); document.setInfoText(asnDocument.getInfoText()); if (asnDocument.getStationCodeTable()!=null){ document.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); } document.setFromStation(UicEncoderUtils.mapToString(asnDocument.getFromStationNum(),asnDocument.getFromStationIA5())); document.setToStation(UicEncoderUtils.mapToString(asnDocument.getToStationNum(),asnDocument.getToStationIA5())); document.setFromStationName(asnDocument.getFromStationNameUTF8()); document.setToStationName(asnDocument.getToStationNameUTF8()); document.setBeginLoading(asnDocument.getBeginLoadingDate(issuingDate)); document.setEndLoading(asnDocument.getEndLoadingDate(issuingDate)); document.setLoadingTimeUTCoffset(asnDocument.getLoadingUTCOffset()); if(asnDocument.getAttachedBicycles()!=null){ document.setAttachedBicycles(asnDocument.getAttachedBicycles().intValue()); } if (asnDocument.getAttachedBoats()!=null) { document.setAttachedBoats(asnDocument.getAttachedBoats().intValue()); } if(asnDocument.getAttachedSurfboards()!=null) { document.setAttachedSurfboards(asnDocument.getAttachedSurfboards().intValue()); } if (asnDocument.getBoatCategory()!=null){ document.setBoatCategory(asnDocument.getBoatCategory().intValue()); } if(asnDocument.getCarCategory()!=null){ document.setCarCategory(asnDocument.getCarCategory().intValue()); } if (asnDocument.getLoadingDeck()!=null){ document.setLoadingDeck(ILoadingDeckType.valueOf(asnDocument.getLoadingDeck().name())); } if(asnDocument.getLoadingListEntry()!=null){ document.setLoadingListEntry(asnDocument.getLoadingListEntry().intValue()); } if (asnDocument.getRoofRackHeight()!=null){ document.setRoofRackHeight(asnDocument.getRoofRackHeight().intValue()); } document.setNumberPlate(asnDocument.getNumberPlate()); document.setTrailerPlate(asnDocument.getTrailerPlate()); if(asnDocument.getRoofRackType()!=null){ document.setRoofRackType(IRoofRackType.valueOf(asnDocument.getRoofRackType().name())); } if(asnDocument.getTextileRoof()) { document.setTextileRoof(asnDocument.getTextileRoof()); } document.setCompartmentDetails(convertCompartmentDetails(asnDocument.getCompartmentDetails())); if (asnDocument.getCarrierNum()!=null && !asnDocument.getCarrierNum().isEmpty()){ for(Long carrier :asnDocument.getCarrierNum()){ document.addCarrier(carrier.toString()); } } if (asnDocument.getCarrierIA5()!=null && !asnDocument.getCarrierIA5().isEmpty()){ for(String carrier :asnDocument.getCarrierIA5()){ document.addCarrier(carrier); } } if (asnDocument.getCoach()!=null) { document.setCoach(asnDocument.getCoach()); } if (asnDocument.getPlace()!=null) { document.setPlace(asnDocument.getPlace()); } document.setPriceType(IPriceTypeType.valueOf(asnDocument.getPriceType().name())); IServiceBrand serviceBrand = factory.createServiceBrand(); if (asnDocument.getServiceBrand()!=null){ serviceBrand.setServiceBrand(asnDocument.getServiceBrand().intValue()); } serviceBrand.setServiceBrandAbbreviation(asnDocument.getServiceBrandAbrUTF8()); serviceBrand.setServiceBrandDescription(asnDocument.getServiceBrandNameUTF8()); document.setServiceBrand(serviceBrand); document.setTrain(UicEncoderUtils.mapToString(asnDocument.getTrainNum(), asnDocument.getTrainIA5())); if (asnDocument.getTariff()!=null){ document.setTariff(convertTariff(asnDocument.getTariff())); } document.setPrice(asnDocument.getPrice()); if (asnDocument.getVatDetails() != null && !asnDocument.getVatDetails().isEmpty()){ for (VatDetailType vat : asnDocument.getVatDetails()) { document.addVatDetail(decodeVatDetail(vat)); } } return null; } private IVatDetail decodeVatDetail(VatDetailType asnVat) { IVatDetail vat = factory.createVatDetail(); vat.setAmount(asnVat.getAmount()); if (asnVat.getPercentage() != null){ vat.setPercentage(asnVat.getPercentage().intValue()); } if (asnVat.getCountry() != null) { vat.setCountry(asnVat.getCountry().intValue()); } vat.setVatId(asnVat.getVatId()); return vat; } /** * Convert compartment details. * * @param asnDetails the asn details * @return the i compartment details */ protected ICompartmentDetails convertCompartmentDetails(CompartmentDetailsType asnDetails) { if (asnDetails == null) return null; ICompartmentDetails details = factory.createCompartmentDetails(); if (asnDetails.getCompartmentType()!=null) { details.setCompartmentType(asnDetails.getCompartmentType().intValue()); } if (asnDetails.getCoachType()!=null){ details.setCoachType(asnDetails.getCoachType().intValue()); } if (asnDetails.getSpecialAllocation()!=null) { details.setSpecialAllocation(asnDetails.getSpecialAllocation().intValue()); } details.setCoachTypeDescr(asnDetails.getCoachTypeDescr()); details.setCompartmentTypeDescr(asnDetails.getCompartmentTypeDescr()); details.setSpecialAllocationDescr(asnDetails.getSpecialAllocationDescr()); details.setPosition(ICompartmentPositionType.valueOf(asnDetails.getPosition().name())); return details; } /** * Convert places. * * @param asnPlaces the asn places * @return the i places */ protected IPlaces convertPlaces(PlacesType asnPlaces) { if (asnPlaces == null) return null; IPlaces places = factory.createPlaces(); places.setCoach(asnPlaces.getCoach()); places.setPlaceDescription(asnPlaces.getPlaceDescription()); if (asnPlaces.getPlaceNum()!=null && !asnPlaces.getPlaceNum().isEmpty()){ for (Long place: asnPlaces.getPlaceNum()){ places.addPlace(place.toString()); } } if (asnPlaces.getPlaceIA5()!=null && !asnPlaces.getPlaceIA5().isEmpty()){ for (String place: asnPlaces.getPlaceIA5()){ places.addPlace(place); } } places.setPlaceString(asnPlaces.getPlaceString()); return places; } /** * Convert berth. * * @param asnBerth the asn berth * @return the i berth */ protected IBerth convertBerth(BerthDetailData asnBerth) { if (asnBerth == null) return null; IBerth berth = factory.createBerth(); if (asnBerth.getGender()!= null) { berth.setGender(ICompartmentGenderType.valueOf(asnBerth.getGender().name())); } if (asnBerth.getNumberOfBerths()!=null) { berth.setNumberOfBerths(asnBerth.getNumberOfBerths().intValue()); } if (asnBerth.getBerthType()!=null){ berth.setType(IBerthTypeType.valueOf(asnBerth.getBerthType().name())); } return berth; } /** * Convert countermark. * * @param asnDocument the asn document * @param issuingDate the issuing date * @return the i counter mark */ protected ICounterMark convertCountermark(CountermarkData asnDocument , Date issuingDate) { ICounterMark document = factory.createCounterMark(); document.setProductId(UicEncoderUtils.mapToString(asnDocument.getProductIdNum(),asnDocument.getProductIdIA5())); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); if(asnDocument.getClassCode()!=null){ document.setClassCode(ITravelClassType.valueOf(asnDocument.getClassCode().name())); } document.setValidFrom(asnDocument.getValidFromDate(issuingDate)); document.setValidUntil(asnDocument.getValidUntilDate(issuingDate)); document.setValidFromUTCoffset(asnDocument.getValidFromUTCOffset()); if (asnDocument.getValidUntilUTCOffset() != null) { document.setValidUntilUTCoffset(asnDocument.getValidUntilUTCOffset()); } else { document.setValidUntilUTCoffset(asnDocument.getValidFromUTCOffset()); } document.setExtension(convertExtension(asnDocument.getExtension())); document.setInfoText(asnDocument.getInfoText()); document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); document.setTicketReference(UicEncoderUtils.mapToString(asnDocument.getTicketReferenceNum(),asnDocument.getTicketReferenceIA5())); document.setFromStation(UicEncoderUtils.mapToString(asnDocument.getFromStationNum(),asnDocument.getFromStationIA5())); document.setToStation(UicEncoderUtils.mapToString(asnDocument.getToStationNum(),asnDocument.getToStationIA5())); document.setFromStationName(asnDocument.getFromStationNameUTF8()); document.setToStationName(asnDocument.getToStationNameUTF8()); document.setValidRegionDesc(asnDocument.getValidRegionDesc()); if (asnDocument.getValidRegion()!= null && !asnDocument.getValidRegion().isEmpty()) { for (RegionalValidityType validRegion :asnDocument.getValidRegion()){ document.addValidRegionList(convertValidRegion(validRegion, issuingDate)); } } document.setReturnDescription(convertReturnDescription(asnDocument.getReturnDescription(), issuingDate)); if(asnDocument.getReturnIncluded()!=null){ document.setReturnIncluded(asnDocument.getReturnIncluded()); } else { document.setReturnIncluded(false); } document.setGroupName(asnDocument.getGroupName()); if (asnDocument.getNumberOfCountermark() != null) { document.setNumberOfCountermark(asnDocument.getNumberOfCountermark().intValue()); } if (asnDocument.getTotalOfCountermarks() != null) { document.setTotalOfCountermarks(asnDocument.getTotalOfCountermarks().intValue()); } return document; } /** * Convert return description. * * @param asnReturnRoute the asn return route * @param issuingDate the issuing date * @return the i return route description */ protected IReturnRouteDescription convertReturnDescription(ReturnRouteDescriptionType asnReturnRoute, Date issuingDate) { if (asnReturnRoute == null) return null; IReturnRouteDescription route = factory.createReturnRouteDescription(); route.setFromStation(UicEncoderUtils.mapToString(asnReturnRoute.getFromStationNum(),asnReturnRoute.getFromStationIA5())); route.setToStation(UicEncoderUtils.mapToString(asnReturnRoute.getToStationNum(),asnReturnRoute.getToStationIA5())); route.setFromStationName(asnReturnRoute.getFromStationNameUTF8()); route.setToStationName(asnReturnRoute.getToStationNameUTF8()); route.setValidRegionDesc(asnReturnRoute.getValidReturnRegionDesc()); if (asnReturnRoute.getValidReturnRegion()!= null && !asnReturnRoute.getValidReturnRegion().isEmpty()) { for (RegionalValidityType validRegion :asnReturnRoute.getValidReturnRegion()){ route.addValidRegionList(convertValidRegion(validRegion, issuingDate)); } } return route; } /** * Convert luggage restriction. * * @param asnLuggage the asn luggage * @return the i luggage restriction */ protected ILuggageRestriction convertLuggageRestriction(LuggageRestrictionType asnLuggage) { if (asnLuggage == null) return null; ILuggageRestriction luggage = factory.createLuggageRestriction(); if (asnLuggage.getMaxHandLuggagePieces()!=null){ luggage.setMaxHandLuggagePieces(asnLuggage.getMaxHandLuggagePieces().intValue()); } if (asnLuggage.getMaxNonHandLuggagePieces()!=null){ luggage.setMaxNonHandLuggagePieces(asnLuggage.getMaxNonHandLuggagePieces().intValue()); } if (asnLuggage.getRegisteredLuggage()!= null &&!asnLuggage.getRegisteredLuggage().isEmpty()){ for (RegisteredLuggageType rl: asnLuggage.getRegisteredLuggage()){ luggage.addRegisteredLuggage(convertRegisteredLuggage(rl)); } } return luggage; } /** * Convert registered luggage. * * @param rl the rl * @return the i registered luggage */ protected IRegisteredLuggage convertRegisteredLuggage(RegisteredLuggageType rl) { if (rl == null) return null; IRegisteredLuggage luggage= factory.createRegisteredLuggage(); if (rl.getMaxSize()!=null){ if (rl.getMaxSize()!=null) { luggage.setMaxSize(rl.getMaxSize().intValue()); } } if (rl.getMaxWeight()!=null){ if(rl.getMaxWeight()!=null){ luggage.setMaxWeight(rl.getMaxWeight().intValue()); } } luggage.setRegistrationId(rl.getRegistrationId()); return luggage; } /** * Convert open ticket. * * @param asnDocument the asn document * @param issuingDate the issuing date * @return the i open ticket */ protected IOpenTicket convertOpenTicket(OpenTicketData asnDocument , Date issuingDate) { IOpenTicket document = factory.createOpenTicket(); if(asnDocument.getClassCode()!=null){ document.setClassCode(ITravelClassType.valueOf(asnDocument.getClassCode().name())); } document.setValidFrom(asnDocument.getValidFromDate(issuingDate)); document.setValidUntil(asnDocument.getValidUntilDate(issuingDate)); document.setValidFromUTCoffset(asnDocument.getValidFromUTCOffset()); if (asnDocument.getValidUntilUTCOffset() != null) { document.setValidUntilUTCoffset(asnDocument.getValidUntilUTCOffset()); } else { document.setValidUntilUTCoffset(asnDocument.getValidFromUTCOffset()); } document.setExtension(convertExtension(asnDocument.getExtension())); document.setInfoText(asnDocument.getInfoText()); document.setProductId(UicEncoderUtils.mapToString(asnDocument.getProductIdNum(),asnDocument.getProductIdIA5())); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); if (asnDocument.getExcludedServiceBrands()!=null && !asnDocument.getExcludedServiceBrands().isEmpty()){ for(Long number :asnDocument.getExcludedServiceBrands()){ document.addExcludedServiceBrand(number.intValue()); } } if (asnDocument.getCarriersNum()!=null && !asnDocument.getCarriersNum().isEmpty()){ for(Long carrier :asnDocument.getCarriersNum()){ document.addIncludedCarrier(carrier.toString()); } } if (asnDocument.getCarriersIA5()!=null && !asnDocument.getCarriersIA5().isEmpty()){ for(String carrier :asnDocument.getCarriersIA5()){ document.addIncludedCarrier(carrier); } } if (asnDocument.getIncludedServiceBrands()!=null && !asnDocument.getIncludedServiceBrands().isEmpty()){ for(Long number :asnDocument.getIncludedServiceBrands()){ document.addIncludedServiceBrand(number.intValue()); } } if (asnDocument.getTariffs()!=null && !asnDocument.getTariffs().isEmpty()){ for(TariffType asnTariff :asnDocument.getTariffs()){ document.addTariff(convertTariff(asnTariff)); } } if (asnDocument.getStationCodeTable()!=null){ document.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); } document.setFromStation(UicEncoderUtils.mapToString(asnDocument.getFromStationNum(),asnDocument.getFromStationIA5())); document.setToStation(UicEncoderUtils.mapToString(asnDocument.getToStationNum(),asnDocument.getToStationIA5())); document.setFromStationName(asnDocument.getFromStationNameUTF8()); document.setToStationName(asnDocument.getToStationNameUTF8()); document.setValidRegionDesc(asnDocument.getValidRegionDesc()); if (asnDocument.getValidRegion()!= null && !asnDocument.getValidRegion().isEmpty()) { for (RegionalValidityType validRegion :asnDocument.getValidRegion()){ document.addValidRegionList(convertValidRegion(validRegion, issuingDate)); } } if (asnDocument.getIssuerAutorizationId() != null) { document.setAuthorizationCode(asnDocument.getIssuerAutorizationId().intValue()); } if (asnDocument.getExtIssuerId() != null) { document.setExternalIssuer(asnDocument.getExtIssuerId().intValue()); } document.setLuggageRestriction(convertLuggageRestriction(asnDocument.getLuggage())); document.setReturnDescription(convertReturnDescription(asnDocument.getReturnDescription(), issuingDate)); if(asnDocument.getReturnIncluded()!=null){ document.setReturnIncluded(asnDocument.getReturnIncluded()); } if (asnDocument.getActivatedDay()!=null && !asnDocument.getActivatedDay().isEmpty()) { document.getActivatedDays().addAll(asnDocument.getActivatedDays(issuingDate)); } if (asnDocument.getIncludedAddOns()!= null && !asnDocument.getIncludedAddOns().isEmpty()) { for (IncludedOpenTicketType asnAddOn :asnDocument.getIncludedAddOns()) { IIncludedOpenTicket addOn = convertIncludedOpenTicket(asnAddOn, issuingDate, document.getClassCode()); if (addOn != null) { document.addIncludedAddOn(addOn); } } } document.setPrice(asnDocument.getPrice()); if (asnDocument.getVatDetails() != null && !asnDocument.getVatDetails().isEmpty()){ for (VatDetailType vat : asnDocument.getVatDetails()) { document.addVatDetail(decodeVatDetail(vat)); } } return document; } /** * Convert included open ticket. * * @param asnDocument the asn document * @param issuingDate the issuing date * @param classCode the class code * @return the simple included open ticket */ private IIncludedOpenTicket convertIncludedOpenTicket( IncludedOpenTicketType asnDocument, Date issuingDate,ITravelClassType classCode) { IIncludedOpenTicket document = factory.createIncludedOpenTicket(); if(asnDocument.getClassCode()!=null){ document.setClassCode(ITravelClassType.valueOf(asnDocument.getClassCode().name())); } else { document.setClassCode(classCode); } document.setValidFrom(asnDocument.getValidFromDate(issuingDate)); document.setValidUntil(asnDocument.getValidUntilDate(issuingDate)); document.setValidFromUTCoffset(asnDocument.getValidFromUTCOffset()); if (asnDocument.getValidUntilUTCOffset() != null) { document.setValidUntilUTCoffset(asnDocument.getValidUntilUTCOffset()); } else { document.setValidUntilUTCoffset(asnDocument.getValidFromUTCOffset()); } document.setExtension(convertExtension(asnDocument.getExtension())); document.setInfoText(asnDocument.getInfoText()); document.setProductId(UicEncoderUtils.mapToString(asnDocument.getProductIdNum(),asnDocument.getProductIdIA5())); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); if (asnDocument.getExcludedServiceBrands()!=null && !asnDocument.getExcludedServiceBrands().isEmpty()){ for(Long number :asnDocument.getExcludedServiceBrands()){ document.addExcludedServiceBrand(number.intValue()); } } if (asnDocument.getIncludedCarriersNum()!=null && !asnDocument.getIncludedCarriersNum().isEmpty()){ for(Long carrier :asnDocument.getIncludedCarriersNum()){ document.addIncludedCarrier(carrier.toString()); } } if (asnDocument.getIncludedCarriersIA5()!=null && !asnDocument.getIncludedCarriersIA5().isEmpty()){ for(String carrier :asnDocument.getIncludedCarriersIA5()){ document.addIncludedCarrier(carrier); } } if (asnDocument.getIncludedServiceBrands()!=null && !asnDocument.getIncludedServiceBrands().isEmpty()){ for(Long number :asnDocument.getIncludedServiceBrands()){ document.addIncludedServiceBrand(number.intValue()); } } if (asnDocument.getTariffs()!=null && !asnDocument.getTariffs().isEmpty()){ for(TariffType asnTariff :asnDocument.getTariffs()){ document.addTariff(convertTariff(asnTariff)); } } if (asnDocument.getStationCodeTable()!=null){ document.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); } if (asnDocument.getValidRegion()!= null && !asnDocument.getValidRegion().isEmpty()) { for (RegionalValidityType validRegion :asnDocument.getValidRegion()){ document.addValidRegionList(convertValidRegion(validRegion, issuingDate)); } } if (asnDocument.getIssuerAutorizationId()!=null){ document.setAuthorizationCode(asnDocument.getIssuerAutorizationId().intValue()); } if (asnDocument.getExternalIssuerId()!=null){ document.setExternalIssuer(asnDocument.getExternalIssuerId().intValue()); } return document; } /** * Convert station passage. * * @param asnDocument the asn document * @param issuingDate the issuing date * @return the i station passage */ protected IStationPassage convertStationPassage(StationPassageData asnDocument , Date issuingDate) { IStationPassage document = factory.createStationPassage(); document.setValidFrom(asnDocument.getValidFromDate(issuingDate)); document.setValidUntil(asnDocument.getValidUntilDate(issuingDate)); document.setValidFromUTCoffset(asnDocument.getValidFromUTCOffset()); if (asnDocument.getValidUntilUTCOffset() != null) { document.setValidUntilUTCoffset(asnDocument.getValidUntilUTCOffset()); } else { document.setValidUntilUTCoffset(asnDocument.getValidFromUTCOffset()); } document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); if (asnDocument.getNumberOfDaysValid()!=null) { document.setNumberOfdaysAllowed(asnDocument.getNumberOfDaysValid().intValue()); } if (asnDocument.getStationNum()!=null && !asnDocument.getStationNum().isEmpty()){ for (Long station : asnDocument.getStationNum()) { if (station != null) { document.addStation(station.toString()); } } } if (asnDocument.getStationIA5()!=null && !asnDocument.getStationIA5().isEmpty()){ for (String station : asnDocument.getStationIA5()) { document.addStation(station); } } document.setProductId(UicEncoderUtils.mapToString(asnDocument.getProductIdNum(),asnDocument.getProductIdIA5())); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); document.setProductName(asnDocument.getProductName()); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); if (asnDocument.getStationNameUTF8()!= null && asnDocument.getStationNameUTF8().isEmpty() ) { for (String name : asnDocument.getStationNameUTF8()) { document.addStation(name); } } if (asnDocument.getStationCodeTable()!=null){ document.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); } document.setExtension(convertExtension(asnDocument.getExtension())); if (asnDocument.getAreaCodeIA5() != null && !asnDocument.getAreaCodeIA5().isEmpty()) { for (String code : asnDocument.getAreaCodeIA5()) { document.addAreaCode(code); } } if (asnDocument.getAreaCodeNum() != null && !asnDocument.getAreaCodeNum().isEmpty()) { for (Long code : asnDocument.getAreaCodeNum()) { if (code != null) { document.addAreaCode(code.toString()); } } } if (asnDocument.getAreaNameUTF8() != null && !asnDocument.getAreaNameUTF8().isEmpty()) { for (String code : asnDocument.getAreaNameUTF8()) { document.addAreaName(code); } } return document; } /** * Convert valid region. * * @param asnRegion the asn region * @param issuingDate the issuing date * @return the i regional validity */ protected IRegionalValidity convertValidRegion(RegionalValidityType asnRegion, Date issuingDate) { if (asnRegion == null) return null; if (asnRegion.getLines()!=null){ return convertLine(asnRegion.getLines()); } if (asnRegion.getPolygone()!=null){ return convertPolygone(asnRegion.getPolygone()); } if (asnRegion.getTrainLink()!=null){ return convertTrainLink(asnRegion.getTrainLink(),issuingDate); } if (asnRegion.getViaStations()!=null){ return convertViaStation(asnRegion.getViaStations()); } if (asnRegion.getZones()!=null){ return convertZone(asnRegion.getZones()); } return null; } /** * Convert parking ground. * * @param asnDocument the asn document * @param issuingDate the issuing date * @return the i parking ground */ protected IParkingGround convertParkingGround(ParkingGroundData asnDocument , Date issuingDate) { IParkingGround document = factory.createParkingGround(); document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); document.setProductId(UicEncoderUtils.mapToString(asnDocument.getProductIdNum(),asnDocument.getProductIdIA5())); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); document.setAccessCode(asnDocument.getAccessCode()); document.setLocation(asnDocument.getLocation()); document.setExtension(convertExtension(asnDocument.getExtension())); document.setNumberPlate(asnDocument.getNumberPlate()); document.setEntryTrack(asnDocument.getEntryTrack()); document.setFromParkingDate(asnDocument.getFromParkingDate(issuingDate)); document.setToParkingDate(asnDocument.getToParkingDate(issuingDate)); document.setParkingGroundId(asnDocument.getParkingGroundId()); document.setSpecialInformation(asnDocument.getSpecialInformation()); if (asnDocument.getStationCodeTable()!=null){ document.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); } document.setStation(UicEncoderUtils.mapToString(asnDocument.getStationNum(),asnDocument.getStationIA5())); document.setPrice(asnDocument.getPrice()); if (asnDocument.getVatDetails() != null && !asnDocument.getVatDetails().isEmpty()){ for (VatDetailType vat : asnDocument.getVatDetails()) { document.addVatDetail(decodeVatDetail(vat)); } } return document; } /** * Convert via station. * * @param asnDocument the asn via * @return the i via station */ protected IViaStation convertViaStation(ViaStationType asnDocument) { if (asnDocument == null) return null; IViaStation via = factory.createViaStation(); if (asnDocument.getBorder()!=null) { via.setBorder(asnDocument.getBorder()); } if (asnDocument.getRouteId() != null) { via.setRouteId(asnDocument.getRouteId().intValue()); } if (asnDocument.getStationCodeTable()!=null){ via.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); } if (asnDocument.getStationNum() != null) { via.setStation(asnDocument.getStationNum().toString()); } else if (asnDocument.getStationIA5() != null) { via.setStation(asnDocument.getStationIA5()); } if (asnDocument.getCarriersNum()!=null && !asnDocument.getCarriersNum().isEmpty()){ for(Long carrier :asnDocument.getCarriersNum()){ via.addCarrier(carrier.toString()); } } if (asnDocument.getCarriersIA5()!=null && !asnDocument.getCarriersIA5().isEmpty()){ for(String carrier :asnDocument.getCarriersIA5()){ via.addCarrier(carrier); } } if (asnDocument.getRoute()!= null && !asnDocument.getRoute().isEmpty()) { for ( ViaStationType routeVia: asnDocument.getRoute()) { via.addRouteStation(convertViaStation(routeVia)); } } if (asnDocument.getAlternativeRoutes()!= null && !asnDocument.getAlternativeRoutes().isEmpty()) { for ( ViaStationType routeVia: asnDocument.getAlternativeRoutes()) { via.addRouteStation(convertViaStation(routeVia)); } } return via; } /** * Convert train link. * * @param asnTrainLink the asn train link * @param issuingDate the issuing date * @return the i regional validity */ protected IRegionalValidity convertTrainLink(TrainLinkType asnTrainLink, Date issuingDate) { ITrainLink trainLink = factory.createTrainLink(); trainLink.setTrain(UicEncoderUtils.mapToString(asnTrainLink.getTrainNum(), asnTrainLink.getTrainIA5())); trainLink.setFromStation(UicEncoderUtils.mapToString(asnTrainLink.getFromStationNum(),asnTrainLink.getFromStationIA5())); trainLink.setToStation(UicEncoderUtils.mapToString(asnTrainLink.getToStationNum(),asnTrainLink.getToStationIA5())); trainLink.setFromStationName(asnTrainLink.getFromStationName()); trainLink.setToStationName(asnTrainLink.getToStationName()); trainLink.setDepartureDateTime(asnTrainLink.getDepartureDate(issuingDate)); return trainLink; } /** * Convert zone. * * @param asnDocument the asn zone * @return the i regional validity */ protected IRegionalValidity convertZone(ZoneType asnDocument) { if (asnDocument == null) return null; IZone zone = factory.createZone(); zone.setBinaryZoneId(asnDocument.getBinaryZoneId()); zone.setCarrier(UicEncoderUtils.mapToString(asnDocument.getCarrierNum(),asnDocument.getCarrierIA5())); if (asnDocument.getCity() != null) { zone.setCity(asnDocument.getCity().intValue()); } if (asnDocument.getStationCodeTable()!=null){ zone.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); } zone.setEntryStation(UicEncoderUtils.mapToString(asnDocument.getEntryStationNum(),asnDocument.getEntryStationIA5())); zone.setTerminatingStation(UicEncoderUtils.mapToString(asnDocument.getTerminatingStationNum(),asnDocument.getTerminatingStationIA5())); zone.setNUTScode(asnDocument.getNutsCode()); return zone; } /** * Convert polygone. * * @param asnPolygone the asn polygone * @return the i regional validity */ protected IRegionalValidity convertPolygone(PolygoneType asnPolygone) { if (asnPolygone == null) return null; IPolygone polygone = factory.createPolygone(); IGeoCoordinate firstEdge = convertGeoCoordinate(asnPolygone.getFirstEdge()); if (firstEdge == null) return null; if (asnPolygone.getEdges()!=null && !asnPolygone.getEdges().isEmpty()) { for (DeltaCoordinates asnEdge :asnPolygone.getEdges()){ IGeoCoordinate edge = firstEdge.clone(); try { edge.addLongitude(asnEdge.getLongitude().longValue()); edge.addLatitude(asnEdge.getLatitude().longValue()); } catch (Exception e) { } polygone.addEdge(edge); } } return polygone; } /** * Convert line. * * @param asnDocument the asn line * @return the i regional validity */ protected IRegionalValidity convertLine(LineType asnDocument) { if (asnDocument == null) return null; ILine line = factory.createLine(); line.setBinaryZoneId(asnDocument.getBinaryZoneId()); line.setCarrier(UicEncoderUtils.mapToString(asnDocument.getCarrierNum(),asnDocument.getCarrierIA5())); if (asnDocument.getCity()!=null) { line.setCity(asnDocument.getCity().intValue()); } if (asnDocument.getStationCodeTable()!=null){ line.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); } line.setEntryStation(UicEncoderUtils.mapToString(asnDocument.getEntryStationNum(),asnDocument.getEntryStationIA5())); line.setTerminatingStation(UicEncoderUtils.mapToString(asnDocument.getTerminatingStationNum(),asnDocument.getTerminatingStationIA5())); if (asnDocument.getLineId()!=null && !asnDocument.getLineId().isEmpty()){ for (Long lineId : asnDocument.getLineId()) { line.addLineId(lineId.intValue()); } } return line; } /** * Convert tariff. * * @param asnTariff the asn tariff * @return the i tariff */ protected ITariff convertTariff(TariffType asnTariff) { if (asnTariff== null) return null; ITariff tariff = factory.createTariff(); if (asnTariff.getAgeAbove() != null) { tariff.setAgeAbove(asnTariff.getAgeAbove().intValue()); } if (asnTariff.getAgeBelow() != null) { tariff.setAgeBelow(asnTariff.getAgeBelow().intValue()); } if(asnTariff.getNumberOfPassengers()!=null){ tariff.setNumberOfPassengers(asnTariff.getNumberOfPassengers().intValue()); } if (asnTariff.getSeriesDataDetails() != null) { tariff.setSeriesDataDetails(convertSeriesDataDetails(asnTariff.getSeriesDataDetails())); } if (asnTariff.getPassengerType()!=null) { tariff.setPassengerType(IPassengerType.valueOf(asnTariff.getPassengerType().name())); } if(asnTariff.getRestrictedToCountryOfResidence()!=null){ tariff.setRestrictedToCountryOfResidence(asnTariff.getRestrictedToCountryOfResidence()); } if (asnTariff.getRestrictedToRouteSection()!=null){ tariff.setRestrictedToRouteSection(convertRouteSection(asnTariff.getRestrictedToRouteSection())); } tariff.setTariffDescription(asnTariff.getTariffDesc()); tariff.setTariffId(UicEncoderUtils.mapToString(asnTariff.getTariffIdNum(),asnTariff.getTariffIdIA5())); if (asnTariff.getTraverlerid()!= null && !asnTariff.getTraverlerid().isEmpty() ) { for (Long number : asnTariff.getTraverlerid()){ tariff.addTravelerId(number.intValue()); } } if (asnTariff.getReductionCard()!=null && !asnTariff.getReductionCard().isEmpty()){ for(CardReferenceType card : asnTariff.getReductionCard()){ tariff.addReductionCard(convertCardReference(card)); } } return tariff; } private ISeriesDataDetails convertSeriesDataDetails(SeriesDetailType asnDetails) { if (asnDetails == null) return null; ISeriesDataDetails details = factory.createSeriesDataDetails(); if (asnDetails.getSeries() != null) { details.setSeries(asnDetails.getSeries().intValue()); } if (asnDetails.getSupplyingCarrier() != null) { details.setSupplyingCarrier(asnDetails.getSupplyingCarrier().intValue()); } if (asnDetails.getOfferIdentification() != null) { details.setOfferIdentification(asnDetails.getOfferIdentification().intValue()); } return details; } /** * Convert route section. * * @param asnDocument the asn document * @return the i route section */ protected IRouteSection convertRouteSection(RouteSectionType asnDocument) { if (asnDocument == null) return null; IRouteSection document = factory.createRouteSection(); if (asnDocument.getStationCodeTable()!=null){ document.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); } document.setFromStation(UicEncoderUtils.mapToString(asnDocument.getFromStationNum(),asnDocument.getFromStationIA5())); document.setToStation(UicEncoderUtils.mapToString(asnDocument.getToStationNum(),asnDocument.getToStationIA5())); document.setFromStationName(asnDocument.getFromStationNameUTF8()); document.setToStationName(asnDocument.getToStationNameUTF8()); return document; } /** * Convert fip ticket. * * @param asnDocument the asn document * @param issuingDate the issuing date * @return the i fip ticket */ protected IFipTicket convertFipTicket(FIPTicketData asnDocument , Date issuingDate) { if (asnDocument == null) return null; IFipTicket document = factory.createFipTicket(); if(asnDocument.getClassCode()!=null){ document.setClassCode(ITravelClassType.valueOf(asnDocument.getClassCode().name())); } document.setValidFrom(asnDocument.getValidFromDate(issuingDate)); document.setValidUntil(asnDocument.getValidUntilDate(issuingDate)); document.setProductId(UicEncoderUtils.mapToString(asnDocument.getProductIdNum(),asnDocument.getProductIdIA5())); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); if (asnDocument.getActivatedDay() != null && !asnDocument.getActivatedDay().isEmpty()) { document.getActivatedDays().addAll(asnDocument.getActivatedDays(issuingDate)); } if(asnDocument.getIncludesSupplements()!=null) { document.setIncludesSupplements(asnDocument.getIncludesSupplements()); } if(asnDocument.getNumberOfTravelDays()!=null){ document.setNumberOfTravelDates(asnDocument.getNumberOfTravelDays().intValue()); } document.setExtension(convertExtension(asnDocument.getExtension())); return document; } /** * Convert pass. * * @param asnDocument the asn document * @param issuingDate the issuing date * @return the i pass */ protected IPass convertPass(PassData asnDocument, Date issuingDate) { if (asnDocument == null) return null; IPass document = factory.createPass(); if(asnDocument.getClassCode()!=null){ document.setClassCode(ITravelClassType.valueOf(asnDocument.getClassCode().name())); } document.setValidFrom(asnDocument.getValidFromDate(issuingDate)); document.setValidFromUTCoffset(asnDocument.getValidFromUTCOffset()); document.setValidUntil(asnDocument.getValidUntilDate(issuingDate)); document.setValidUntilUTCoffset(asnDocument.getValidUntilUTCOffset()); if (asnDocument.getActivatedDay() != null && !asnDocument.getActivatedDay().isEmpty()) { document.getActivatedDays().addAll(asnDocument.getActivatedDays(issuingDate)); } document.setExtension(convertExtension(asnDocument.getExtension())); document.setInfoText(asnDocument.getInfoText()); document.setProductId(UicEncoderUtils.mapToString(asnDocument.getProductIdNum(),asnDocument.getProductIdIA5())); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); if (asnDocument.getNumberOfDaysOfTravel() != null) { document.setNumberOfDaysOfTravel(asnDocument.getNumberOfDaysOfTravel().intValue()); } if (asnDocument.getNumberOfPossibleTrips() != null) { document.setNumberOfPossibleTrips(asnDocument.getNumberOfPossibleTrips().intValue()); } document.setPassDescription(asnDocument.getPassDescription()); if(asnDocument.getPassType()!=null){ document.setPassType(asnDocument.getPassType().intValue()); } if (asnDocument.getCountries()!=null && !asnDocument.getCountries().isEmpty()){ for(Long number :asnDocument.getCountries()){ document.addCountry(number.intValue()); } } if (asnDocument.getExcludedServiceBrands()!=null && !asnDocument.getExcludedServiceBrands().isEmpty()){ for(Long number :asnDocument.getExcludedServiceBrands()){ document.addExcludedServiceBrand(number.intValue()); } } if (asnDocument.getIncludedCarriersNum()!=null && !asnDocument.getIncludedCarriersNum().isEmpty()){ for(Long carrier :asnDocument.getIncludedCarriersNum()){ document.addIncludedCarrier(carrier.toString()); } } if (asnDocument.getIncludedCarriersIA5()!=null && !asnDocument.getIncludedCarriersIA5().isEmpty()){ for(String carrier :asnDocument.getIncludedCarriersIA5()){ document.addIncludedCarrier(carrier); } } if (asnDocument.getExcludedCarriersNum()!=null && !asnDocument.getExcludedCarriersNum().isEmpty()){ for(Long carrier :asnDocument.getExcludedCarriersNum()){ document.addExcludedCarrier(carrier.toString()); } } if (asnDocument.getExcludedCarriersIA5()!=null && !asnDocument.getExcludedCarriersIA5().isEmpty()){ for(String carrier :asnDocument.getExcludedCarriersIA5()){ document.addExcludedCarrier(carrier); } } if (asnDocument.getIncludedServiceBrands()!=null && !asnDocument.getIncludedServiceBrands().isEmpty()){ for(Long number :asnDocument.getIncludedServiceBrands()){ document.addIncludedServiceBrand(number.intValue()); } } if (asnDocument.getTariffs()!=null && !asnDocument.getTariffs().isEmpty()){ for(TariffType asnTariff :asnDocument.getTariffs()){ document.addTariff(convertTariff(asnTariff)); } } if (asnDocument.getValidRegion()!=null && !asnDocument.getValidRegion().isEmpty()){ for(RegionalValidityType asnRegion :asnDocument.getValidRegion()){ document.addValidRegion(convertValidRegion(asnRegion, issuingDate)); } } if (asnDocument.getValidityPeriodDetails() != null) { document.setValidityDetails(convertValidityDetails(asnDocument.getValidityPeriodDetails(), issuingDate)); } document.setPrice(asnDocument.getPrice()); if (asnDocument.getVatDetails() != null && !asnDocument.getVatDetails().isEmpty()){ for (VatDetailType vat : asnDocument.getVatDetails()) { document.addVatDetail(decodeVatDetail(vat)); } } return document; } private IValidityDetails convertValidityDetails(ValidityPeriodDetailType asnDetails, Date issuingDate) { if (asnDetails == null) return null; IValidityDetails details = factory.createValidityDetails(); if (asnDetails.getExcludedTimeRange()!= null && !asnDetails.getExcludedTimeRange().isEmpty()) { ITimeRange range = factory.createTimeRange(); for (TimeRangeType asnRange : asnDetails.getExcludedTimeRange() ) { if (asnRange.getFromTime() != null) { range.setFromTime(asnRange.getFromTime().intValue()); } if (asnRange.getUntilTime() != null) { range.setUntilTime(asnRange.getUntilTime().intValue()); } details.addTimeRanges(range); } } if (asnDetails.getValidityPeriod()!= null && !asnDetails.getValidityPeriod().isEmpty()) { IValidityRange range = factory.createValidityRange(); for (ValidityPeriodType asnRange : asnDetails.getValidityPeriod() ) { range.setFromDate(asnRange.getValidFromDate(issuingDate)); range.setUntilDate(asnRange.getValidUntilDate(issuingDate)); range.setValidFromUTCoffset(asnRange.getValidFromUTCOffset()); if (asnRange.getValidUntilUTCOffset() != null) { range.setValidUntilUTCoffset(asnRange.getValidUntilUTCOffset()); } else { range.setValidUntilUTCoffset(asnRange.getValidFromUTCOffset()); } details.addValidityRanges(range); } } return details; } /** * Convert voucher. * * @param asnDocument the asn document * @param issuingDate the issuing date * @return the i voucher */ protected IVoucher convertVoucher(VoucherData asnDocument , Date issuingDate) { if (asnDocument == null) return null; IVoucher document = factory.createVoucher(); document.setValidFrom(asnDocument.getValidFrom()); document.setValidUntil(asnDocument.getValidUntil()); document.setInfoText(asnDocument.getInfoText()); document.setProductId(UicEncoderUtils.mapToString(asnDocument.getProductIdNum(),asnDocument.getProductIdIA5())); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); if (asnDocument.getValue()!=null) { document.setAmount(asnDocument.getValue().intValue()); } if (asnDocument.getType()!= null) { document.setType(asnDocument.getType().intValue()); } document.setExtension(convertExtension(asnDocument.getExtension())); return document; } /** * Convert customer card. * * @param asnDocument the asn card * @param issuingDate the issuing date * @return the i customer card */ protected ICustomerCard convertCustomerCard(CustomerCardData asnDocument, Date issuingDate ) { if (asnDocument == null) return null; ICustomerCard card = factory.createCustomerCard(); card.setCardId(UicEncoderUtils.mapToString(asnDocument.getCardIdNum(), asnDocument.getCardIdIA5())); if (asnDocument.getCardType()!= null) { card.setCardType(asnDocument.getCardType().intValue()); } card.setCardTypeDescr(asnDocument.getCardTypeDescr()); if(asnDocument.getClassCode()!=null){ card.setClassCode(ITravelClassType.valueOf(asnDocument.getClassCode().name())); } if(asnDocument.getCustomer()!=null) { card.setCustomer(convertTraveler(asnDocument.getCustomer())); } if (asnDocument.getCustomerStatus()!=null) { card.setCustomerStatus(asnDocument.getCustomerStatus().intValue()); } card.setCustomerStatusDescr(asnDocument.getCustomerStatusDescr()); card.setValidFrom(asnDocument.getValidFromDate()); card.setValidUntil(asnDocument.getValidUntilDate()); if (asnDocument.getIncludedServices() != null && !asnDocument.getIncludedServices().isEmpty()){ for (Long service: asnDocument.getIncludedServices()){ card.addIncludedService(new Integer(service.intValue())); } } return card; } /** * Convert document extension. * * @param extension the extension * @return the i document extension */ protected IDocumentExtension convertDocumentExtension(ExtensionData asnExtension) { if (asnExtension == null) return null; IDocumentExtension documentExtension = factory.createDocumentExtension(); documentExtension.setId(asnExtension.getExtensionId()); documentExtension.setBinarydata(asnExtension.getExtensionData()); return documentExtension; } /** * Populate traveler details. * * @param asnTravelerDetails the asn traveler details * @param travelerDetails the traveler details */ protected void populateTravelerDetails(TravelerData asnTravelerDetails,ITravelerDetail travelerDetails) { if (asnTravelerDetails == null) return; travelerDetails.setGroupName(asnTravelerDetails.getGroupName()); travelerDetails.setPreferredLanguage(asnTravelerDetails.getPreferedLanguage()); if (asnTravelerDetails.getTraveler() != null && !asnTravelerDetails.getTraveler().isEmpty() ) { for ( TravelerType asnTraveler : asnTravelerDetails.getTraveler() ){ travelerDetails.addTraveler(convertTraveler(asnTraveler)); } } } /** * Convert traveler. * * @param asnTraveler the asn traveler * @return the i traveler */ protected ITraveler convertTraveler(TravelerType asnTraveler) { if (asnTraveler == null) return null; ITraveler traveler = factory.createTraveler(); if (asnTraveler.getCountryOfResidence() != null){ traveler.setCountryOfResidence(asnTraveler.getCountryOfResidence().intValue()); } if (asnTraveler.getCountryOfPassport() != null) { traveler.setPassportCountry(asnTraveler.getCountryOfPassport().intValue()); } if (asnTraveler.getCountryOfIdCard() != null) { traveler.setIDCardCountry(asnTraveler.getCountryOfIdCard().intValue()); } traveler.setCustomerId(UicEncoderUtils.mapToString(asnTraveler.getCustomerIdNum(),asnTraveler.getCustomerIdIA5())); traveler.setDateOfBirth(asnTraveler.getDateOfBirth()); traveler.setFirstName(asnTraveler.getFirstName()); if (asnTraveler.getGender()!= null) { traveler.setGender(IGenderType.valueOf(asnTraveler.getGender().name())); } traveler.setIdCard(asnTraveler.getIdCard()); traveler.setLastName(asnTraveler.getLastName()); if (asnTraveler.getPassengerType()!= null) { traveler.setPassengerType(IPassengerType.valueOf(asnTraveler.getPassengerType().name())); } if (asnTraveler.getPassengerWithReducedMobility()!= null) { traveler.setPassengerWithReducedMobility(asnTraveler.getPassengerWithReducedMobility()); } traveler.setPassportId(asnTraveler.getPassportId()); traveler.setSecondName(asnTraveler.getSecondName()); if (asnTraveler.getTicketHolder() != null) { traveler.setTicketHolder(asnTraveler.getTicketHolder()); } if (asnTraveler.getStatus()!= null && !asnTraveler.getStatus().isEmpty()) { for (CustomerStatusType asnStatus : asnTraveler.getStatus()){ traveler.addStatusDescription( mapToStatusDescription(asnStatus) ); } } traveler.setTitle(asnTraveler.getTitle()); return traveler; } /** * Map to status description. * * @param asnStatus the asn status * @return the i customer status description */ private ICustomerStatusDescription mapToStatusDescription( CustomerStatusType asnStatus) { if (asnStatus == null) return null; ICustomerStatusDescription status = factory.createCustomerStatusDescription(); status.setDescription(asnStatus.getCustomerStatusDescr()); if (asnStatus.getCustomerStatus()!=null) { status.setStatus(asnStatus.getCustomerStatus().intValue()); } status.setStatusProvider(UicEncoderUtils.mapToString(asnStatus.getStatusProviderNum(), asnStatus.getStatusProviderIA5())); return status; } /** * Populate control details. * * @param asnControlDetails the asn control details * @param controlDetails the control details */ protected void populateControlDetails(ControlData asnControlDetails, IControlDetail controlDetails) { if (asnControlDetails == null || controlDetails==null ) return; if (asnControlDetails.getAgeCheckRequired()!= null) { controlDetails.setAgeCheckRequired(asnControlDetails.getAgeCheckRequired()); } controlDetails.setExtension(convertExtension(asnControlDetails.getExtension())); if (asnControlDetails.getIdentificationByIdCard()!=null){ controlDetails.setIdentificationByIdCard(asnControlDetails.getIdentificationByIdCard()); } if (asnControlDetails.getIdentificationByPassportId()!= null){ controlDetails.setIdentificationByPassportId(asnControlDetails.getIdentificationByPassportId()); } if(asnControlDetails.getIdentificationItem()!=null){ controlDetails.setIdentificationItem(asnControlDetails.getIdentificationItem().intValue()); } controlDetails.setInfoText(asnControlDetails.getInfoText()); if (asnControlDetails.getOnlineValidationRequired()!=null){ controlDetails.setOnlineValidationRequired(asnControlDetails.getOnlineValidationRequired()); } if (asnControlDetails.getRandomDetailedValidationRequired()!= null){ controlDetails.setRandomDetailedValidationRequired(asnControlDetails.getRandomDetailedValidationRequired().intValue()); } if (asnControlDetails.getReductionCardCheckRequired() != null){ controlDetails.setReductionCardCheckRequired(asnControlDetails.getReductionCardCheckRequired()); } if(asnControlDetails.getIdentificationByCardReference()!=null && !asnControlDetails.getIdentificationByCardReference().isEmpty()) { for (CardReferenceType asnCardReference : asnControlDetails.getIdentificationByCardReference()){ controlDetails.addIdentificationByCardReference(convertCardReference(asnCardReference)); } } if (asnControlDetails.getIncludedTickets()!=null && !asnControlDetails.getIncludedTickets().isEmpty()) { for (TicketLinkType asnTicketLink : asnControlDetails.getIncludedTickets()) { controlDetails.addLinkedTicket(convertTicketLink(asnTicketLink)); } } } /** * Populate issuing detail. * * @param asnIssuingDetail the asn issuing detail * @param issuingDetail the issuing detail */ protected void populateIssuingDetail(IssuingData asnIssuingDetail,IIssuingDetail issuingDetail){ if (asnIssuingDetail== null || issuingDetail == null) return; if (asnIssuingDetail.getActivated() != null) { issuingDetail.setActivated(asnIssuingDetail.getActivated()); } if (asnIssuingDetail.getSpecimen() != null) { issuingDetail.setSpecimen(asnIssuingDetail.getSpecimen()); } else { issuingDetail.setSpecimen(false); } if (asnIssuingDetail.getSecurePaperTicket() != null) { issuingDetail.setSecurePaperTicket(asnIssuingDetail.getSecurePaperTicket()); } else { issuingDetail.setSecurePaperTicket(false); } issuingDetail.setExtension(convertExtension(asnIssuingDetail.getExtension())); if (asnIssuingDetail.getIssuedOnLine()!= null) { issuingDetail.setIssuedOnLine(asnIssuingDetail.getIssuedOnLine().intValue()); } if (asnIssuingDetail.getIssuedOnTrainIA5()!= null) { issuingDetail.setIssuedOnTrain(asnIssuingDetail.getIssuedOnTrainIA5()); } if (asnIssuingDetail.getIssuedOnTrainNum()!= null) { issuingDetail.setIssuedOnTrain(asnIssuingDetail.getIssuedOnTrainNum().toString()); } if (asnIssuingDetail.getIssuerNum() != null || asnIssuingDetail.getIssuerIA5() != null) { issuingDetail.setIssuer(UicEncoderUtils.mapToString(asnIssuingDetail.getIssuerNum(), asnIssuingDetail.getIssuerIA5())); } issuingDetail.setIssuerName(asnIssuingDetail.getIssuerName()); issuingDetail.setIssuerPNR(asnIssuingDetail.getIssuerPNR()); issuingDetail.setSecurityProvider(UicEncoderUtils.mapToString(asnIssuingDetail.getSecurityProviderNum(),asnIssuingDetail.getSecurityProviderIA5())); issuingDetail.setIssuingDate(asnIssuingDetail.getIssuingDate()); if (asnIssuingDetail.getPointOfSale() != null) { issuingDetail.setPointOfSale(convertGeoCoordinate(asnIssuingDetail.getPointOfSale())); } } /** * Convert geo coordinate. * * @param asnCoordinate the asn coordinate * @return the i geo coordinate */ protected IGeoCoordinate convertGeoCoordinate(GeoCoordinateType asnCoordinate) { if (asnCoordinate == null) return null; IGeoCoordinate coordinate = factory.createGeoCoordinate(); if (asnCoordinate.getCoordinateSystem() != null) { coordinate.setSystem(IGeoCoordinateSystemType.valueOf(asnCoordinate.getCoordinateSystem().name())); } if (asnCoordinate.getAccuracy() != null) { coordinate.setAccuracy(IGeoUnitType.valueOf(asnCoordinate.getAccuracy().name())); } if (asnCoordinate.getGeoUnit() != null) { coordinate.setUnit(IGeoUnitType.valueOf(asnCoordinate.getGeoUnit().name())); } if (asnCoordinate.getHemisphereLatitude() != null) { coordinate.setHemisphereLatitude(IHemisphereLatitudeType.valueOf(asnCoordinate.getHemisphereLatitude().name())); } if (asnCoordinate.getHemisphereLongitude() != null) { coordinate.setHemisphereLongitude(IHemisphereLongitudeType.valueOf(asnCoordinate.getHemisphereLongitude().name())); } coordinate.setLongitude (asnCoordinate.getLongitude()); coordinate.setLatitude (asnCoordinate.getLatitude()); return coordinate; } /** * Convert extension. * * @param asnExtension the asn extension * @return the i extension */ protected IExtension convertExtension(ExtensionData asnExtension) { if (asnExtension == null) return null; IExtension extension = factory.createExtension(); extension.setId(asnExtension.getExtensionId()); extension.setBinarydata(asnExtension.getExtensionData()); return extension; } /** * Convert ticket link. * * @param asnTicketLink the asn ticket link * @return the i ticket link */ protected ITicketLink convertTicketLink(TicketLinkType asnTicketLink) { if (asnTicketLink == null) return null; ITicketLink ticketLink = factory.createTicketLink(); ticketLink.setIssuer(asnTicketLink.getIssuerName()); ticketLink.setIssuerPNR(asnTicketLink.getIssuerPNR()); ticketLink.setProductOwner(UicEncoderUtils.mapToString(asnTicketLink.getProductOwnerNum(),asnTicketLink.getProductOwnerIA5())); ticketLink.setReference(UicEncoderUtils.mapToString(asnTicketLink.getReferenceNum(),asnTicketLink.getReferenceIA5())); if(asnTicketLink.getTicketType()!=null) { ticketLink.setTicketType(ITicketType.valueOf(asnTicketLink.getTicketType().name())); } if(asnTicketLink.getLinkMode()!=null) { ticketLink.setLinkMode(ILinkMode.valueOf(asnTicketLink.getLinkMode().name())); } return ticketLink; } /** * Convert card reference. * * @param asnCardReference the asn card reference * @return the card reference */ protected ICardReference convertCardReference(CardReferenceType asnCardReference) { if (asnCardReference == null) return null; ICardReference cardReference = factory.createCardReference(); cardReference.setCardId(UicEncoderUtils.mapToString(asnCardReference.getCardIdNum(),asnCardReference.getCardIdIA5())); cardReference.setCardIssuer(UicEncoderUtils.mapToString(asnCardReference.getCardIssuerNum(),asnCardReference.getCardIssuerIA5())); cardReference.setCardName(asnCardReference.getCardName()); if(asnCardReference.getCardType()!=null) { cardReference.setCardType(asnCardReference.getCardType().intValue()); } cardReference.setLeadingCardId(UicEncoderUtils.mapToString(asnCardReference.getLeadingCardIdNum(),asnCardReference.getLeadingCardIdIA5())); cardReference.setTrailingCardId(UicEncoderUtils.mapToString(asnCardReference.getTrailingCardIdNum(),asnCardReference.getTrailingCardIdIA5())); return cardReference; } }