Package anvil.brain

Source Code of anvil.brain.Synapse

/*
* $Id: Synapse.java,v 1.3 2002/09/16 08:05:02 jkl Exp $
*
* Copyright (c) 2002 Njet Communications Ltd. All Rights Reserved.
*
* Use is subject to license terms, as defined in
* Anvil Sofware License, Version 1.1. See LICENSE
* file, or http://njet.org/license-1.1.txt
*/
package anvil.brain;

import java.util.Iterator;
import java.util.Enumeration;
import java.util.ArrayList;
import java.util.HashSet;

import anvil.script.Namespace;
import anvil.java.util.BindingEnumeration;
import anvil.core.Any;
import anvil.server.OperationFailedException;

/**
* class Synapse
*
* @author: Jani Lehtim�ki
*/
public class Synapse
{

  protected HashSet _referers = new HashSet();
  protected ArrayList _dimension = new ArrayList();
  protected Brain _brain;
  protected long _id;
  protected String _name;
  protected String _type;
  protected SynapseImpl _synapse;
  protected boolean _deleted = false;


  public Synapse(Brain brain, long id, String type, String name)
  {
    _brain = brain;
    _id = id;
    _name = name;
    _type = type;
  }

 
  public Synapse(SynapseImpl synapse)
  {
    _brain = synapse.getBrain();
    _synapse = synapse;
    synapse.setFacade(this);
    _id = synapse.getId();
    _name = synapse.getName();
    _type = synapse.getType();
  }


  public String toString()
  {
    return "Synapse("+_id+","+_name+","+_type+")";
  }
 
  protected synchronized SynapseImpl load() throws OperationFailedException
  {
    if (_deleted) {
      throw new SynapseDeletedException();
    }
    if (_synapse == null) {
      try {
        _synapse = _brain.load(_id);
        _synapse.setFacade(this);
      } catch (java.sql.SQLException e) {
        throw new  OperationFailedException(e);
      }
    }
    return _synapse;
  }

  synchronized void addReferer(Dimension dim)
  {
    _referers.add(dim);
  }


  synchronized void removeReferer(Dimension dim)
  {
    _referers.remove(dim);
  }
 

  public synchronized boolean isChanged()
  {
    SynapseImpl synapse = _synapse;
    if (synapse == null) {
      return false;
    } else {
      return synapse.isChanged();
    }
  }
 

  public Brain getBrain()
  {
    return _brain;
 


  public long getId()
  {
    return _id;
  }


  public synchronized String getType()
  {
    SynapseImpl synapse = _synapse;
    if (synapse == null) {
      return _type;
    } else {
      return synapse.getType();
    }
  }


  public synchronized String getName()
  {
    SynapseImpl synapse = _synapse;
    if (synapse == null) {
      return _name;
    } else {
      return synapse.getName();
    }
  }


  public void setType(String type) throws OperationFailedException
  {
    load().setType(type);
  }
 

  public void setName(String name) throws OperationFailedException
  {
    load().setName(name);
  }
 
 
  public BindingEnumeration getVariables() throws OperationFailedException
  {
    return load().getVariables();
  }


  public Any getVariable(String name) throws OperationFailedException
  {
    return load().getVariable(name);
  }


  public Any setVariable(String name, Any value) throws OperationFailedException
  {
    return load().setVariable(name, value);
  }
 
 
  public Any checkVariable(String name) throws OperationFailedException
  {
    return load().checkVariable(name);
  }
 

  public boolean deleteVariable(String name) throws OperationFailedException
  {
    return load().deleteVariable(name);
  }
 

  public Enumeration getDimensions() throws OperationFailedException
  {
    return load().getDimensions();
  }


  public Dimension getOrCreateDimension(String dim) throws OperationFailedException
  {
    return load().getOrCreateDimension(dim);
  }



  public Dimension getDimension(String dim) throws OperationFailedException
  {
    return load().getDimension(dim);
  }


  public Dimension createDimension(String dim) throws OperationFailedException
  {
    return load().createDimension(dim)
  }


  public Dimension removeDimension(String dim) throws OperationFailedException
  {
    return load().removeDimension(dim)
 
 
 
  public synchronized Dimension[] getReferers()
  {
    int n = _referers.size();
    Dimension dim[] = new Dimension[n];
    Iterator iter = _referers.iterator();
    for(int i=0; i<n && iter.hasNext(); i++) {
      dim[i] = (Dimension)iter.next();
    }
    return dim;
  }
 
 
  public synchronized void remove() throws OperationFailedException
  {
    try {
      SynapseImpl impl = _synapse;
      if (impl != null) {
        _synapse = null;
        impl.remove();
      }
      int size = _referers.size();
      Iterator iter = _referers.iterator();
      while(iter.hasNext()) {
        Dimension dim = (Dimension)iter.next();
        dim.remove(this);
      }
      _referers.clear();
      _deleted = true;
      _brain.remove(_id);
    } catch (Throwable t) {
      t.printStackTrace();
      anvil.Log.log().error(t);
    }
  }
 
 
  public synchronized void commit() throws OperationFailedException
  {
    if (_synapse != null) {
      _synapse.commit();
    }
  }
}

/*

*/ 
TOP

Related Classes of anvil.brain.Synapse

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.