package Ġorg . open broker . no . private un sec ured loan . model Ċ Ċ import Ġorg . open broker . common . model . issuer Regex Ċ import Ġorg . open broker . common . require Min Ċ Ċ data Ġclass ĠApplication Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġprimary Ġapplic ant Ġto Ġthe Ġloan ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġapplic ant : ĠApplic ant , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġsecondary Ġapplic ant Ġfor Ġthe Ġloan , Ġif Ġany ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġco Applic ant : ĠApplic ant ? Ġ= Ġnull , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInformation Ġabout Ġexisting Ġlo ans Ġrelevant Ġto Ġthe Ġapplic ant ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġexisting Lo ans : ĠList < Existing Loan > Ġ= Ġempty List (), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCustom , Ġvendor - specific Ġextensions Ġto Ġthe Ġschema ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġextensions : ĠMap < String , ĠAny >? Ġ= Ġempty Map (), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġamount Ġthat Ġthe Ġcustomer Ġw ishes Ġto Ġborrow ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġloan Amount : ĠInt , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPurpose Ġof Ġthe Ġloan ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġloan Purpose : ĠLo an Purpose Ġ= ĠLo an Purpose . OTHER , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġamount Ġbeing Ġref in anced , Ġmust Ġbe Ġless Ġthan Ġthe Ġloan Amount ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġref in ance Amount : ĠInt Ġ= Ġ 0 , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġnumber Ġ 1 - month Ġterms Ġthat Ġthe Ġapplic ant Ġdes ires Ġto Ġpay Ġoff Ġthe Ġloan Ġover ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġterm Months : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġloan Amount . require Min ( 1 , Ġ" loan Amount ") ĊĠĠĠĠĠĠĠ Ġref in ance Amount . require Min ( 0 , Ġ" ref in ance Amount ") ĊĠĠĠĠĠĠĠ Ġterm Months . require Min ( 1 , Ġ" term Months ") ĊĠĠĠĠĠĠĠ Ġrequire ( ref in ance Amount Ġ<= Ġloan Amount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ref in ance Amount Ġ($ ref in ance Amount ) Ġmay Ġnot Ġbe Ġgreater Ġthan Ġloan Amount Ġ($ loan Amount )." ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġextensions ?. keys ?. forEach Ġ{ Ġkey Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( key . matches ( issuer Regex )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Key Ġfor Ġextension Ġis Ġnot Ġa Ġvalid Ġformat : Ġ'$ key '" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }