package Ġcom . example . barcode scanner . model . schema ĊĊ Ċ import Ġcom . example . barcode scanner . extension . join ToString NotNull Or Blank With Line Separator Ċ import Ġcom . example . barcode scanner . extension . startsWith IgnoreCase Ċ import Ġcom . example . barcode scanner . extension . unsafe Lazy Ċ import Ġjava . util . Calendar Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util . Locale Ċ Ċ class ĠBo arding Pass ( ĊĠĠĠ Ġval Ġname : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġp nr : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġfrom : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġto : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġcarrier : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġflight : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġdate : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġcab in : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġseat : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġseq : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġticket : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġselect ee : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġff Air line : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġff No : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġfast track : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġblob : ĠString ? Ġ= Ġnull , Ċ ) Ġ: ĠSchema Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" QR and BAR " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDATE _ FORMAT TER Ġby Ġunsafe Lazy Ġ{ ĠSimpleDateFormat (" d ĠM MMM ", ĠLocale . EN GL ISH ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse ( text : ĠString ): ĠBo arding Pass ? Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠM 1 Ġmeans Ġsingle Ġleg Ġbarcode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text . startsWith IgnoreCase (" M 1 "). not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠE Ġmeans Ġelectronic Ġticket ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text [ 2 2 ] Ġ!= Ġ' E ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Size : ĠInt Ġ= Ġtext . slice ( 5 8 .. 5 9 ). toInt ( 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ> Ġis Ġthe Ġmarker Ġfor Ġthe Ġair line Ġspecific Ġoptional Ġfields ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Size Ġ!= Ġ 0 Ġ&& Ġtext [ 6 0 ] Ġ!= Ġ' >') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ^ Ġis Ġthe Ġmandatory Ġsecurity Ġmarker ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text [ 6 0 + field Size ] Ġ!= Ġ'^ ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname : ĠString Ġ= Ġtext . slice ( 2 .. 2 1 ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp nr : ĠString Ġ= Ġtext . slice ( 2 3 .. 2 9 ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfrom : ĠString Ġ= Ġtext . slice ( 3 0 .. 3 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto : ĠString Ġ= Ġtext . slice ( 3 3 .. 3 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcarrier : ĠString Ġ= Ġtext . slice ( 3 6 .. 3 8 ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflight : ĠString Ġ= Ġtext . slice ( 3 9 .. 4 3 ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate J : ĠString Ġ= Ġtext . slice ( 4 4 .. 4 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcab in : ĠString Ġ= Ġtext . slice ( 4 7 .. 4 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseat : ĠString Ġ= Ġtext . slice ( 4 8 .. 5 1 ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseq : ĠString Ġ= Ġtext . slice ( 5 2 .. 5 6 ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 5 7 Ġis Ġstatus Ġ- Ġignore ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoday Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoday . set ( Calendar . DAY _ OF _ YEAR , Ġdate J . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate : ĠString Ġ= ĠDATE _ FORMAT TER . format ( today . getTime ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġselect ee Ġ: ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġticket Ġ: ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġff Air line Ġ: ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġff No Ġ: ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfast track : ĠString Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Size Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize : ĠInt Ġ= Ġtext . slice ( 6 2 .. 6 3 ). toInt ( 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size Ġ!= Ġ 0 Ġ&& Ġsize Ġ!= Ġ 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdon 't Ġreally Ġcare Ġabout Ġthe Ġfirst Ġoptional Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġit 's Ġmostly Ġb agg age Ġand Ġcheck in Ġinformation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize 1 : ĠInt Ġ= Ġtext . slice ( 6 4 + size .. 6 5 + size ). toInt ( 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEuropean Ġboard ing Ġpasses Ġare Ġ 4 2 Ġto Ġhave Ġappended Ġfast track ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUS Ġboard ing Ġpasses Ġare Ġsize Ġ 4 1 Ġwith Ġno Ġfast track ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size 1 Ġ!= Ġ 0 Ġ&& Ġsize 1 Ġ!= Ġ 4 1 Ġ&& Ġsize 1 Ġ!= Ġ 4 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġticket Ġ= Ġtext . slice ( 6 6 + size .. 7 8 + size ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠT SA Ġfield : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġblank Ġfor Ġnot ĠUS Ġfl ights ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 0 Ġ- Ġnormal Ġcleared ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 1 Ġ- Ġno Ġfly ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 Ġ- Ġselected Ġfor Ġenhanced Ġsecurity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 3 Ġ- Ġpre check ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect ee Ġ= Ġtext . slice ( 7 9 + size .. 7 9 + size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġff Air line Ġ= Ġtext . slice ( 8 4 + size .. 8 6 + size ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġff No Ġ= Ġtext . slice ( 8 7 + size .. 1 0 2 + size ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size 1 Ġ== Ġ 4 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠY Ġ- Ġfast track Ġel igible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfast track Ġ= Ġtext . slice ( 1 0 7 + size .. 1 0 7 + size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBo arding Pass ( name , Ġp nr , Ġfrom , Ġto , Ġcarrier , Ġflight , Ġdate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcab in , Ġseat , Ġseq , Ġticket , Ġselect ee , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġff Air line , Ġff No , Ġfast track , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġschema Ġ= ĠBar code Schema . BOARD ING PASS ĊĠĠĠ Ġoverride Ġfun Ġto Formatted Text (): ĠString Ġ= ĠlistOf ( name , Ġp nr , Ġ"$ from ->$ to ", Ġ"$ carrier $ flight ", Ġdate , Ġcab in , Ġseat , Ġseq , Ġticket , Ġselect ee , Ġ"$ ff Air line $ ff No ", Ġfast track ). join ToString NotNull Or Blank With Line Separator () ĊĠĠĠ Ġoverride Ġfun Ġto Barcode Text (): ĠString Ġ= Ġ"$ blob " Ċ }