/** @param t */
  public static synchronized void remove(Trigger t) {
    int preSize = TriggerPersistence.size();

    try {
      t.unregister();
      list.remove(t);
      int postSize = TriggerPersistence.size();

      if (!(postSize == (preSize - 1))) {
        LOG.severe("Error while while removing trigger '" + t.getName() + "'");
      }
    } catch (Exception e) {
      LOG.severe("Error while while unregistering the trigger '" + t.getName() + "'");
    }
  }
Exemplo n.º 2
0
  /**
   * A Method to add a single tag event.
   *
   * @param eventType The event type
   * @param trigger The trigger that lead to this event
   * @param timeTick The time tick
   * @param timeUTC The time UTC
   */
  protected final void updateTagEvent(
      final String eventType, final Trigger trigger, final long timeTick, final Date timeUTC) {

    TagEventType tempEventType;

    tagEvents = new Hashtable();
    tempEventType = new TagEventType();
    tempEventType.setEventType(eventType);
    tempEventType.setTimeTick(timeTick);
    tempEventType.setTimeUTC(timeUTC);
    tagEvents.put(EventType.EV_NEW, tempEventType);

    // in case of ev_new, ev_glimpsed ist alsow thrown
    if (eventType.equals(EventType.EV_NEW)) {
      tempEventType = new TagEventType();
      tempEventType.setEventType(EventType.EV_GLIMPSED);
      tempEventType.setTimeTick(timeTick);
      tempEventType.setTimeUTC(timeUTC);
      tagEvents.put(EventType.EV_GLIMPSED, tempEventType);
    }

    if (trigger != null) {
      tempEventType.getEventTriggers().put(trigger.getName(), trigger);
    }
  }
 @Override
 public boolean create(Trigger item) {
   try {
     add(item);
     return true;
   } catch (Exception e) {
     LOG.log(Level.SEVERE, "Cannot add trigger " + item.getName(), e);
     return false;
   }
 }
 @Override
 public List<Trigger> getByName(String name) {
   List<Trigger> tl = new ArrayList<Trigger>();
   for (Trigger t : list()) {
     if (t.getName().equalsIgnoreCase(name)) {
       tl.add(t);
     }
   }
   return tl;
 }
 protected boolean triggerExists(Trigger checkTrigger) {
   try {
     Trigger trigger =
         resourceScheduler.getTrigger(checkTrigger.getName(), checkTrigger.getGroup());
     return (trigger != null);
   } catch (SchedulerException e) {
     log.error("Failed to check if the trigger exists", e);
   }
   return false;
 }
 @Override
 public Trigger copy(String uuid) {
   try {
     Trigger t = get(uuid).clone();
     t.setName("Copy of " + t.getName());
     create(t);
     return t;
   } catch (Exception e) {
     return null;
   }
 }
 @Override
 public Trigger modify(String uuid, Trigger data) {
   try {
     if (uuid == null || uuid.isEmpty() || data == null) {
       LOG.warning("Cannot even start modifying trigger, basic data missing");
       return null;
     } else {
       delete(uuid);
       data.setUUID(uuid);
       create(data);
       try {
         data.register();
       } catch (Exception f) {
         LOG.warning("Cannot register trigger " + data.getName());
       }
       return data;
     }
   } catch (Exception e) {
     LOG.log(Level.SEVERE, "Error while modifying trigger" + data.getName(), e);
     return null;
   }
 }
 protected boolean triggerChanged(Trigger checkTrigger) {
   try {
     Trigger trigger =
         resourceScheduler.getTrigger(checkTrigger.getName(), checkTrigger.getGroup());
     if (trigger != null && trigger instanceof CronTrigger) {
       return !((CronTrigger) trigger)
           .getCronExpression()
           .equals(((CronTrigger) checkTrigger).getCronExpression());
     }
   } catch (SchedulerException e) {
     log.error("Failed to check if the trigger has changed", e);
   }
   return false;
 }
  /**
   * Get a trigger by its name
   *
   * @param name
   * @return a Trigger object with the name (ignore-case) as the String in input
   */
  @Deprecated
  public static Trigger getTrigger(String name) {
    if ((name == null) || (name.trim().isEmpty())) {
      return null;
    }

    for (Trigger trigger : list) {
      if (trigger.getName().equalsIgnoreCase(name.trim())) {
        return trigger;
      }
    }

    LOG.log(Level.WARNING, "Searching for a trigger named ''{0}'' but it doesn''t exist.", name);

    return null;
  }
