/org.livingplace.controlling.informations.sensors.doorcontrol/src/main/java/org/livingplace/controlling/informations/sensors/doorcontrol/DoorControlSensor.java

https://github.com/kjellski/org.livingplace.controlling · Java · 94 lines · 65 code · 20 blank · 9 comment · 4 complexity · fdb29d9e7fd7ee68961ecd69ee024f44 MD5 · raw file

  1. package org.livingplace.controlling.informations.sensors.doorcontrol;
  2. import com.google.gson.Gson;
  3. import org.apache.felix.scr.annotations.*;
  4. import org.apache.log4j.Logger;
  5. import org.livingplace.bundles.messagingdefines.messages.Messages;
  6. import org.livingplace.bundles.messagingdefines.objects.LPResource;
  7. import org.livingplace.controlling.informations.api.IInformation;
  8. import org.livingplace.controlling.informations.api.IInformationListener;
  9. import org.livingplace.controlling.informations.api.ISensor;
  10. import org.livingplace.controlling.informations.api.providers.Sensor;
  11. import org.livingplace.controlling.informations.api.providers.SensorQualifier;
  12. import org.livingplace.controlling.informations.registry.api.IInformationRegistryFactory;
  13. import org.livingplace.controlling.informations.sensors.doorcontrol.internal.DoorInformations;
  14. import org.livingplace.messaging.activemq.api.ILPConnectionSettings;
  15. import org.livingplace.messaging.activemq.api.ILPMessaging;
  16. import org.livingplace.messaging.activemq.api.ILPMessagingFactory;
  17. import org.livingplace.messaging.activemq.api.ILPSubscriber;
  18. import javax.jms.JMSException;
  19. import java.util.ArrayList;
  20. import java.util.List;
  21. /**
  22. * Created with IntelliJ IDEA.
  23. * User: sven
  24. * Date: 01.07.13
  25. * Time: 14:17
  26. * To change this template use File | Settings | File Templates.
  27. */
  28. @Component(immediate = true)
  29. @Service
  30. public class DoorControlSensor extends Sensor implements ISensor {
  31. private static Logger logger = Logger.getLogger(DoorControlSensor.class);
  32. List<IInformationListener> listeners = new ArrayList<IInformationListener>();
  33. @Reference
  34. protected IInformationRegistryFactory informationRegistryFactory;
  35. @Reference
  36. protected ILPMessagingFactory messagingFactory;
  37. protected ILPMessaging messaging;
  38. public DoorControlSensor() {
  39. super(new SensorQualifier("Door", "DoorControlSensor", "1.0"));
  40. }
  41. @Activate
  42. void start() {
  43. messaging = messagingFactory.getInstance();
  44. logger.info("DoorControl Sensor started");
  45. informations.add(new DoorInformations(this, new LPResource()));
  46. for (IInformation information : informations) {
  47. listeners.add(informationRegistryFactory.getInstance().registerOnListener(information));
  48. }
  49. ILPConnectionSettings cs = messaging.createLPConnectionSettings();
  50. // cs.setActiveMQIp("172.16.0.200");
  51. // cs.setMongoDBIp("172.16.0.200");
  52. try {
  53. ILPSubscriber subscriber = messaging.createLPSubscriberInstance("UbisenseTracking", cs);
  54. Gson gson = new Gson();
  55. for (; ; ) {
  56. String msg = subscriber.subscribeBlocking();
  57. logger.info("#######Sensed Message: " + msg);
  58. Messages pos = gson.fromJson(msg, Messages.class);
  59. for (IInformationListener listener : listeners)
  60. listener.sensedInformation(new DoorInformations(this, pos.getLpRes()));
  61. }
  62. } catch (JMSException e) {
  63. logger.error(this.getQualifier() + ": " + e);
  64. e.printStackTrace();
  65. }
  66. }
  67. @Deactivate
  68. void stop() {
  69. for (IInformation information : informations) {
  70. informationRegistryFactory.getInstance().unregister(information);
  71. }
  72. logger.info("DoorControl Sensor stopped");
  73. }
  74. }