Commit e2aff233373b9b406a65cdb65ba6b96afac44101

Authored by hausdoerfer
1 parent 1287623a

built-in logging for inbound messages and customized table names

services/Common/src/main/java/de/bht/beuthbot/daos/LogMessageDAO.java 0 → 100644
  1 +package de.bht.beuthbot.daos;
  2 +
  3 +import de.bht.beuthbot.model.entities.LogMessage;
  4 +
  5 +import javax.ejb.Remote;
  6 +
  7 +/**
  8 + * Created by Stephan Hausdörfer on 19.01.2018.
  9 + */
  10 +@Remote
  11 +public interface LogMessageDAO extends GenericDAO<LogMessage, Long> {
  12 +
  13 + LogMessage createMessage();
  14 +}
... ...
services/Common/src/main/java/de/bht/beuthbot/daos/LogMessageDAOImpl.java 0 → 100644
  1 +package de.bht.beuthbot.daos;
  2 +
  3 +import de.bht.beuthbot.model.entities.LogMessage;
  4 +import de.bht.beuthbot.model.entities.LogMessageImpl;
  5 +
  6 +import javax.ejb.Stateless;
  7 +
  8 +/**
  9 + * Created by Stephan Hausdörfer on 19.01.2018.
  10 + */
  11 +@Stateless
  12 +public class LogMessageDAOImpl extends GenericHibernateDAO<LogMessage, LogMessageImpl, Long> implements LogMessageDAO {
  13 +
  14 + @Override
  15 + public LogMessage createMessage() {
  16 + return new LogMessageImpl();
  17 + }
  18 +}
0 19 \ No newline at end of file
... ...
services/Common/src/main/java/de/bht/beuthbot/model/entities/AppUserImpl.java
... ... @@ -13,7 +13,7 @@ import javax.persistence.Table;
13 13 * Postgres does not support creating a table named "user".
14 14 */
15 15 @Entity
16   -@Table
  16 +@Table(name = "app_user")
