1717 * along with this program. If not, see <http://www.gnu.org/licenses/>
1818 *
1919 */
20- package org .restcomm .connect .interpreter ;
20+ package org .restcomm .connect .core . service . number ;
2121
2222import java .util .ArrayList ;
2323import java .util .Arrays ;
3232
3333import org .apache .log4j .Logger ;
3434import org .restcomm .connect .commons .dao .Sid ;
35+ import org .restcomm .connect .core .service .api .NumberSelectorService ;
36+ import org .restcomm .connect .core .service .number .api .NumberSelectionResult ;
37+ import org .restcomm .connect .core .service .number .api .ResultType ;
38+ import org .restcomm .connect .core .service .number .api .SearchModifier ;
3539import org .restcomm .connect .dao .IncomingPhoneNumbersDao ;
3640import org .restcomm .connect .dao .entities .IncomingPhoneNumber ;
3741import org .restcomm .connect .dao .entities .IncomingPhoneNumberFilter ;
5256 * yet, then null values are allowed, but Regexes will not be evaluated in these
5357 * cases.
5458 */
55- public class NumberSelectorService {
59+ public class NumberSelectorServiceImpl implements NumberSelectorService {
5660
57- private static Logger logger = Logger .getLogger (NumberSelectorService .class );
61+ private static Logger logger = Logger .getLogger (NumberSelectorServiceImpl .class );
5862
5963 private IncomingPhoneNumbersDao numbersDao ;
6064
61- public NumberSelectorService (IncomingPhoneNumbersDao numbersDao ) {
65+ public NumberSelectorServiceImpl (IncomingPhoneNumbersDao numbersDao ) {
6266 this .numbersDao = numbersDao ;
6367 }
6468
@@ -182,7 +186,7 @@ private NumberSelectionResult findByNumber(List<String> numberQueries,
182186 Boolean orgFiltered = false ;
183187 NumberSelectionResult matchedNumber = new NumberSelectionResult (null , orgFiltered , null );
184188 int i = 0 ;
185- while (matchedNumber .number == null && i < numberQueries .size ()) {
189+ while (matchedNumber .getNumber () == null && i < numberQueries .size ()) {
186190 matchedNumber = findSingleNumber (numberQueries .get (i ),
187191 sourceOrganizationSid , destinationOrganizationSid , modifiers );
188192 //preserve the orgFiltered flag along the queries
@@ -201,6 +205,7 @@ private NumberSelectionResult findByNumber(List<String> numberQueries,
201205 * @param destinationOrganizationSid
202206 * @return
203207 */
208+ @ Override
204209 public IncomingPhoneNumber searchNumber (String phone ,
205210 Sid sourceOrganizationSid , Sid destinationOrganizationSid ) {
206211 return searchNumber (phone , sourceOrganizationSid , destinationOrganizationSid , new HashSet <>(Arrays .asList (SearchModifier .ORG_COMPLIANT )));
@@ -213,10 +218,11 @@ public IncomingPhoneNumber searchNumber(String phone,
213218 * @param modifiers
214219 * @return
215220 */
221+ @ Override
216222 public IncomingPhoneNumber searchNumber (String phone ,
217223 Sid sourceOrganizationSid , Sid destinationOrganizationSid , Set <SearchModifier > modifiers ) {
218224 NumberSelectionResult searchNumber = searchNumberWithResult (phone , sourceOrganizationSid , destinationOrganizationSid , modifiers );
219- return searchNumber .number ;
225+ return searchNumber .getNumber () ;
220226 }
221227
222228 /**
@@ -227,6 +233,7 @@ public IncomingPhoneNumber searchNumber(String phone,
227233 * @param destOrg
228234 * @return
229235 */
236+ @ Override
230237 public boolean isFailedCall (NumberSelectionResult result , Sid srcOrg , Sid destOrg ) {
231238 boolean failCall = false ;
232239
@@ -250,6 +257,7 @@ public boolean isFailedCall(NumberSelectionResult result, Sid srcOrg, Sid destOr
250257 * @param destinationOrganizationSid
251258 * @return
252259 */
260+ @ Override
253261 public NumberSelectionResult searchNumberWithResult (String phone ,
254262 Sid sourceOrganizationSid , Sid destinationOrganizationSid ){
255263 return searchNumberWithResult (phone , sourceOrganizationSid , destinationOrganizationSid , new HashSet <>(Arrays .asList (SearchModifier .ORG_COMPLIANT )));
@@ -266,6 +274,7 @@ public NumberSelectionResult searchNumberWithResult(String phone,
266274 * @param modifiers
267275 * @return
268276 */
277+ @ Override
269278 public NumberSelectionResult searchNumberWithResult (String phone ,
270279 Sid sourceOrganizationSid , Sid destinationOrganizationSid , Set <SearchModifier > modifiers ) {
271280 if (logger .isDebugEnabled ()) {
@@ -276,7 +285,7 @@ public NumberSelectionResult searchNumberWithResult(String phone,
276285 List <String > numberQueries = createPhoneQuery (phone );
277286
278287 NumberSelectionResult numberfound = findByNumber (numberQueries , sourceOrganizationSid , destinationOrganizationSid , modifiers );
279- if (numberfound .number == null ) {
288+ if (numberfound .getNumber () == null ) {
280289 //only use regex if perfect match didnt worked
281290 if (destinationOrganizationSid != null
282291 && (sourceOrganizationSid == null || destinationOrganizationSid .equals (sourceOrganizationSid ))
@@ -288,16 +297,16 @@ public NumberSelectionResult searchNumberWithResult(String phone,
288297 if (regexFound .getNumber () != null ) {
289298 numberfound = regexFound ;
290299 }
291- if (numberfound .number == null ) {
300+ if (numberfound .getNumber () == null ) {
292301 //if no regex match found, try with special star number in the end
293302 NumberSelectionResult starfound = findSingleNumber ("*" , sourceOrganizationSid , destinationOrganizationSid , modifiers );
294- if (starfound .number != null ) {
295- numberfound = new NumberSelectionResult (starfound .number , false , ResultType .REGEX );
303+ if (starfound .getNumber () != null ) {
304+ numberfound = new NumberSelectionResult (starfound .getNumber () , false , ResultType .REGEX );
296305 }
297306 }
298307 }
299308 }
300- if (numberfound .number == null ) {
309+ if (numberfound .getNumber () == null ) {
301310 if (logger .isDebugEnabled ()) {
302311 StringBuffer stringBuffer = new StringBuffer ();
303312
@@ -365,7 +374,7 @@ private NumberSelectionResult findByRegex(List<String> numberQueries,
365374 regexSet .addAll (regexList );
366375 if (regexList != null && regexList .size () > 0 ) {
367376 NumberSelectionResult matchingRegex = findFirstMatchingRegex (numberQueries , regexSet );
368- if (matchingRegex .number != null ) {
377+ if (matchingRegex .getNumber () != null ) {
369378 numberFound = matchingRegex ;
370379 }
371380 }
@@ -379,12 +388,12 @@ private NumberSelectionResult findByRegex(List<String> numberQueries,
379388 * @param regexSet The set of regexes to evaluate against given numbers
380389 * @return the first regex matching any number in list, null if no match
381390 */
382- public NumberSelectionResult findFirstMatchingRegex (List <String > numberQueries , Set <IncomingPhoneNumber > regexSet
391+ private NumberSelectionResult findFirstMatchingRegex (List <String > numberQueries , Set <IncomingPhoneNumber > regexSet
383392 ) {
384393 NumberSelectionResult matchedRegex = new NumberSelectionResult (null , false , null );
385394 try {
386395 Iterator <IncomingPhoneNumber > iterator = regexSet .iterator ();
387- while (matchedRegex .number == null && iterator .hasNext ()) {
396+ while (matchedRegex .getNumber () == null && iterator .hasNext ()) {
388397 IncomingPhoneNumber currentRegex = iterator .next ();
389398 String phoneRegexPattern = null ;
390399 //here we perform string replacement to allow proper regex compilation
@@ -401,7 +410,7 @@ public NumberSelectionResult findFirstMatchingRegex(List<String> numberQueries,
401410 int i = 0 ;
402411 //we evalute the current regex to the list of incoming numbers
403412 //we stop as soon as a match is found
404- while (matchedRegex .number == null && i < numberQueries .size ()) {
413+ while (matchedRegex .getNumber () == null && i < numberQueries .size ()) {
405414 Matcher m = p .matcher (numberQueries .get (i ));
406415 if (m .find ()) {
407416 //match found, exit from loops and return
@@ -419,7 +428,7 @@ public NumberSelectionResult findFirstMatchingRegex(List<String> numberQueries,
419428 logger .debug (msg );
420429 }
421430 }
422- if (matchedRegex .number == null ) {
431+ if (matchedRegex .getNumber () == null ) {
423432 logger .info ("No matching phone number found, make sure your Restcomm Regex phone number is correctly defined" );
424433 }
425434
0 commit comments