diff --git a/restcomm/restcomm.application/src/main/webapp/WEB-INF/scripts/mariadb/sql/incoming-phone-numbers.xml b/restcomm/restcomm.application/src/main/webapp/WEB-INF/scripts/mariadb/sql/incoming-phone-numbers.xml
index 9c92ba4fe0..e342fccfa6 100644
--- a/restcomm/restcomm.application/src/main/webapp/WEB-INF/scripts/mariadb/sql/incoming-phone-numbers.xml
+++ b/restcomm/restcomm.application/src/main/webapp/WEB-INF/scripts/mariadb/sql/incoming-phone-numbers.xml
@@ -67,6 +67,9 @@
AND n.phone_number like #{phoneNumber}
+
+
+ AND (n.voice_application_sid = #{applicationSid} OR n.sms_application_sid = #{applicationSid} OR n.ussd_application_sid = #{applicationSid} OR n.refer_application_sid = #{applicationSid})
@@ -90,6 +93,9 @@
AND phone_number like #{phoneNumber}
+
+ AND (voice_application_sid = #{applicationSid} OR sms_application_sid = #{applicationSid} OR ussd_application_sid = #{applicationSid} OR refer_application_sid = #{applicationSid})
+
diff --git a/restcomm/restcomm.application/src/main/webapp/WEB-INF/sql/incoming-phone-numbers.xml b/restcomm/restcomm.application/src/main/webapp/WEB-INF/sql/incoming-phone-numbers.xml
index ab0efedf70..4ed5ff53ea 100644
--- a/restcomm/restcomm.application/src/main/webapp/WEB-INF/sql/incoming-phone-numbers.xml
+++ b/restcomm/restcomm.application/src/main/webapp/WEB-INF/sql/incoming-phone-numbers.xml
@@ -68,6 +68,9 @@
AND "n"."phone_number" like #{phoneNumber}
+
+ AND ("n"."voice_application_sid" = #{applicationSid} OR "n"."sms_application_sid" = #{applicationSid} OR "n"."ussd_application_sid" = #{applicationSid} OR "n"."refer_application_sid" = #{applicationSid})
+
order by "n"."phone_number" ${sortDirection}
@@ -92,8 +95,10 @@
AND "phone_number" like #{phoneNumber}
-
-
+
+ AND ("voice_application_sid" = #{applicationSid} OR "sms_application_sid" = #{applicationSid} OR "ussd_application_sid" = #{applicationSid} OR "refer_application_sid" = #{applicationSid})
+
+
diff --git a/restcomm/restcomm.dao/src/main/java/org/restcomm/connect/dao/entities/IncomingPhoneNumberFilter.java b/restcomm/restcomm.dao/src/main/java/org/restcomm/connect/dao/entities/IncomingPhoneNumberFilter.java
index 00d91b35f6..b7576f5221 100644
--- a/restcomm/restcomm.dao/src/main/java/org/restcomm/connect/dao/entities/IncomingPhoneNumberFilter.java
+++ b/restcomm/restcomm.dao/src/main/java/org/restcomm/connect/dao/entities/IncomingPhoneNumberFilter.java
@@ -31,13 +31,14 @@ public class IncomingPhoneNumberFilter {
private final String accountSid;
private final String friendlyName;
private final String phoneNumber;
+ private final String applicationSid;
private final String sortBy;
private final String sortDirection;
private final Integer limit;
private final Integer offset;
- public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String phoneNumber, String sortBy,
- String sortDirection, Integer limit, Integer offset) {
+ public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String phoneNumber, String applicationSid, String sortBy,
+ String sortDirection, Integer limit, Integer offset) {
this.accountSid = accountSid;
this.friendlyName = friendlyName;
// The LIKE keyword uses '%' to match any (including 0) number of characters, and '_' to match exactly one character
@@ -48,13 +49,14 @@ public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String
}
this.phoneNumber = phoneNumber;
+ this.applicationSid = applicationSid;
this.sortBy = sortBy;
this.sortDirection = sortDirection;
this.limit = limit;
this.offset = offset;
}
- public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String phoneNumber) {
+ public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String phoneNumber, String applicationSid) {
super();
this.accountSid = accountSid;
this.friendlyName = friendlyName;
@@ -65,6 +67,7 @@ public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String
phoneNumber = phoneNumber.replaceAll("\\*", "_");
}
this.phoneNumber = phoneNumber;
+ this.applicationSid = applicationSid;
this.sortBy = null;
this.sortDirection = null;
this.offset = null;
diff --git a/restcomm/restcomm.dao/src/test/java/org/restcomm/connect/dao/mybatis/IncomingPhoneNumbersDaoTest.java b/restcomm/restcomm.dao/src/test/java/org/restcomm/connect/dao/mybatis/IncomingPhoneNumbersDaoTest.java
index 41dc37a013..cb62717a52 100644
--- a/restcomm/restcomm.dao/src/test/java/org/restcomm/connect/dao/mybatis/IncomingPhoneNumbersDaoTest.java
+++ b/restcomm/restcomm.dao/src/test/java/org/restcomm/connect/dao/mybatis/IncomingPhoneNumbersDaoTest.java
@@ -168,7 +168,7 @@ public void createReadUpdateDelete() {
@Test
public void applicationFriendlyNameReturned() {
final IncomingPhoneNumbersDao dao = manager.getIncomingPhoneNumbersDao();
- IncomingPhoneNumberFilter incomingPhoneNumberFilter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null,"phone_number","ASC",50,0);
+ IncomingPhoneNumberFilter incomingPhoneNumberFilter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null, null, "phone_number","ASC",50,0);
List phoneNumbers = dao.getIncomingPhoneNumbersByFilter(incomingPhoneNumberFilter);
Assert.assertEquals("Only a single phone number expected",1, phoneNumbers.size());
IncomingPhoneNumber number = phoneNumbers.get(0);
diff --git a/restcomm/restcomm.dao/src/test/java/org/restcomm/connect/dao/mybatis/IncomingPhoneNumbersRetrievalTest.java b/restcomm/restcomm.dao/src/test/java/org/restcomm/connect/dao/mybatis/IncomingPhoneNumbersRetrievalTest.java
new file mode 100644
index 0000000000..12b4ca9ece
--- /dev/null
+++ b/restcomm/restcomm.dao/src/test/java/org/restcomm/connect/dao/mybatis/IncomingPhoneNumbersRetrievalTest.java
@@ -0,0 +1,84 @@
+/*
+ * TeleStax, Open Source Cloud Communications
+ * Copyright 2011-2014, Telestax Inc and individual contributors
+ * by the @authors tag.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see
+ *
+ */
+
+package org.restcomm.connect.dao.mybatis;
+
+import junit.framework.Assert;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.restcomm.connect.dao.IncomingPhoneNumbersDao;
+import org.restcomm.connect.dao.entities.IncomingPhoneNumber;
+import org.restcomm.connect.dao.entities.IncomingPhoneNumberFilter;
+
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * @author otsakir@gmail.com - Orestis Tsakiridis
+ */
+public class IncomingPhoneNumbersRetrievalTest extends DaoTest {
+ private static MybatisDaoManager manager;
+
+ @Before
+ public void before() throws Exception {
+ sandboxRoot = createTempDir("IncomingPhoneNumbersRetrievalTest");
+ String mybatisFilesPath = getClass().getResource("/applicationsDao").getFile();
+ setupSandbox(mybatisFilesPath, sandboxRoot);
+
+ String mybatisXmlPath = sandboxRoot.getPath() + "/mybatis_updated.xml";
+ final InputStream data = new FileInputStream(mybatisXmlPath);
+ final SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
+ final SqlSessionFactory factory = builder.build(data);
+ manager = new MybatisDaoManager();
+ manager.start(factory);
+ }
+
+ @After
+ public void after() throws Exception {
+ manager.shutdown();
+ removeTempDir(sandboxRoot.getAbsolutePath());
+ }
+
+ @Test
+ public void retrieveNumbersForApplication() {
+ IncomingPhoneNumbersDao dao = manager.getIncomingPhoneNumbersDao();
+ // application AP73926e7113fa4d95981aa96b76eca854 is bound with 3 numbers
+ IncomingPhoneNumberFilter filter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null, "AP73926e7113fa4d95981aa96b76eca854", null, null, 100, 0);
+ List numbers = dao.getIncomingPhoneNumbersByFilter(filter);
+ Assert.assertEquals(3, numbers.size());
+ // application AP00000000000000000000000000000004 is bound with no numbers
+ filter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null, "AP00000000000000000000000000000004", null, null, 100, 0);
+ numbers = dao.getIncomingPhoneNumbersByFilter(filter);
+ Assert.assertEquals(0, numbers.size());
+ }
+
+ @Test
+ public void countTotalNumbersForApplication() {
+ IncomingPhoneNumbersDao dao = manager.getIncomingPhoneNumbersDao();
+ IncomingPhoneNumberFilter filter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null, "AP73926e7113fa4d95981aa96b76eca854", null, null, 100, 0);
+ int total = dao.getTotalIncomingPhoneNumbers(filter);
+ Assert.assertEquals(3, total);
+ }
+
+}
diff --git a/restcomm/restcomm.dao/src/test/resources/applicationsDao/incoming-phone-numbers.xml b/restcomm/restcomm.dao/src/test/resources/applicationsDao/incoming-phone-numbers.xml
index b026fbf9aa..8619119538 100644
--- a/restcomm/restcomm.dao/src/test/resources/applicationsDao/incoming-phone-numbers.xml
+++ b/restcomm/restcomm.dao/src/test/resources/applicationsDao/incoming-phone-numbers.xml
@@ -1,24 +1,4 @@
-
-
-