Skip to content

Commit a52451b

Browse files
author
Orestis Tsakiridis
committed
New 'applicationSid' filter value for IncomingPhoneNumbersFilter, unit test and mybatis layer update (for test only)
Refers #2608
1 parent 2d550a6 commit a52451b

5 files changed

Lines changed: 98 additions & 5 deletions

File tree

restcomm/restcomm.dao/src/main/java/org/restcomm/connect/dao/entities/IncomingPhoneNumberFilter.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,14 @@ public class IncomingPhoneNumberFilter {
3131
private final String accountSid;
3232
private final String friendlyName;
3333
private final String phoneNumber;
34+
private final String applicationSid;
3435
private final String sortBy;
3536
private final String sortDirection;
3637
private final Integer limit;
3738
private final Integer offset;
3839

39-
public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String phoneNumber, String sortBy,
40-
String sortDirection, Integer limit, Integer offset) {
40+
public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String phoneNumber, String applicationSid, String sortBy,
41+
String sortDirection, Integer limit, Integer offset) {
4142
this.accountSid = accountSid;
4243
this.friendlyName = friendlyName;
4344
// 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
4849
}
4950

5051
this.phoneNumber = phoneNumber;
52+
this.applicationSid = applicationSid;
5153
this.sortBy = sortBy;
5254
this.sortDirection = sortDirection;
5355
this.limit = limit;
5456
this.offset = offset;
5557
}
5658

57-
public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String phoneNumber) {
59+
public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String phoneNumber, String applicationSid) {
5860
super();
5961
this.accountSid = accountSid;
6062
this.friendlyName = friendlyName;
@@ -65,6 +67,7 @@ public IncomingPhoneNumberFilter(String accountSid, String friendlyName, String
6567
phoneNumber = phoneNumber.replaceAll("\\*", "_");
6668
}
6769
this.phoneNumber = phoneNumber;
70+
this.applicationSid = applicationSid;
6871
this.sortBy = null;
6972
this.sortDirection = null;
7073
this.offset = null;

restcomm/restcomm.dao/src/test/java/org/restcomm/connect/dao/mybatis/IncomingPhoneNumbersDaoTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ public void createReadUpdateDelete() {
168168
@Test
169169
public void applicationFriendlyNameReturned() {
170170
final IncomingPhoneNumbersDao dao = manager.getIncomingPhoneNumbersDao();
171-
IncomingPhoneNumberFilter incomingPhoneNumberFilter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null,"phone_number","ASC",50,0);
171+
IncomingPhoneNumberFilter incomingPhoneNumberFilter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null, null, "phone_number","ASC",50,0);
172172
List<IncomingPhoneNumber> phoneNumbers = dao.getIncomingPhoneNumbersByFilter(incomingPhoneNumberFilter);
173173
Assert.assertEquals("Only a single phone number expected",1, phoneNumbers.size());
174174
IncomingPhoneNumber number = phoneNumbers.get(0);
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/*
2+
* TeleStax, Open Source Cloud Communications
3+
* Copyright 2011-2014, Telestax Inc and individual contributors
4+
* by the @authors tag.
5+
*
6+
* This program is free software: you can redistribute it and/or modify
7+
* under the terms of the GNU Affero General Public License as
8+
* published by the Free Software Foundation; either version 3 of
9+
* the License, or (at your option) any later version.
10+
*
11+
* This program is distributed in the hope that it will be useful,
12+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
* GNU Affero General Public License for more details.
15+
*
16+
* You should have received a copy of the GNU Affero General Public License
17+
* along with this program. If not, see <http://www.gnu.org/licenses/>
18+
*
19+
*/
20+
21+
package org.restcomm.connect.dao.mybatis;
22+
23+
import junit.framework.Assert;
24+
import org.apache.ibatis.session.SqlSessionFactory;
25+
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
26+
import org.junit.After;
27+
import org.junit.Before;
28+
import org.junit.Test;
29+
import org.restcomm.connect.dao.IncomingPhoneNumbersDao;
30+
import org.restcomm.connect.dao.entities.IncomingPhoneNumber;
31+
import org.restcomm.connect.dao.entities.IncomingPhoneNumberFilter;
32+
33+
import java.io.FileInputStream;
34+
import java.io.InputStream;
35+
import java.util.List;
36+
37+
/**
38+
* @author otsakir@gmail.com - Orestis Tsakiridis
39+
*/
40+
public class IncomingPhoneNumbersRetrievalTest extends DaoTest {
41+
private static MybatisDaoManager manager;
42+
43+
@Before
44+
public void before() throws Exception {
45+
sandboxRoot = createTempDir("IncomingPhoneNumbersRetrievalTest");
46+
String mybatisFilesPath = getClass().getResource("/applicationsDao").getFile();
47+
setupSandbox(mybatisFilesPath, sandboxRoot);
48+
49+
String mybatisXmlPath = sandboxRoot.getPath() + "/mybatis_updated.xml";
50+
final InputStream data = new FileInputStream(mybatisXmlPath);
51+
final SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
52+
final SqlSessionFactory factory = builder.build(data);
53+
manager = new MybatisDaoManager();
54+
manager.start(factory);
55+
}
56+
57+
@After
58+
public void after() throws Exception {
59+
manager.shutdown();
60+
removeTempDir(sandboxRoot.getAbsolutePath());
61+
}
62+
63+
@Test
64+
public void retrieveNumbersForApplication() {
65+
IncomingPhoneNumbersDao dao = manager.getIncomingPhoneNumbersDao();
66+
// application AP73926e7113fa4d95981aa96b76eca854 is bound with 3 numbers
67+
IncomingPhoneNumberFilter filter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null, "AP73926e7113fa4d95981aa96b76eca854", null, null, 100, 0);
68+
List<IncomingPhoneNumber> numbers = dao.getIncomingPhoneNumbersByFilter(filter);
69+
Assert.assertEquals(3, numbers.size());
70+
// application AP00000000000000000000000000000004 is bound with no numbers
71+
filter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null, "AP00000000000000000000000000000004", null, null, 100, 0);
72+
numbers = dao.getIncomingPhoneNumbersByFilter(filter);
73+
Assert.assertEquals(0, numbers.size());
74+
}
75+
76+
@Test
77+
public void countTotalNumbersForApplication() {
78+
IncomingPhoneNumbersDao dao = manager.getIncomingPhoneNumbersDao();
79+
IncomingPhoneNumberFilter filter = new IncomingPhoneNumberFilter("ACae6e420f425248d6a26948c17a9e2acf", null, null, "AP73926e7113fa4d95981aa96b76eca854", null, null, 100, 0);
80+
int total = dao.getTotalIncomingPhoneNumbers(filter);
81+
Assert.assertEquals(3, total);
82+
}
83+
84+
}

