Ultimato refactoring FirebaseService
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
This commit is contained in:
@@ -158,29 +158,21 @@ public class NotificationController {
|
||||
ServiceRestResponse sendNotification(HttpServletRequest request,
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestBody MessageDTO messageDTO) {
|
||||
if (!firebaseService.isActive()) {
|
||||
return ServiceRestResponse.createNegativeResponse("Servizio notifiche non attivo.");
|
||||
}
|
||||
|
||||
Message.Builder builder = messageDTO.toBuilder();
|
||||
|
||||
if (messageDTO.getUserName() != null) {
|
||||
builder.setTopic(firebaseService.getUserTopic(messageDTO.getUserName(), configuration));
|
||||
}
|
||||
|
||||
ServiceRestResponse response;
|
||||
|
||||
try {
|
||||
firebaseService.sendMessage(multiDBTransactionManager.getPrimaryDatasource(), builder.build());
|
||||
Message.Builder builder = messageDTO.toBuilder();
|
||||
|
||||
response = ServiceRestResponse.createPositiveResponse("Notifica inviata.");
|
||||
if (messageDTO.getUserName() != null) {
|
||||
builder.setTopic(firebaseService.getUserTopic(multiDBTransactionManager.getPrimaryDatasource(), messageDTO.getUserName()));
|
||||
}
|
||||
|
||||
firebaseService.sendMessage(multiDBTransactionManager.getPrimaryDatasource(), builder.build());
|
||||
return ServiceRestResponse.createPositiveResponse("Notifica inviata.");
|
||||
} catch (Exception e) {
|
||||
logger.error(request.getRequestURI(), e);
|
||||
|
||||
response = ServiceRestResponse.createNegativeResponse(e);
|
||||
return ServiceRestResponse.createNegativeResponse(e);
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
@RequestMapping(value = EmsRestConstants.PATH_NOTIF_SEND_USER_DEVICES, method = RequestMethod.POST)
|
||||
@@ -188,10 +180,6 @@ public class NotificationController {
|
||||
ServiceRestResponse sendNotificationToUserDevices(HttpServletRequest request,
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestBody MessageDTO messageDTO) {
|
||||
if (!firebaseService.isActive()) {
|
||||
return ServiceRestResponse.createNegativeResponse("Servizio notifiche non attivo.");
|
||||
}
|
||||
|
||||
ServiceRestResponse response;
|
||||
|
||||
try {
|
||||
@@ -225,10 +213,6 @@ public class NotificationController {
|
||||
public ServiceRestResponse sendNotificheCRM(HttpServletRequest request,
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestParam int expiryMins) {
|
||||
if (!firebaseService.isActive()) {
|
||||
return ServiceRestResponse.createNegativeResponse("Servizio notifiche non attivo.");
|
||||
}
|
||||
|
||||
String titoloNotificheCRM = null;
|
||||
try {
|
||||
titoloNotificheCRM = setupGest.getSetup("FIREBASE", "NOTIFICATION", "TITOLO_NOTIFICHE_CRM");
|
||||
|
||||
@@ -55,16 +55,16 @@ public class DeviceTokenService {
|
||||
String userName = UtilityHashMap.getValueIfExists(result, "user_name");
|
||||
|
||||
if (userName != null && !userDeviceToken.getUserName().equals(userName)) {
|
||||
firebaseService.unsubscribeFromUser(userDeviceToken.getDeviceToken(), userName, multiDBTransactionManager.getPrimaryDatasource().getProfile());
|
||||
firebaseService.unsubscribeFromUser(multiDBTransactionManager.getPrimaryDatasource(), userDeviceToken.getDeviceToken(), userName);
|
||||
|
||||
WtbDeviceTokenTopic deviceTokenTopic = new WtbDeviceTokenTopic();
|
||||
|
||||
deviceTokenTopic.setOperation(OperationType.DELETE);
|
||||
deviceTokenTopic.setTopicName(firebaseService.getUserTopic(userName, multiDBTransactionManager.getPrimaryDatasource().getProfile()));
|
||||
deviceTokenTopic.setTopicName(firebaseService.getUserTopic(multiDBTransactionManager.getPrimaryDatasource(), userName));
|
||||
|
||||
userDeviceToken.addWtbDeviceTokenTopic(deviceTokenTopic);
|
||||
|
||||
firebaseService.subscribeToUser(userDeviceToken.getDeviceToken(), userDeviceToken.getUserName(), multiDBTransactionManager.getPrimaryDatasource().getProfile());
|
||||
firebaseService.subscribeToUser(multiDBTransactionManager.getPrimaryDatasource(), userDeviceToken.getDeviceToken(), userDeviceToken.getUserName());
|
||||
}
|
||||
|
||||
this.manageSubscriptionToTopics(userDeviceToken, SubscribeOperation.SUBSCRIBE, deleteOldTopics);
|
||||
@@ -93,7 +93,7 @@ public class DeviceTokenService {
|
||||
|
||||
entityProcessor.processEntity(userDeviceToken, multiDBTransactionManager);
|
||||
|
||||
firebaseService.unsubscribeFromUser(userDeviceToken.getDeviceToken(), userDeviceToken.getUserName(), multiDBTransactionManager.getPrimaryDatasource().getProfile());
|
||||
firebaseService.unsubscribeFromUser(multiDBTransactionManager.getPrimaryDatasource(), userDeviceToken.getDeviceToken(), userDeviceToken.getUserName());
|
||||
|
||||
this.manageSubscriptionToTopics(userDeviceToken, SubscribeOperation.UNSUBSCRIBE);
|
||||
|
||||
@@ -116,7 +116,7 @@ public class DeviceTokenService {
|
||||
|
||||
entityProcessor.processEntity(userDeviceToken, multiDBTransactionManager);
|
||||
|
||||
firebaseService.unsubscribeFromUser(userDeviceToken.getDeviceToken(), userDeviceToken.getUserName(), multiDBTransactionManager.getPrimaryDatasource().getProfile());
|
||||
firebaseService.unsubscribeFromUser(multiDBTransactionManager.getPrimaryDatasource(), userDeviceToken.getDeviceToken(), userDeviceToken.getUserName());
|
||||
|
||||
this.manageSubscriptionToTopics(userDeviceToken, SubscribeOperation.UNSUBSCRIBE);
|
||||
|
||||
@@ -207,7 +207,7 @@ public class DeviceTokenService {
|
||||
}
|
||||
}
|
||||
|
||||
final String userTopic = firebaseService.getUserTopic(userDeviceToken.getUserName(), multiDBTransactionManager.getPrimaryDatasource().getProfile());
|
||||
final String userTopic = firebaseService.getUserTopic(multiDBTransactionManager.getPrimaryDatasource(), userDeviceToken.getUserName());
|
||||
|
||||
if (userDeviceToken.getTopics() == null) {
|
||||
userDeviceToken.setWtbDeviceTokenTopicFromTopics(Collections.singletonList(userTopic));
|
||||
@@ -218,13 +218,13 @@ public class DeviceTokenService {
|
||||
switch (operation) {
|
||||
case SUBSCRIBE:
|
||||
for (WtbDeviceTokenTopic deviceTokenTopic : userDeviceToken.getWtbDeviceTokenTopic()) {
|
||||
firebaseService.subscribeToTopic(userDeviceToken.getDeviceToken(), deviceTokenTopic.getTopicName());
|
||||
firebaseService.subscribeToTopic(multiDBTransactionManager.getPrimaryDatasource(), userDeviceToken.getDeviceToken(), deviceTokenTopic.getTopicName());
|
||||
}
|
||||
|
||||
break;
|
||||
case UNSUBSCRIBE:
|
||||
for (WtbDeviceTokenTopic deviceTokenTopic : userDeviceToken.getWtbDeviceTokenTopic()) {
|
||||
firebaseService.unsubscribeFromTopic(userDeviceToken.getDeviceToken(), deviceTokenTopic.getTopicName());
|
||||
firebaseService.unsubscribeFromTopic(multiDBTransactionManager.getPrimaryDatasource(), userDeviceToken.getDeviceToken(), deviceTokenTopic.getTopicName());
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -295,7 +295,7 @@ public class DeviceTokenService {
|
||||
|
||||
ps.close();
|
||||
|
||||
firebaseService.unsubscribeFromTopic(userDeviceToken.getDeviceToken(), topic);
|
||||
firebaseService.unsubscribeFromTopic(multiDBTransactionManager.getPrimaryDatasource(), userDeviceToken.getDeviceToken(), topic);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -90,99 +90,100 @@ public class FirebaseService {
|
||||
}
|
||||
|
||||
public String sendMessage(DataSource datasource, Message message) throws Exception {
|
||||
if (!this.isInitialized()) {
|
||||
if (!this.isInitialized(datasource)) {
|
||||
throw new FirebaseNotReadyException();
|
||||
}
|
||||
|
||||
return FirebaseMessaging.getInstance().send(message, this.isDryRun(datasource));
|
||||
}
|
||||
|
||||
public TopicManagementResponse subscribeToTopic(String deviceToken, String topic) throws Exception {
|
||||
if (!this.isInitialized()) {
|
||||
public TopicManagementResponse subscribeToTopic(DataSource datasource, String deviceToken, String topic) throws Exception {
|
||||
if (!this.isInitialized(datasource)) {
|
||||
throw new FirebaseNotReadyException();
|
||||
}
|
||||
|
||||
return FirebaseMessaging.getInstance().subscribeToTopic(Collections.singletonList(deviceToken), topic);
|
||||
}
|
||||
|
||||
public TopicManagementResponse subscribeToTopic(List<String> deviceTokens, String topic) throws Exception {
|
||||
if (!this.isInitialized()) {
|
||||
public TopicManagementResponse subscribeToTopic(DataSource datasource, List<String> deviceTokens, String topic) throws Exception {
|
||||
if (!this.isInitialized(datasource)) {
|
||||
throw new FirebaseNotReadyException();
|
||||
}
|
||||
|
||||
return FirebaseMessaging.getInstance().subscribeToTopic(deviceTokens, topic);
|
||||
}
|
||||
|
||||
public void subscribeToTopics(String deviceToken, List<String> topics) throws Exception {
|
||||
public void subscribeToTopics(DataSource datasource, String deviceToken, List<String> topics) throws Exception {
|
||||
for (String topic : topics) {
|
||||
this.subscribeToTopic(deviceToken, topic);
|
||||
this.subscribeToTopic(datasource, deviceToken, topic);
|
||||
}
|
||||
}
|
||||
|
||||
public TopicManagementResponse subscribeToUser(String deviceToken, String userName, String profileDb) throws Exception {
|
||||
if (!this.isInitialized()) {
|
||||
public TopicManagementResponse subscribeToUser(DataSource datasource, String deviceToken, String userName) throws Exception {
|
||||
if (!this.isInitialized(datasource)) {
|
||||
throw new FirebaseNotReadyException();
|
||||
}
|
||||
|
||||
return this.subscribeToTopic(deviceToken, getUserTopic(userName, profileDb));
|
||||
return this.subscribeToTopic(datasource, deviceToken, getUserTopic(datasource, userName));
|
||||
}
|
||||
|
||||
public TopicManagementResponse subscribeToUser(List<String> deviceTokens, String userName, String profileDb) throws Exception {
|
||||
if (!this.isInitialized()) {
|
||||
public TopicManagementResponse subscribeToUser(DataSource datasource, List<String> deviceTokens, String userName) throws Exception {
|
||||
if (!this.isInitialized(datasource)) {
|
||||
throw new FirebaseNotReadyException();
|
||||
}
|
||||
|
||||
return this.subscribeToTopic(deviceTokens, getUserTopic(userName, profileDb));
|
||||
return this.subscribeToTopic(datasource, deviceTokens, getUserTopic(datasource, userName));
|
||||
}
|
||||
|
||||
public TopicManagementResponse unsubscribeFromTopic(String deviceToken, String topic) throws Exception {
|
||||
if (!this.isInitialized())
|
||||
public TopicManagementResponse unsubscribeFromTopic(DataSource dataSource, String deviceToken, String topic) throws Exception {
|
||||
if (!this.isInitialized(dataSource))
|
||||
throw new FirebaseNotReadyException();
|
||||
|
||||
|
||||
return FirebaseMessaging.getInstance().unsubscribeFromTopic(Collections.singletonList(deviceToken), topic);
|
||||
}
|
||||
|
||||
public TopicManagementResponse unsubscribeFromTopic(List<String> deviceTokens, String topic) throws Exception {
|
||||
if (!this.isInitialized()) {
|
||||
public TopicManagementResponse unsubscribeFromTopic(DataSource dataSource, List<String> deviceTokens, String topic) throws Exception {
|
||||
if (!this.isInitialized(dataSource)) {
|
||||
throw new FirebaseNotReadyException();
|
||||
}
|
||||
|
||||
return FirebaseMessaging.getInstance().unsubscribeFromTopic(deviceTokens, topic);
|
||||
}
|
||||
|
||||
public void unsubscribeFromTopics(String deviceToken, List<String> topics) throws Exception {
|
||||
public void unsubscribeFromTopics(DataSource dataSource, String deviceToken, List<String> topics) throws Exception {
|
||||
for (String topic : topics) {
|
||||
this.unsubscribeFromTopic(deviceToken, topic);
|
||||
this.unsubscribeFromTopic(dataSource, deviceToken, topic);
|
||||
}
|
||||
}
|
||||
|
||||
public TopicManagementResponse unsubscribeFromUser(String deviceToken, String userName, String profileDb) throws Exception {
|
||||
if (!this.isInitialized()) {
|
||||
public TopicManagementResponse unsubscribeFromUser(DataSource dataSource, String deviceToken, String userName) throws Exception {
|
||||
if (!this.isInitialized(dataSource)) {
|
||||
throw new FirebaseNotReadyException();
|
||||
}
|
||||
|
||||
return this.unsubscribeFromTopic(deviceToken, getUserTopic(userName, profileDb));
|
||||
return this.unsubscribeFromTopic(dataSource, deviceToken, getUserTopic(dataSource, userName));
|
||||
}
|
||||
|
||||
public TopicManagementResponse unsubscribeFromUser(List<String> deviceTokens, String userName, String profileDb) throws Exception {
|
||||
if (!this.isInitialized()) {
|
||||
public TopicManagementResponse unsubscribeFromUser(DataSource dataSource, List<String> deviceTokens, String userName) throws Exception {
|
||||
if (!this.isInitialized(dataSource)) {
|
||||
throw new FirebaseNotReadyException();
|
||||
}
|
||||
|
||||
return this.unsubscribeFromTopic(deviceTokens, getUserTopic(userName, profileDb));
|
||||
return this.unsubscribeFromTopic(dataSource, deviceTokens, getUserTopic(dataSource, userName));
|
||||
}
|
||||
|
||||
private boolean isInitialized() {
|
||||
return initialized;
|
||||
private boolean isInitialized(DataSource advancedDataSource) {
|
||||
String dbName = advancedDataSource.getDbName();
|
||||
return initializedInstances.getOrDefault(dbName, false);
|
||||
}
|
||||
|
||||
private boolean isDryRun(DataSource advancedDataSource) {
|
||||
public boolean isDryRun(DataSource advancedDataSource) {
|
||||
return !IntegryCustomerDB.Integry_Studioml.getValue().equalsIgnoreCase(advancedDataSource.getDbName()) &&
|
||||
(UtilityDebug.isDebugExecution() || UtilityDebug.isIntegryServer());
|
||||
}
|
||||
|
||||
public String getUserTopic(String userName, String profileDb) {
|
||||
return (NOTIF_USER_TOPIC_PREFIX + userName + "_" + profileDb).toLowerCase();
|
||||
public String getUserTopic(DataSource dataSource, String userName) {
|
||||
return (NOTIF_USER_TOPIC_PREFIX + userName + "_" + dataSource.getProfile()).toLowerCase();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -401,7 +401,7 @@ public class NotificationService {
|
||||
builder.setToken(deviceToken);
|
||||
|
||||
try {
|
||||
if (firebaseService.isDryRun()) {
|
||||
if (firebaseService.isDryRun(multiDBTransactionManager.getPrimaryDatasource())) {
|
||||
logger.debug("Invio notifica Firebase in dry run: \n" + notification);
|
||||
}
|
||||
|
||||
@@ -536,7 +536,7 @@ public class NotificationService {
|
||||
Message.Builder builder = messageDTO.toBuilder();
|
||||
|
||||
if (messageDTO.getUserName() != null) {
|
||||
builder.setTopic(firebaseService.getUserTopic(messageDTO.getUserName(), multiDBTransactionManager.getPrimaryDatasource().getProfile()));
|
||||
builder.setTopic(firebaseService.getUserTopic(multiDBTransactionManager.getPrimaryDatasource(), messageDTO.getUserName()));
|
||||
}
|
||||
|
||||
firebaseService.sendMessage(multiDBTransactionManager.getPrimaryDatasource(), builder.build());
|
||||
|
||||
Reference in New Issue
Block a user