Package hermes.ant

Source Code of hermes.ant.RegisterDepthTrigger

/*
* Copyright 2003, 2004, 2005 Colin Crist
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

package hermes.ant;

import hermes.Hermes;
import hermes.HermesWatchListener;
import hermes.HermesWatchManager;
import hermes.config.DestinationConfig;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.naming.NamingException;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Target;

public class RegisterDepthTrigger extends AbstractTask implements HermesWatchListener
{
   private HermesWatchManager watchManager;
   private List<HermesSelectionType> selections = new ArrayList<HermesSelectionType>();
   private int depth = 0;
   private String target;
   private String exception;
   private String hermesProperty = "alert.hermes.id";
   private String destinationProperty = "alert.hermes.destination";
   private String messageProperty = "alert.message";

   public RegisterDepthTrigger()
   {
      watchManager = new HermesWatchManager();
      watchManager.setUpdateOnNewWatchAdded(true);
   }

   public void addConfigured(HermesSelectionType h)
   {
      selections.add(h);
   }

   public void execute() throws BuildException
   {
      if (!getProject().getTargets().containsKey(target))
      {
         throw new BuildException("target " + target + " does not exist in build file");
      }

      for (Iterator<HermesSelectionType> iter = selections.iterator(); iter.hasNext();)
      {
         HermesSelectionType hermesSelection = iter.next();

         watch(hermesSelection);
      }
   }

   private void watch(final HermesSelectionType hermesSelection) throws BuildException
   {
      try
      {
         final Hermes hermes = HermesFactory.createHermes(getConfig(), hermesSelection.getName());

         for (final Iterator iter = hermesSelection.getDestinationSelections().iterator(); iter.hasNext();)
         {
            final DestinationSelectionType destinationSelection = (DestinationSelectionType) iter.next();

            //watchManager.addWatch(hermes, destinationSelection.getName(), this);
         }
      }
      catch (NamingException e)
      {
         throw new BuildException(e);
      }
     
   }

   public void onDepthChange(Hermes hermes, DestinationConfig dConfig, long currentDepth)
   {
      if (currentDepth > depth)
      {
         final Target invokeTarget = (Target) getProject().getTargets().get(getTarget());

         log(dConfig.getName() + " on " + hermes.getId() + " has triggered, currentDepth=" + currentDepth);

         System.setProperty(getHermesProperty(), hermes.getId());
         System.setProperty(getDestinationProperty(), dConfig.getName());
         System.setProperty(getMessageProperty(), "depth=" + currentDepth);
         invokeTarget.execute();
      }
   }

   public void onException(Hermes hermes, DestinationConfig dConfig, Exception e)
   {
      // NOP
   }

   public void onOldestMessageChange(Hermes hermes, DestinationConfig dConfig, Date oldest)
   {
      // NOP
   }

   public void onPropertyChange(Hermes hermes, DestinationConfig dConfig, Map properties)
   {
      // NOP
   }

   public int getDepth()
   {
      return depth;
   }

   public void setDepth(int depth)
   {
      this.depth = depth;
   }

   public String getTarget()
   {
      return target;
   }

   public void setTarget(String target)
   {
      this.target = target;
   }

   public String getDestinationProperty()
   {
      return destinationProperty;
   }

   public void setDestinationProperty(String destinationProperty)
   {
      this.destinationProperty = destinationProperty;
   }

   public String getHermesProperty()
   {
      return hermesProperty;
   }

   public void setHermesProperty(String hermesProperty)
   {
      this.hermesProperty = hermesProperty;
   }

   public String getMessageProperty()
   {
      return messageProperty;
   }

   public void setMessageProperty(String messageProperty)
   {
      this.messageProperty = messageProperty;
   }
}
TOP

Related Classes of hermes.ant.RegisterDepthTrigger

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.