17 17 public class AppUserImpl extends EntityBaseImpl implements AppUser {
18 18  
19 19 private String facebookUserId;
... ...
services/Common/src/main/java/de/bht/beuthbot/model/entities/GenericEntity.java
... ... @@ -14,7 +14,7 @@ import java.util.stream.Collectors;
14 14 * Follows the Entity-Attribute-Value model of database design.
15 15 */
16 16 @Entity
17   -@Table
  17 +@Table(name = "generic_entity")
18 18 public class GenericEntity extends EntityBaseImpl {
19 19  
20 20 /**
... ...
services/Common/src/main/java/de/bht/beuthbot/model/entities/GenericEntityAttribute.java
... ... @@ -14,7 +14,7 @@ import java.util.stream.Collectors;
14 14 * Holds a collection of generic values.
15 15 */
16 16 @Entity
17   -@Table
  17 +@Table(name = "generic_entity_attribute")
18 18 public class GenericEntityAttribute extends EntityBaseImpl {
19 19  
20 20 private String name;
... ...
services/Common/src/main/java/de/bht/beuthbot/model/entities/GenericEntityAttributeValue.java
... ... @@ -11,7 +11,7 @@ import javax.persistence.Table;
11 11 * Supports complex nested types using a reference to a generic sub entity.
12 12 */
13 13 @Entity
14   -@Table
  14 +@Table(name = "generic_entity_attribute_value")
15 15 public class GenericEntityAttributeValue extends EntityBaseImpl {
16 16  
17 17 private Boolean valueAsBool;
... ...
services/Common/src/main/java/de/bht/beuthbot/model/entities/LogMessage.java 0 → 100644
  1 +package de.bht.beuthbot.model.entities;
  2 +
  3 +/**
  4 + * Created by Stephan Hausdörfer on 19.01.2018.
  5 + */
  6 +public interface LogMessage extends EntityBase {
  7 +
  8 + long getUserId();
  9 +
  10 + void setUserId(long userId);
  11 +
  12 + String getMessage();
  13 +
  14 + void setMessage(String message);
  15 +}
... ...
services/Common/src/main/java/de/bht/beuthbot/model/entities/LogMessageImpl.java 0 → 100644
  1 +package de.bht.beuthbot.model.entities;
  2 +
  3 +import javax.persistence.Entity;
  4 +import javax.persistence.Table;
  5 +
  6 +/**
  7 + * Created by Stephan Hausdörfer on 19.01.2018.
  8 + */
  9 +@Entity
  10 +@Table(name = "log_message")
  11 +public class LogMessageImpl extends EntityBaseImpl implements LogMessage {
  12 +
  13 + private long userId;
  14 +
  15 + private String message;
  16 +
  17 +
  18 + @Override
  19 + public long getUserId() {
  20 + return userId;
  21 + }
  22 +
  23 + @Override
  24 + public void setUserId(long userId) {
  25 + this.userId = userId;
  26 + }
  27 +
  28 + @Override
  29 + public String getMessage() {
  30 + return message;
  31 + }
  32 +
  33 + @Override
  34 + public void setMessage(String message) {
  35 + this.message = message;
  36 + }
  37 +}
... ...
services/Common/src/main/java/de/bht/beuthbot/model/entities/ReminderImpl.java
... ... @@ -3,6 +3,7 @@ package de.bht.beuthbot.model.entities;
3 3 import de.bht.beuthbot.model.Messenger;
4 4 import de.bht.beuthbot.model.enumeration.ReminderCycle;
5 5  
  6 +import javax.persistence.CollectionTable;
6 7 import javax.persistence.ElementCollection;
7 8 import javax.persistence.Entity;
8 9 import javax.persistence.Table;
... ... @@ -13,7 +14,7 @@ import java.util.Map;
13 14 * Created by Stephan Hausdörfer on 16.01.2018.
14 15 */
15 16 @Entity
16   -@Table
  17 +@Table(name = "reminder")
17 18 public class ReminderImpl extends EntityBaseImpl implements Reminder {
18 19  
19 20 private long userId;
... ... @@ -27,6 +28,7 @@ public class ReminderImpl extends EntityBaseImpl implements Reminder {
27 28 private String intent;
28 29  
29 30 @ElementCollection
  31 + @CollectionTable(name = "reminder_entities")
30 32 private Map<String, String> entities;
31 33  
32 34 @Override
... ...
services/MainBot/src/main/java/de/bht/beuthbot/drools/DroolsService.java
1 1 package de.bht.beuthbot.drools;
2 2  
3   -
4   -
5   -
6 3 import com.google.gson.Gson;
7 4  
8   -
9 5 import de.bht.beuthbot.attachments.AttachmentStore;
10 6 import de.bht.beuthbot.canteen.Parser;
11 7 import de.bht.beuthbot.canteen.model.CanteenData;
12 8 import de.bht.beuthbot.conf.Application;
13 9 import de.bht.beuthbot.daos.AppUserDAO;
  10 +import de.bht.beuthbot.daos.LogMessageDAO;
14 11 import de.bht.beuthbot.drools.model.DroolsMessage;
15 12 import de.bht.beuthbot.jms.ProcessQueue;
16 13 import de.bht.beuthbot.jms.ProcessQueueMessageProtocol;
... ... @@ -18,6 +15,8 @@ import de.bht.beuthbot.jms.Target;
18 15 import de.bht.beuthbot.jms.TaskMessage;
19 16 import de.bht.beuthbot.model.Messenger;
20 17 import de.bht.beuthbot.model.entities.AppUser;
  18 +
  19 +import de.bht.beuthbot.model.entities.LogMessage;
21 20 import org.kie.api.KieServices;
22 21 import org.kie.api.runtime.KieContainer;
23 22 import org.kie.api.runtime.KieSession;
... ... @@ -73,6 +72,9 @@ public class DroolsService implements MessageListener {
73 72 @Resource(lookup = "java:global/global/AppUserDAOImpl")
74 73 private AppUserDAO userDAO;
75 74  
  75 + @Resource(lookup = "java:global/global/LogMessageDAOImpl")
  76 + private LogMessageDAO logMessageDAO;
  77 +
76 78 @Inject
77 79 private Parser parser;
78 80  
... ... @@ -143,7 +145,10 @@ public class DroolsService implements MessageListener {
143 145 }
144 146 AppUser finishedUser = userDAO.saveOrUpdate(tempUser);
145 147  
146   -
  148 + LogMessage logMessage = logMessageDAO.createMessage();
  149 + logMessage.setUserId(finishedUser.getId());
  150 + logMessage.setMessage(botMessage.getText());
  151 + logMessageDAO.saveOrUpdate(logMessage);
147 152  
148 153 ksession.setGlobal("canteenData", canteenData);
149 154 ksession.setGlobal("user", finishedUser);
... ...
services/Telegram/src/main/java/de/bht/beuthbot/messenger/telegram/TelegramReceiveAdapter.java
... ... @@ -13,6 +13,9 @@ import com.pengrad.telegrambot.response.GetFileResponse;
13 13 import de.bht.beuthbot.attachments.AttachmentStore;
14 14 import de.bht.beuthbot.conf.Application;
15 15 import de.bht.beuthbot.conf.Configuration;
  16 +import de.bht.beuthbot.daos.AppUserDAO;
  17 +import de.bht.beuthbot.daos.LogMessageDAO;
  18 +import de.bht.beuthbot.daos.ReminderDAO;
16 19 import de.bht.beuthbot.jms.ProcessQueue;
17 20 import de.bht.beuthbot.jms.TaskMessage;
18 21 import de.bht.beuthbot.messenger.telegram.model.TelegramAttachment;
... ... @@ -20,6 +23,11 @@ import de.bht.beuthbot.messenger.telegram.model.TelegramMessage;
20 23 import de.bht.beuthbot.messenger.telegram.model.TelegramWebhookURL;
21 24 import de.bht.beuthbot.model.Attachment;
22 25 import de.bht.beuthbot.model.AttachmentType;
  26 +import de.bht.beuthbot.model.Messenger;
  27 +import de.bht.beuthbot.model.entities.AppUser;
  28 +import de.bht.beuthbot.model.entities.LogMessage;
  29 +import de.bht.beuthbot.model.entities.Reminder;
  30 +import de.bht.beuthbot.model.enumeration.ReminderCycle;
23 31 import org.apache.http.HttpStatus;
24 32 import org.slf4j.Logger;
25 33 import org.slf4j.LoggerFactory;
... ... @@ -27,10 +35,14 @@ import org.slf4j.LoggerFactory;
27 35 import javax.annotation.PostConstruct;
28 36 import javax.annotation.Resource;
29 37 import javax.ws.rs.Consumes;
  38 +import javax.ws.rs.GET;
30 39 import javax.ws.rs.POST;
31 40 import javax.ws.rs.Path;
32 41 import javax.ws.rs.core.MediaType;
33 42 import javax.ws.rs.core.Response;
  43 +import java.time.LocalDate;
  44 +import java.util.HashMap;
  45 +import java.util.List;
34 46  
35 47 /**
36 48 * @Author: Christopher Kümmel on 5/14/2017.
... ... @@ -56,6 +68,18 @@ public class TelegramReceiveAdapter {
56 68 /** com.pengrad.telegrambot.TelegramBot; */
57 69 private TelegramBot bot;
58 70  
  71 + /** Injected AppUserDAO */
  72 + @Resource(lookup = "java:global/global/AppUserDAOImpl")
  73 + private AppUserDAO userDAO;
  74 +
  75 + /** Injected AppUserDAO */
  76 + @Resource(lookup = "java:global/global/ReminderDAOImpl")
  77 + private ReminderDAO reminderDAO;
  78 +
  79 + /** Injected AppUserDAO */
  80 + @Resource(lookup = "java:global/global/LogMessageDAOImpl")
  81 + private LogMessageDAO logMessageDAO;
  82 +
59 83 /**
60 84 * Initialize TelegramBot with Token
61 85 */
... ... @@ -131,6 +155,52 @@ public class TelegramReceiveAdapter {
131 155 }
132 156 }
133 157  
  158 + /**
  159 + * Test method for database
  160 + * @return Http response
  161 + */
  162 + @GET
  163 + @Path("/testDatabase")
  164 + public Response testDatabase() {
  165 + logger.info("testDatabase: Start");
  166 + AppUser user = userDAO.createUser();
  167 + user.setFacebookUserId("88");
  168 + user.setTelegramUserId("99");
  169 + user.setProperty("test_key", "test_value");
  170 + userDAO.saveOrUpdate(user);
  171 + logger.info("testDatabase: Speichern durchgefuehrt");
  172 +
  173 + List<AppUser> userList = userDAO.findAll();
  174 + String result = userList.get(0).getTelegramUserId();
  175 + logger.info("TelegramUserId: " + result);
  176 + logger.info("testDatabase: Auslesen durchgefuehrt");
  177 +
  178 + Reminder reminder = reminderDAO.createReminder();
  179 + reminder.setMessenger(Messenger.TELEGRAM);
  180 + reminder.setReminderCycle(ReminderCycle.DAILY);
  181 + reminder.setCycleTime(LocalDate.now());
  182 + Long userId = userList.get(0).getId();
  183 + reminder.setUserId(userId);
  184 + reminder.setIntent("Intent");
  185 + HashMap entities = new HashMap();
  186 + entities.put("key1", "value2");
  187 + entities.put("key2", "value2");
  188 + reminder.setEntities(entities);
  189 + reminderDAO.saveOrUpdate(reminder);
  190 +
  191 + List<Reminder> reminders = reminderDAO.findAll();
  192 + Reminder reminderResult = reminders.get(0);
  193 + logger.info("Reminder Cycle: " + reminderResult.getReminderCycle().toString());
  194 + logger.info("Telegram ID via Reminder: " + userDAO.findById(reminderResult.getUserId()).getTelegramUserId());
  195 +
  196 + LogMessage logMessage = logMessageDAO.createMessage();
  197 + logMessage.setUserId(userList.get(0).getId());
  198 + logMessage.setMessage("Message");
  199 + logMessageDAO.saveOrUpdate(logMessage);
  200 +
  201 + return Response.status(HttpStatus.SC_OK).build();
  202 + }
  203 +
134 204  
135 205 /**
136 206 * RESTEasy HTTP Post to set Webhook
... ...