001    package edu.jhu.mb.ernst.model.factory;
002    
003    import edu.jhu.mb.ernst.engine.DiscreteEvent;
004    import edu.jhu.mb.ernst.model.*;
005    import edu.jhu.mb.ernst.model.event.DefaultModulationDiscreteEventImp;
006    import edu.jhu.mb.ernst.model.synapse.MutableSynapseImp;
007    import edu.jhu.mb.ernst.model.synapse.ModulatedSynapseImp;
008    import edu.jhu.mb.ernst.util.seq.Seq;
009    
010    /***********************************************************************
011    * Default implementation of interface ModelFactory.
012    * 
013    * @version
014    *   $Date: 2012-04-15 13:41:48 -0500 (Sun, 15 Apr 2012) $
015    *   $Rev: 8 $
016    *   $Author: croft $
017    * @since
018    *   2012-02-19
019    * @author
020    *   David Wallace Croft
021    ***********************************************************************/
022    public class  DefaultModelFactoryImp
023      implements ModelFactory
024    ////////////////////////////////////////////////////////////////////////
025    ////////////////////////////////////////////////////////////////////////
026    {
027    
028    public static final DefaultModelFactoryImp
029      INSTANCE = new DefaultModelFactoryImp ( );
030    
031    ////////////////////////////////////////////////////////////////////////
032    ////////////////////////////////////////////////////////////////////////
033    
034    public  DefaultModelFactoryImp ( )
035    ////////////////////////////////////////////////////////////////////////
036    {
037      // public no-argument constructor to support dynamic class loading
038    }
039    
040    ////////////////////////////////////////////////////////////////////////
041    ////////////////////////////////////////////////////////////////////////
042    
043    @Override
044    public ModulatedSynapse  createModulatedSynapse (
045      final int    targetNeuronIndex,
046      final byte   type,
047      final float  weight )      
048    ////////////////////////////////////////////////////////////////////////
049    {
050      return new ModulatedSynapseImp (
051        targetNeuronIndex,
052        type,
053        weight );
054    }
055    
056    @Override
057    public DiscreteEvent  createModulationDiscreteEvent (
058      final double                time,
059      final String                key,
060      final double                factor,
061      final Seq<ModulatedSynapse>  modulatedSynapseSeq )
062    ////////////////////////////////////////////////////////////////////////
063    {
064      return new DefaultModulationDiscreteEventImp (
065        time,
066        key,
067        factor,
068        modulatedSynapseSeq );
069    }
070    
071    @Override
072    public MutableSynapse  createMutableSynapse (
073      final int    targetNeuronIndex,
074      final byte   type,
075      final float  weight )      
076    ////////////////////////////////////////////////////////////////////////
077    {
078      return new MutableSynapseImp (
079        targetNeuronIndex,
080        type,
081        weight );
082    }
083    
084    @Override
085    public Synapse  createSynapse (
086      final int    targetNeuronIndex,
087      final byte   type,
088      final float  weight )      
089    ////////////////////////////////////////////////////////////////////////
090    {
091      return new ModulatedSynapseImp (
092        targetNeuronIndex,
093        type,
094        weight );
095    }
096    
097    ////////////////////////////////////////////////////////////////////////
098    ////////////////////////////////////////////////////////////////////////
099    }