package Ġno . ank soft . p gin mem . values Ċ Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . sql . SQLException Ċ Ċ class ĠNumeric CellValue ( val Ġmy Value : ĠBigDecimal ): CellValue Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġvalue As Text (): ĠString CellValue Ġ= ĠString CellValue ( my Value . toString ()) ĊĊĠĠĠ Ġoverride Ġfun Ġvalue As Integer (): ĠInteger CellValue Ġ= ĠInteger CellValue ( my Value . to Long ()) ĊĊĠĠĠ Ġoverride Ġfun Ġvalue As Boolean (): ĠBoolean CellValue Ġ= ĠBoolean CellValue ( my Value Ġ== ĠBigDecimal . ZERO ) ĊĊĠĠĠ Ġoverride Ġfun Ġvalue As Date (): ĠDate CellValue Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠSQLException (" Cannot Ġconvert Ġnumeric Ġto Ġdate ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvalue As Timestamp (): ĠDateTime CellValue Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠSQLException (" Cannot Ġconvert Ġnumeric Ġto Ġtimestamp ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvalue As Numeric (): ĠNumeric CellValue Ġ= Ġthis ĊĊĠĠĠ Ġoverride Ġfun Ġcompare Me To ( other : ĠCell Value ): ĠInt Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġthis Ġ== Ġother Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġother Ġis ĠInteger CellValue Ġ-> Ġthis . my Value . compareTo ( other . my Value . to BigDecimal ()) ĊĠĠĠĠĠĠĠ Ġother Ġis ĠNumeric CellValue Ġ-> Ġthis . my Value . compareTo ( other . my Value ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠSQLException (" Cannot Ġcompare Ġ$ this Ġand Ġ$ other ") ĊĠĠĠ Ġ} ĊĊĊĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this Ġ=== Ġother ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( other Ġis ĠNumeric CellValue )) Ġ-> Ġ( this . my Value . compareTo ( other . my Value ) Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( other Ġis ĠInteger CellValue )) Ġ-> Ġ( this . my Value . compareTo ( BigDecimal . valueOf ( other . my Value )) Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmy Value . toInt (). hashCode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Numeric CellValue ( my Value =${ my Value . toDouble () })" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( cell Value : ĠCell Value ): ĠCell Value Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġcell Value Ġ== ĠNull CellValue Ġ-> Ġthis ĊĠĠĠĠĠĠĠ Ġcell Value Ġis ĠInteger CellValue Ġ-> ĠNumeric CellValue ( my Value . add ( cell Value . my Value . to BigDecimal ())) ĊĠĠĠĠĠĠĠ Ġcell Value Ġis ĠNumeric CellValue Ġ-> ĠNumeric CellValue ( this . my Value . add ( cell Value . my Value )) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠSQLException (" Cannot Ġadd Ġ$ cell Value Ġto Ġint ") ĊĠĠĠ Ġ} Ċ }