/** @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() + "'"); } }
/** * 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; }
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)); } }
@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