Package gui

Source Code of gui.NeuralNetworkBase

package gui;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Vector;

import resources.PropertiesLoader;
import utils.logging.Logger;

import components.neuralnetwork.NeuralNetworkException;



/**
* Esta clase implementa la base de datos de redes neuronales creadas.
*/
public class NeuralNetworkBase
{
  public static final int     OK        = 0;
  public static final int     DUPLICATEK_KEY  = 500;
  public static final int     NO_SUCH_OBJECT  = 501;
 
  private Vector           base;

  public NeuralNetworkBase()
  {
    super();
    base = new Vector();
  }
 
  /**
   * Recibe por parametro el archivo donde est� la base de las redes neuronales.
   * @param file  archivo de base de las redes neuronales.
   * @throws NeuralNetworkException
   */
  public NeuralNetworkBase(String file) throws NeuralNetworkException
  {
    super();
    base = new Vector();
    String str;
   
    try
    {
          BufferedReader in = new BufferedReader(new FileReader(file));
          while ((str = in.readLine()) != null)
          {
            if ( str.matches("[^#]*#[^#]*") )
            {
                NeuralNetworkBaseItem item = new NeuralNetworkBaseItem(str);
                base.add(item);

                if (EasyBotApp.getInstance().getExternalNetwork().load_network(item.getPath())==0)
                {
                  item.setName(EasyBotApp.getInstance().getExternalNetwork().getName());
                  item.setDescription(EasyBotApp.getInstance().getExternalNetwork().getDescription());
                  item.setType(EasyBotApp.getInstance().getExternalNetwork().getType());
                  EasyBotApp.getInstance().getExternalNetwork().unload_network();
                }
                else
                {
                  item.setName("");
                  item.setDescription("");
                  item.setType(-1);
                }
            }
          }
          if (getSelectedItem()!=null)
            EasyBotApp.getInstance().getExternalNetwork().load_network(getSelectedItem().getPath());

          in.close();
      }
    catch (IOException e)
    {
        throw new NeuralNetworkException( e.getMessage() );
      }
  }
 
 
  /**
   * Busca un �tem en la base de redes neuronales y lo retorna en caso de
   * existir, o <code>null</code> si no se encuentra.
   * @param path
   * @return �tem o <code>null</code> si no se encuentra.
   */
  public NeuralNetworkBaseItem getNeuralNetworkBaseItem(String path)
  {
    for (int i=0;i<base.size();i++)
    {
      if (((NeuralNetworkBaseItem)base.get(i)).getPath().compareTo(path)==0)
      {
        return (NeuralNetworkBaseItem)base.get(i);
      }
    }
    return null;
  }
 
 
  /**
   * Busca si existe un �tem por path.
   * @param path
   * @return  <code>true</code> si existe, o <code>false</code> en caso
   *       contrario.
   */
  public boolean isItemInBase(String path)
  {
    for (int i=0;i<base.size();i++)
      if ( ((NeuralNetworkBaseItem)base.get(i)).getPath().compareTo(path) == 0 )
        return true;

    return false;
  }
 
 
  /**
   * Busca si existe un �tem por nombre y retorna su posicion en el vector.
   * @param name
   * @return posici�n de la primera ocurrencia, o -1 en caso que no encuentre.
   */
  public int indexOf(String path)
  {
    for (int i=0;i<base.size();i++)
    {
      if (((NeuralNetworkBaseItem)base.get(i)).getPath().compareTo(path)==0)
      {
        return i;
      }
    }
    return -1;
  }
 
 
  /**
   * Inserta un �tem en la base y guarda los cambios.
   * @param item  �tem.
   * @return    {@link #OK} o {@link #DUPLICATEK_KEY}.
   */
  public int insertNeuralNetworkBaseItem(NeuralNetworkBaseItem item)
  {
    if(! isItemInBase(item.getPath()))
    {
      base.add(item);
            if (EasyBotApp.getInstance().getExternalNetwork().load_network(item.getPath())==0)
            {
              item.setName(EasyBotApp.getInstance().getExternalNetwork().getName());
              item.setDescription(EasyBotApp.getInstance().getExternalNetwork().getDescription());
              item.setType(EasyBotApp.getInstance().getExternalNetwork().getType());
              EasyBotApp.getInstance().getExternalNetwork().unload_network();
            }
            else
            {
              item.setName("");
              item.setDescription("");
              item.setType(-1);
            }
      saveToFile();
      return OK;
    }
    else
      return DUPLICATEK_KEY;
  }
 
 
  /**
   * Actualiza el �tem que se ingresa por par�metro y guarda los cambios.
   * @param item  �tem.
   * @return    {@link #OK} o {@link #DUPLICATEK_KEY}.
   */
  public int updateNeuralNetworkBaseItem(NeuralNetworkBaseItem item)
  {
    if(! isItemInBase(item.getPath()))
      return NO_SUCH_OBJECT;
    else
    {
      base.set(indexOf(item.getPath()),item);
      saveToFile();
    }
   
    return OK;
  }
 
 
  /**
   * Remueve el �tem pasado por par�metro y guarda los cambios.
   * @param item  �tem.
   * @return    {@link #OK}, o {@link #NO_SUCH_OBJECT} en caso de no
   *         existir el objeto.
   */
  public int removeNeuralNetworkBaseItem(NeuralNetworkBaseItem item)
  {
    if(indexOf(item.getPath()) != -1)
    {
      base.removeElementAt(indexOf(item.getPath()));
      saveToFile();
      return OK;
    }
    else
      return NO_SUCH_OBJECT;
  }
 
 
  /**
   * Graba en el archivo el contenido de la base. El nombre del archivo se
   * obtiene del archivo de confifuraci�n.
   */
  public void saveToFile()
  {
    String file = PropertiesLoader.getInstance().getProperty("NeuralNetworkBaseFile");
    try
    {
          BufferedWriter out = new BufferedWriter(new FileWriter(file));
          for (int i=0; i<base.size();i++)
            out.write(((NeuralNetworkBaseItem)base.get(i)).toString());
          out.close();
      }
    catch (IOException e)
    {
        Logger.error( e.getMessage() );
      }
  }
 
 
  /**
   * Retorna el arreglo de �tems.
   * @return arreglo de �tems.
   */
  public Vector getItems()
  {
    return base;
  }


  /**
   * Retorna el �tem seleccionado o NULL si no hay ninguno.
   * @return NeuralNetworkBaseItem.
   */
  public NeuralNetworkBaseItem getSelectedItem()
  {
    for (int i=0;i<base.size();i++)
    {
      if (((NeuralNetworkBaseItem)base.get(i)).getSelected())
        return (NeuralNetworkBaseItem)base.get(i);
    }
    return null;
  }

}
TOP

Related Classes of gui.NeuralNetworkBase

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.