Exemplo n.º 10
0
  private void visit(Table table) {
    if (this.filter != null && !filter.matcher(table.getName()).matches()) {
      return;
    }

    append(CREATE).append(SPACE);
    if (table.isPhysical()) {
      append(FOREIGN_TABLE);
    } else {
      if (table.getTableType() == Table.Type.TemporaryTable) {
        append(GLOBAL).append(SPACE).append(TEMPORARY).append(SPACE).append(TABLE);
      } else {
        append(VIEW);
      }
    }
    append(SPACE);
    String name = addTableBody(table);

    if (table.getTableType() != Table.Type.TemporaryTable) {
      if (table.isVirtual()) {
        append(NEWLINE)
            .append(SQLConstants.Reserved.AS)
            .append(NEWLINE)
            .append(table.getSelectTransformation());
      }
      append(SQLConstants.Tokens.SEMICOLON);

      if (table.isInsertPlanEnabled()) {
        buildTrigger(name, null, INSERT, table.getInsertPlan());
      }

      if (table.isUpdatePlanEnabled()) {
        buildTrigger(name, null, UPDATE, table.getUpdatePlan());
      }

      if (table.isDeletePlanEnabled()) {
        buildTrigger(name, null, DELETE, table.getDeletePlan());
      }

      for (Trigger tr : table.getTriggers().values()) {
        buildTrigger(name, tr.getName(), tr.getEvent().name(), tr.getPlan());
      }
    } else {
      append(SQLConstants.Tokens.SEMICOLON);
    }
  }
  /** @param t */
  public static synchronized void addAndRegister(Trigger t) {
    int preSize = TriggerPersistence.size();

    if (!list.contains(t)) {
      list.add(t);
      t.register();
      int postSize = TriggerPersistence.size();
      if (!(postSize == (preSize + 1))) {
        LOG.severe("Error while while adding and registering trigger '" + t.getName() + "'");
      }
    } else {
      // this trigger is already in the list
      int old = list.indexOf(t);
      list.get(old).unregister();
      list.set(old, t);
      t.register();
    }
  }
  /** @param folder */
  public static synchronized void loadTriggers(File folder) {
    XStream xstream = FreedomXStream.getXstream();

    // This filter only returns object files
    FileFilter objectFileFileter =
        new FileFilter() {
          public boolean accept(File file) {
            if (file.isFile() && file.getName().endsWith(".xtrg")) {
              return true;
            } else {
              return false;
            }
          }
        };

    File[] files = folder.listFiles(objectFileFileter);

    try {
      StringBuilder summary = new StringBuilder();
      // print an header for the index.txt file
      summary.append("#Filename \t\t #TriggerName \t\t\t #ListenedChannel").append("\n");

      if (files != null) {
        for (File file : files) {
          Trigger trigger = null;
          try {
            // validate the object against a predefined DTD
            String xml =
                DOMValidateDTD.validate(
                    file, Info.getApplicationPath() + "/config/validator/trigger.dtd");
            trigger = (Trigger) xstream.fromXML(xml);
          } catch (Exception e) {
            LOG.log(
                Level.SEVERE,
                "Trigger file {0} is not well formatted: {1}",
                new Object[] {file.getPath(), e.getLocalizedMessage()});
            continue;
          }

          // addAndRegister trigger to the list if it is not a duplicate
          if (!list.contains(trigger)) {
            if (trigger.isHardwareLevel()) {
              trigger.setPersistence(false); // it has not to me stored in root/data folder
              addAndRegister(trigger); // in the list and start listening
            } else {
              if (folder.getAbsolutePath().startsWith(Info.getPluginsPath())) {
                trigger.setPersistence(false);
              } else {
                trigger.setPersistence(true); // not hardware trigger and not plugin related
              }

              list.add(
                  trigger); // only in the list not registred. I will be registred only if used in
                            // mapping
            }
          } else {
            LOG.warning("Trigger '" + trigger.getName() + "' is already in the list");
          }

          summary
              .append(trigger.getUUID())
              .append("\t\t")
              .append(trigger.getName())
              .append("\t\t\t")
              .append(trigger.getChannel())
              .append("\n");
        }

        // writing a summary .txt file with the list of commands in this folder
        FileWriter fstream = new FileWriter(folder + "/index.txt");
        BufferedWriter indexfile = new BufferedWriter(fstream);
        indexfile.write(summary.toString());
        // Close the output stream
        indexfile.close();
      } else {
        LOG.config("No triggers to load from this folder " + folder.toString());
      }
    } catch (Exception e) {
      LOG.severe("Exception while loading this trigger.\n" + Freedomotic.getStackTraceInfo(e));
    }
  }
