Skip to content
This repository has been archived by the owner on Nov 12, 2019. It is now read-only.

Commit

Permalink
Merge pull request #1 from xinevic/release-1.1
Browse files Browse the repository at this point in the history
Release 1.1
  • Loading branch information
Pavel Luhin authored Jan 4, 2017
2 parents 364bf44 + 53e30cb commit 5de09ff
Show file tree
Hide file tree
Showing 175 changed files with 6,090 additions and 990 deletions.
65 changes: 62 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>by.bsu.rfe</groupId>
<artifactId>sms-server</artifactId>
<version>1.0-SNAPSHOT</version>
<version>1.1-RELEASE</version>

<packaging>war</packaging>

Expand Down Expand Up @@ -138,16 +138,75 @@
<version>4.0.0-b01</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>

<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>

<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>2.1.9</version>
<executions>
<execution>
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
<configuration>
<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
<generateGitPropertiesFile>true</generateGitPropertiesFile>
<generateGitPropertiesFilename>${project.build.outputDirectory}/version.properties</generateGitPropertiesFilename>
<gitDescribe>
<abbrev>6</abbrev>
</gitDescribe>
</configuration>
</plugin>
</plugins>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package by.bsu.rfe.smsservice.builder;

import org.apache.http.message.BasicNameValuePair;
import org.springframework.stereotype.Component;

import by.bsu.rfe.smsservice.common.request.Request;
import by.bsu.rfe.smsservice.common.websms.WebSMSRest;

/**
* Created by pluhin on 9/11/16.
*/
@Component
public class BalanceRequestBuilder {
public Request buildRequest(String username, String apiKey) {
Request request = new Request();
request.setApiEndpoint(WebSMSRest.BALANCE.getApiEndpoint());

request.addParameter(new BasicNameValuePair("user", username));
request.addParameter(new BasicNameValuePair("apikey", apiKey));
return request;
}
}
10 changes: 0 additions & 10 deletions src/main/java/by/bsu/rfe/smsservice/builder/RequestBuilder.java

This file was deleted.

162 changes: 162 additions & 0 deletions src/main/java/by/bsu/rfe/smsservice/builder/SendSMSRequestBuilder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
package by.bsu.rfe.smsservice.builder;

import static by.bsu.rfe.smsservice.common.websms.WebSMSParam.APIKEY;
import static by.bsu.rfe.smsservice.common.websms.WebSMSParam.MESSAGE;
import static by.bsu.rfe.smsservice.common.websms.WebSMSParam.MESSAGES;
import static by.bsu.rfe.smsservice.common.websms.WebSMSParam.RECIPIENTS;
import static by.bsu.rfe.smsservice.common.websms.WebSMSParam.SENDER;
import static by.bsu.rfe.smsservice.common.websms.WebSMSParam.TEST;
import static by.bsu.rfe.smsservice.common.websms.WebSMSParam.USER;

import by.bsu.rfe.smsservice.common.dto.GroupDTO;
import by.bsu.rfe.smsservice.common.dto.PersonDTO;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.message.BasicNameValuePair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import by.bsu.rfe.smsservice.common.entity.CredentialsEntity;
import by.bsu.rfe.smsservice.common.entity.GroupEntity;
import by.bsu.rfe.smsservice.common.entity.PersonEntity;
import by.bsu.rfe.smsservice.common.enums.RecipientType;
import by.bsu.rfe.smsservice.common.request.Request;
import by.bsu.rfe.smsservice.common.websms.WebSMSRest;
import by.bsu.rfe.smsservice.service.CredentialsService;
import by.bsu.rfe.smsservice.service.RecipientService;

