/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 Ġ- Ġ 2 0 1 9 ĠMichael ĠR app Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ċ Ġ* Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ċ Ġ* Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ċ Ġ* Ġor Ġimplied . ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ġunder Ċ Ġ* Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġde . mr app . text mining . util . tokenizer Ċ Ċ import Ġde . mr app . util . Condition . ensure At Least Ċ Ċ /** Ċ Ġ* ĠAllows Ġto Ġcreate Ġsub strings Ġfrom Ġtexts . ĠE . g . Ġthe Ġsub strings Ġ" t ", Ġ" e ", Ġ" x ", Ġ" t ", Ġ" te ", Ġ" ex ", Ġ" xt ", Ċ Ġ* Ġ" tex " Ġand Ġ" ext " Ġcan Ġbe Ġcreated Ġfrom Ġthe Ġtext Ġ" text ". Ċ Ġ* Ċ Ġ* Ġ@ property Ġmin Length ĠThe Ġminimum Ġlength Ġof Ġthe Ġsub strings Ġthat Ġare Ġcreated Ġby Ġthe Ġtokenizer Ċ Ġ* Ġ@ property ĠmaxLength ĠThe Ġmaximum Ġlength Ġof Ġthe Ġsub strings Ġthat Ġare Ġcreated Ġby Ġthe Ġtokenizer Ċ Ġ* Ġ@ author ĠMichael ĠR app Ċ Ġ* Ġ@ since Ġ 1 . 0 . 0 Ċ Ġ*/ Ċ class ĠSub string Tokenizer ( val Ġmin Length : ĠInt Ġ= Ġ 1 , Ġval ĠmaxLength : ĠInt Ġ= ĠInt . MAX _ VALUE ) Ġ: ĊĠĠĠĠĠĠĠ ĠAbstract Tokenizer < Substring >() Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġensure At Least ( min Length , Ġ 1 , Ġ" The Ġminimum Ġlength Ġmust Ġbe Ġat Ġleast Ġ 1 ") ĊĠĠĠĠĠĠĠ Ġensure At Least ( maxLength , Ġmin Length , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġmaximum Ġlength Ġmust Ġbe Ġat Ġleast Ġthe Ġminimum Ġlength ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Token ize ( text : ĠString , Ġmap : ĠMutable Map < String , ĠSub string >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġtext . length ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( n Ġin Ġmin Length .. Math . min ( length Ġ- Ġ 1 , ĠmaxLength )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. length Ġ- Ġn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġtext . substring ( i , Ġi Ġ+ Ġn ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Token ( map , Ġtoken , Ġi ) Ġ{ Ġt , Ġp Ġ-> ĠSub string ( t , Ġp ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