restcomm/restcomm.dao/src/test/resources/applicationsDao/incoming-phone-numbers.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@
8888
<if test="phoneNumber != null">
8989
AND "n"."phone_number" like #{phoneNumber}
9090
</if>
91+
<if test="applicationSid != null">
92+
AND ("n"."voice_application_sid" = #{applicationSid} OR "n"."sms_application_sid" = #{applicationSid} OR "n"."ussd_application_sid" = #{applicationSid} OR "n"."refer_application_sid" = #{applicationSid})
93+
</if>
9194
<choose>
9295
<when test="sortBy == 'phone_number'">
9396
order by "n"."phone_number" ${sortDirection}
@@ -112,6 +115,9 @@
112115
<if test="phoneNumber != null">
113116
AND "phone_number" like #{phoneNumber}
114117
</if>
118+
<if test="applicationSid != null">
119+
AND ("voice_application_sid" = #{applicationSid} OR "sms_application_sid" = #{applicationSid} OR "ussd_application_sid" = #{applicationSid} OR "refer_application_sid" = #{applicationSid})
120+
</if>
115121

116122
</select>
117123

restcomm/restcomm.http/src/main/java/org/restcomm/connect/http/IncomingPhoneNumbersEndpoint.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ protected Response getIncomingPhoneNumbers(final String accountSid, final PhoneN
313313
return status(javax.ws.rs.core.Response.Status.BAD_REQUEST).build();
314314
}
315315

316-
incomingPhoneNumberFilter = new IncomingPhoneNumberFilter(accountSid, friendlyNameFilter, phoneNumberFilter, sortBy,
316+
incomingPhoneNumberFilter = new IncomingPhoneNumberFilter(accountSid, friendlyNameFilter, phoneNumberFilter, null, sortBy,
317317
reverse, limit, offset);
318318

319319
final List<IncomingPhoneNumber> incomingPhoneNumbers = dao.getIncomingPhoneNumbersByFilter(incomingPhoneNumberFilter);

0 commit comments

Comments
 (0)