Exemplo n.º 13
0
  @SuppressWarnings("cast")
  protected void addXmlTrigger(Element te, VSDFile vf) {
    String tts;
    Trigger.TriggerType tt;
    if ((tts = te.getAttributeValue("type")) != null) {
      tt = Trigger.TriggerType.valueOf(tts.toUpperCase());
    } else {
      tt = Trigger.TriggerType.NONE;
    }

    switch (tt) {
      case BUTTON:
        if (this.buttontype != SoundEvent.ButtonType.NONE) {
          t = setupButtonAction(te);
        }
        break;
      case BOOLEAN:
        t = new BoolTrigger(te.getAttributeValue("name"));
        break;
      case FLOAT:
        t = new FloatTrigger(te.getAttributeValue("name"), 0.0f, Trigger.CompareType.EQ);
        break;
      case NOTCH:
        t = new NotchTrigger(te.getAttributeValue("name"));
        break;
      case INT:
        t = new IntTrigger(te.getAttributeValue("name"));
        break;
      case STRING:
        // t = new StringTrigger(el.getAttributeValue("name"));
        log.warn("Don't have StringTriggers yet...");
        t = null;
        return;
      case THROTTLE:
        t = new ThrottleTrigger(te.getAttributeValue("name"));
        break;
      case NONE:
      default:
        break;
    }

    log.debug("Building trigger " + t.getName());
    t.setXml(te);
    trigger_list.put(te.getAttributeValue("name"), t);
    // log.debug("target name " + t.getTargetName() + " sound " +
    // parent.getSound(t.getTargetName()));
    t.setTarget(parent.getSound(t.getTargetName()));
    // log.debug("target " + t.getTarget());

    if (t.getTarget() == null) {
      // If the target is missing, set up a do-nothing operation.
      // Protects against errors in the XML file.
      // Should probably post a warning, though.
      t.setTargetAction(Trigger.TargetAction.NOTHING);
    }
    switch (t.getTargetAction()) {
      case PLAY:
      case FADEIN:
        // log.debug("PLAY");
        t.setCallback(
            new TriggerListener() {
              public void takeAction() {
                t.getTarget().play();
              }

              public void takeAction(int i) {}

              public void takeAction(float f) {} // do nothing
            });
        break;
      case LOOP:
        // log.debug("LOOP");
        t.setCallback(
            new TriggerListener() {
              public void takeAction() {
                t.getTarget().loop();
              }

              public void takeAction(int i) {}

              public void takeAction(float f) {} // do nothing
            });
        break;
      case STOP:
      case FADEOUT:
        // log.debug("STOP");
        t.setCallback(
            new TriggerListener() {
              public void takeAction() {
                t.getTarget().stop();
              }

              public void takeAction(int i) {}

              public void takeAction(float f) {} // do nothing
            });
        break;
      case NOTCH:
        // log.debug("NOTCH");
        log.debug("making callback t " + t + " target " + t.getTarget());
        t.setCallback(
            new TriggerListener() {
              public void takeAction(int i) {
                // log.debug("Notch Trigger Listener. t = " + t + " Target = " + t.getTarget() + "
                // notch = " + i);
                t.getTarget().changeNotch(i);
              }

              public void takeAction() {}

              public void takeAction(float f) {} // do nothing
            });
        break;
      case CHANGE:
        // log.debug("CHANGE");
        log.debug("making callback t " + t + " target " + t.getTarget());
        t.setCallback(
            new TriggerListener() {
              public void takeAction() {} // do nothing

              public void takeAction(int i) {} // do nothing

              public void takeAction(float f) {
                // log.debug("Throttle Trigger Listener. t = " + t + " Target = " + t.getTarget() +
                // " value = " + f);
                t.getTarget().changeThrottle(f);
              }
            });
        break;
      case NOTHING:
        // Used for when the target sound is missing.
        // log.debug("NOTHING");
        t.setCallback(
            new TriggerListener() {
              public void takeAction() {} // do nothing

              public void takeAction(int i) {} // do nothing

              public void takeAction(float f) {} // do nothing
            });
        break;
      default:
        // do nothing.
        break;
    } // end switch
  } // end function