/**
* Created by pluhin on 12/27/15.
*/
@Component("sendSMS")
public class SendSMSRequestBuilder {

private static final Logger LOGGER = LoggerFactory.getLogger(SendSMSRequestBuilder.class);

@Autowired
private RecipientService recipientService;

@Autowired
private CredentialsService credentialsService;

@Value("${sms.test}")
private Integer test;

public Request buildRequest(Map.Entry<String, RecipientType> recipient, Map<String, String> parameters, String smsContent, String requestSenderName) {
if (parameters == null) {
parameters = new HashMap<>();
}

if (recipient.getValue() != RecipientType.NUMBER) {
collectAdditionalParameters(recipient, parameters);
}

Request request = buildBaseRequest(requestSenderName);

request.setApiEndpoint(WebSMSRest.SEND_MESSAGE.getApiEndpoint());

if (recipient.getValue() == RecipientType.NUMBER) {
request.addParameter(new BasicNameValuePair(RECIPIENTS.getRequestParam(), recipient.getKey()));
} else if (recipient.getValue() == RecipientType.GROUP) {
GroupEntity groupEntity = recipientService.getGroupByName(recipient.getKey());
request.addParameter(new BasicNameValuePair(RECIPIENTS.getRequestParam(), getAllRecipientsFromGroup(groupEntity)));
} else {
PersonEntity personEntity = recipientService.getPerson(recipient.getKey().split("-"));
request.addParameter(new BasicNameValuePair(RECIPIENTS.getRequestParam(), personEntity.getPhoneNumber()));
}

String message = createMessage(smsContent, parameters, smsContent);

request.addParameter(new BasicNameValuePair(MESSAGE.getRequestParam(), message));

return request;
}

public Request buildBulkRequest(Map<String, String> messages, String requestSenderName) {
Request request = buildBaseRequest(requestSenderName);

request.setApiEndpoint(WebSMSRest.BULK_SEND_MESSAGE.getApiEndpoint());
String messagesArray = createArrayOfMessages(messages);
request.addParameter(new BasicNameValuePair(MESSAGES.getRequestParam(), messagesArray));
return request;
}

private Request buildBaseRequest(String requestSenderName) {
Request request = new Request();

CredentialsEntity credentials;
if (StringUtils.isEmpty(requestSenderName)) {
credentials = credentialsService.getDefaultCredentialsForCurrentUser();
} else {
credentials = credentialsService.getCredentialsForSenderName(requestSenderName);
}

if (credentials == null) {
throw new NullPointerException("User doesn't allowed to send sms.");
}

request.addParameter(new BasicNameValuePair(USER.getRequestParam(), credentials.getUsername()));
request.addParameter(new BasicNameValuePair(APIKEY.getRequestParam(), credentials.getApiKey()));
request.addParameter(new BasicNameValuePair(SENDER.getRequestParam(), credentials.getSender()));
request.addParameter(new BasicNameValuePair(TEST.getRequestParam(), test.toString()));

return request;
}

private String getAllRecipientsFromGroup(GroupEntity groupEntity) {
StringBuilder stringBuilder = new StringBuilder();
for (PersonEntity person : groupEntity.getPersons()) {
stringBuilder.append(person.getPhoneNumber());
stringBuilder.append(",");
}
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
return stringBuilder.toString();
}

private void collectAdditionalParameters(Map.Entry<String, RecipientType> recipient, Map<String, String> parameters) {
}

public static String createMessage(String template, Map<String, String> messageParameters, String originalMessage) {
String regex = "\\$\\{([^}]+)\\}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(template);
String result = template;
while (matcher.find()) {
String token = matcher.group();
String replacementValue = null;
if (messageParameters.containsKey(token)) {
replacementValue = messageParameters.get(token);
} else {
LOGGER.error("Not enough parameters. Could not create message.");
LOGGER.error("Original message: {}", originalMessage);
LOGGER.error("Parameters: {}", messageParameters);
throw new IllegalArgumentException("Not enough parameters. Could not create message.");
}

result = result.replaceFirst(Pattern.quote(token), replacementValue);
}

return result;
}

private String createArrayOfMessages(Map<String, String> messages) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("[");

for (Map.Entry<String, String> message : messages.entrySet()) {
stringBuilder.append("{\"recipient\":\"").append(message.getKey()).append("\",");
stringBuilder.append("\"message\":\"").append(message.getValue()).append("\"},");
}

stringBuilder.deleteCharAt(stringBuilder.length() - 1);
stringBuilder.append("]");
return stringBuilder.toString();
}
}

This file was deleted.

19 changes: 19 additions & 0 deletions src/main/java/by/bsu/rfe/smsservice/bulk/ExcelColumnName.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package by.bsu.rfe.smsservice.bulk;

/**
* Created by pluhin on 7/13/16.
*/
public enum ExcelColumnName {
MOBILE_NUMBER("Mobile Number"),
MESSAGE("Message");

private String columnKey;

ExcelColumnName(String columnKey) {
this.columnKey = columnKey;
}

public String getColumnKey() {
return columnKey;
}
}
Loading

0 comments on commit 5de09ff

Please sign in to comment.