Skip to content

Commit 1464102

Browse files
committed
Added previous code to test new changes in prod
1 parent 38a2fca commit 1464102

File tree

8 files changed

+659
-12
lines changed

8 files changed

+659
-12
lines changed

imi/src/main/java/org/motechproject/nms/imi/service/TargetFileService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public interface TargetFileService {
1616
*/
1717
HashMap<String, TargetFileNotification> generateTargetFile(boolean split);
1818

19+
HashMap<String, TargetFileNotification> generateTargetFileApi(boolean split);
1920

2021
TargetFileNotification generateTargetFileWhatsApp();
2122

imi/src/main/java/org/motechproject/nms/imi/service/impl/TargetFileServiceImpl.java

Lines changed: 523 additions & 8 deletions
Large diffs are not rendered by default.

imi/src/main/java/org/motechproject/nms/imi/web/ImiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public String generateTargetFile() {
218218

219219
LOGGER.debug("/generateTargetFile (GET)");
220220
try {
221-
HashMap<String, TargetFileNotification> tfn = targetFileService.generateTargetFile(Boolean.parseBoolean(settingsFacade.getProperty(generateJhFile)));
221+
HashMap<String, TargetFileNotification> tfn = targetFileService.generateTargetFileApi(Boolean.parseBoolean(settingsFacade.getProperty(generateJhFile)));
222222
LOGGER.debug("targetFileService.generateTargetFile() done");
223223

224224
return tfn == null ? "null" : tfn.values().toString();

imi/src/main/resources/securityRules.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,21 @@
7474
"ANY"
7575
]
7676
},
77+
{
78+
"active": true,
79+
"pattern": "/**/generateTargetFileApi/**",
80+
"supportedSchemes": [
81+
"NO_SECURITY"
82+
],
83+
"protocol": "HTTP",
84+
"priority": 2,
85+
"rest": true,
86+
"origin": "SYSTEM_MODULE_IMI",
87+
"version": "all",
88+
"methodsRequired": [
89+
"ANY"
90+
]
91+
},
7792
{
7893
"active": true,
7994
"pattern": "/**/generateWhatsAppSMSTargetFile/**",

kilkari/src/main/java/org/motechproject/nms/kilkari/service/SubscriptionService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,9 @@ Subscription createSubscription(Subscriber subscriber, long callingNumber, Langu
152152
* @param rowCount The maximum number of rows to return
153153
* @return The list of subscriptions due for a message
154154
*/
155-
List<SubscriptionDto> findActiveSubscriptionsForDay(DayOfTheWeek dayOfTheWeek, long offset, int rowCount);
155+
List<SubscriptionDto> findActiveSubscriptionsForDayApi(DayOfTheWeek dayOfTheWeek, long offset, int rowCount);
156+
157+
List<Subscription> findActiveSubscriptionsForDay(DayOfTheWeek dayOfTheWeek, long offset, int rowCount);
156158

157159
List<String> findJhSubscriptionIds();
158160

kilkari/src/main/java/org/motechproject/nms/kilkari/service/SubscriptionTimeSlotService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
public interface SubscriptionTimeSlotService {
88

9-
// List<SubscriptionTimeSlot> findTimeSlotsForSubscriptionsById(List<String> subscriptionId);
9+
List<SubscriptionTimeSlot> findTimeSlotsForSubscriptionsById(List<String> subscriptionId);
1010

1111
List<SubscriptionTimeSlot> findAllTimeSlots();
1212

kilkari/src/main/java/org/motechproject/nms/kilkari/service/impl/SubscriptionServiceImpl.java

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1012,12 +1012,58 @@ public Subscription create(Subscription subscription) {
10121012
// }
10131013
// }
10141014

1015+
@Override
1016+
public List<Subscription> findActiveSubscriptionsForDay(final DayOfTheWeek dow, final long offset,
1017+
final int rowCount) {
1018+
Timer queryTimer = new Timer();
1019+
1020+
@SuppressWarnings("unchecked")
1021+
SqlQueryExecution<List<Subscription>> queryExecution = new SqlQueryExecution<List<Subscription>>() {
1022+
1023+
@Override
1024+
public String getSqlQuery() {
1025+
String query = "SELECT s.id as id, activationDate, deactivationReason, endDate, firstMessageDayOfWeek, " +
1026+
"s.needsWelcomeMessageViaObd, s.origin, s.secondMessageDayOfWeek, s.startDate, " +
1027+
"s.status, s.subscriber_id_OID, s.subscriptionId, s.subscriptionPack_id_OID, " +
1028+
"s.creationDate, s.creator, s.modificationDate, s.modifiedBy, s.owner, s.needsWelcomeOptInForWP " +
1029+
"FROM nms_subscriptions AS s " +
1030+
"INNER JOIN nms_subscription_packs AS p ON s.subscriptionPack_id_OID = p.id " +
1031+
"WHERE s.id > :offset AND " +
1032+
"(firstMessageDayOfWeek = :dow OR " +
1033+
"(secondMessageDayOfWeek = :dow AND p.messagesPerWeek = 2)) AND " +
1034+
"status = 'ACTIVE' AND " +
1035+
" (serviceStatus IN ('IVR', 'IVR_AND_WHATSAPP') OR serviceStatus IS NULL) "+
1036+
"ORDER BY s.id " +
1037+
"LIMIT :max";
1038+
LOGGER.debug(KilkariConstants.SQL_QUERY_LOG, query);
1039+
return query;
1040+
}
1041+
1042+
@Override
1043+
public List<Subscription> execute(Query query) {
1044+
1045+
query.setClass(Subscription.class);
1046+
1047+
Map params = new HashMap();
1048+
params.put("offset", offset);
1049+
params.put("dow", dow.toString());
1050+
params.put("max", rowCount);
1051+
ForwardQueryResult fqr = (ForwardQueryResult) query.executeWithMap(params);
1052+
1053+
return (List<Subscription>) fqr;
1054+
}
1055+
};
1056+
1057+
List<Subscription> subscriptions = subscriptionDataService.executeSQLQuery(queryExecution);
1058+
LOGGER.debug("findActiveSubscriptionsForDay(dow={}, offset={}, rowCount={}) {}", dow, offset, rowCount, queryTimer.time());
1059+
return subscriptions;
1060+
}
10151061

10161062

10171063

10181064

10191065
@Override
1020-
public List<SubscriptionDto> findActiveSubscriptionsForDay(DayOfTheWeek dow, long offset, int rowCount) {
1066+
public List<SubscriptionDto> findActiveSubscriptionsForDayApi(DayOfTheWeek dow, long offset, int rowCount) {
10211067
List<SubscriptionDto> subscriptions = new ArrayList<>();
10221068
String query = "SELECT s.id as id, activationDate, deactivationReason, endDate, firstMessageDayOfWeek, " +
10231069
"s.needsWelcomeMessageViaObd, s.origin, s.secondMessageDayOfWeek, s.startDate, " +

kilkari/src/main/java/org/motechproject/nms/kilkari/service/impl/SubscriptionTimeSlotServiceImpl.java

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,74 @@ public SubscriptionTimeSlotServiceImpl(SubscriptionTimeSlotDataService subscript
2626
this.subscriptionTimeSlotDataService = subscriptionTimeSlotDataService;
2727
}
2828

29+
@Override
30+
public List<SubscriptionTimeSlot> findTimeSlotsForSubscriptionsById(final List<String> subscriptionIds) {
31+
32+
if (subscriptionIds == null || subscriptionIds.isEmpty()) {
33+
LOGGER.warn("No subscription IDs provided, returning empty list.");
34+
return new ArrayList<>();
35+
}
36+
37+
StringBuilder idsString = new StringBuilder();
38+
int i = 0;
39+
while (i < subscriptionIds.size()) {
40+
idsString.append("'").append(subscriptionIds.get(i)).append("'");
41+
if (i < subscriptionIds.size() - 1) {
42+
idsString.append(",");
43+
}
44+
i++;
45+
}
46+
47+
String query = "SELECT ts.subscription_id, ts.subscriptionId, ts.timeStamp1, ts.timeStamp2, ts.timeStamp3 " +
48+
"FROM nms_subscriptions_time_slot AS ts " +
49+
"WHERE ts.subscriptionId IN (" + idsString + ")";
50+
51+
52+
SqlQueryExecution<List<Object[]>> queryExecution = new SqlQueryExecution<List<Object[]>>() {
53+
54+
@Override
55+
public String getSqlQuery() {
56+
return query;
57+
}
58+
59+
@Override
60+
public List<Object[]> execute(Query query) {
61+
ForwardQueryResult fqr = (ForwardQueryResult) query.execute();
62+
63+
List<Object[]> results = new ArrayList<>();
64+
if (fqr != null && !fqr.isEmpty()) {
65+
for (Object result : fqr) {
66+
results.add((Object[]) result);
67+
}
68+
}
69+
70+
return results;
71+
}
72+
};
73+
74+
List<Object[]> rawResults = subscriptionTimeSlotDataService.executeSQLQuery(queryExecution);
75+
76+
List<SubscriptionTimeSlot> subscriptionTimeSlots = new ArrayList<>();
77+
for (Object[] row : rawResults) {
78+
79+
SubscriptionTimeSlot timeSlot = new SubscriptionTimeSlot();
80+
81+
timeSlot.setSubscription_id(((Number) row[0]).longValue());
82+
timeSlot.setSubscriptionId((String) row[1]);
83+
timeSlot.setTimeStamp1((Integer) row[2]);
84+
timeSlot.setTimeStamp2((Integer) row[3]);
85+
timeSlot.setTimeStamp3((Integer) row[4]);
86+
subscriptionTimeSlots.add(timeSlot);
87+
}
88+
if(subscriptionIds.isEmpty()) {
89+
LOGGER.warn("No subscriptionTimeSlots found for fresh calls subscriptionIds:");
90+
}
91+
92+
return subscriptionTimeSlots;
93+
}
94+
95+
96+
2997
@Override
3098
public List<SubscriptionTimeSlot> findAllTimeSlots() {
3199
String query = "SELECT ts.subscription_id, ts.subscriptionId, ts.timeStamp1, ts.timeStamp2, ts.timeStamp3 " +

0 commit comments

Comments
 (0)