001    package edu.jhu.mb.ernst.model.event;
002    
003    import org.slf4j.Logger;
004    import org.slf4j.LoggerFactory;
005
006    import edu.jhu.mb.ernst.engine.DiscreteEvent;
007    import edu.jhu.mb.ernst.model.ModulatedSynapse;
008    import edu.jhu.mb.ernst.util.seq.Seq;
009
010    /***********************************************************************
011    * Default implementation of a Modulation DiscreteEvent.
012    * 
013    * @version
014    *   $Date: 2012-04-15 13:06:25 -0500 (Sun, 15 Apr 2012) $
015    *   $Rev: 7 $
016    *   $Author: croft $
017    * @since
018    *   2012-02-19
019    * @author
020    *   David Wallace Croft
021    ***********************************************************************/
022    public final class  DefaultModulationDiscreteEventImp
023      implements DiscreteEvent
024    ////////////////////////////////////////////////////////////////////////
025    ////////////////////////////////////////////////////////////////////////
026    {
027    
028    private static final Class<DefaultModulationDiscreteEventImp>
029      CLASS = DefaultModulationDiscreteEventImp.class;
030 
031    private static final Logger
032      LOGGER = LoggerFactory.getLogger ( CLASS );
033    
034    //
035  
036    private final double  time;
037    
038    private final String  key;
039    
040    private final double  factor;
041    
042    private final Seq<ModulatedSynapse>  modulatedSynapseSeq;
043    
044    ////////////////////////////////////////////////////////////////////////
045    ////////////////////////////////////////////////////////////////////////
046    
047    public  DefaultModulationDiscreteEventImp (
048      final double  time,
049      final String  key,
050      final double  factor,
051      final Seq<ModulatedSynapse>  modulatedSynapseSeq )
052    ////////////////////////////////////////////////////////////////////////
053    {
054      this.time = time;
055      
056      this.key = key;
057      
058      this.factor = factor;
059      
060      this.modulatedSynapseSeq = modulatedSynapseSeq;
061    }
062
063    ////////////////////////////////////////////////////////////////////////
064    ////////////////////////////////////////////////////////////////////////
065    
066    @Override
067    public double  getTime ( )
068    ////////////////////////////////////////////////////////////////////////
069    {
070      return time;
071    }
072
073    @Override
074    public boolean  process ( )
075    ////////////////////////////////////////////////////////////////////////
076    {
077      LOGGER.trace ( "process() entered" );
078      
079      final int  size = modulatedSynapseSeq.size ( );
080
081      for ( int  i = 0; i < size; i++ )
082      {
083        final ModulatedSynapse
084          modulatedSynapse = modulatedSynapseSeq.get ( i );
085        
086        modulatedSynapse.setModulationFactor ( key, factor );
087      }
088      
089      LOGGER.trace ( "process() exiting" );
090
091      return false;
092    }
093    
094    ////////////////////////////////////////////////////////////////////////
095    ////////////////////////////////////////////////////////////////////////
096    }