Logo Search packages:      
Sourcecode: cdk version File versions  Download package

IMolecularFormula.java

/*  $RCSfile$
 *  $Author$
 *  $Date$
 *  $Revision$
 *
 *  Copyright (C) 2007  Miguel Rojasch <miguelrojasch@users.sf.net>
 *
 *  Contact: cdk-devel@lists.sourceforge.net
 *
 *  This program is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public License
 *  as published by the Free Software Foundation; either version 2.1
 *  of the License, or (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 */
package org.openscience.cdk.interfaces;

import java.util.Map;

/**
 *  Class defining a molecular formula object. It maintains
 *   a list of IISotope.<p>
 *   
 *  Examples:
 * <ul>
 *   <li><code>[C5H5]-</code></li>
 *   <li><code>C6H6</code></li>
 *   <li><code><sup>12</sup>C5</sup><sup>13</sup>CH6</code></li>
 * </ul>
 * 
 * @cdk.module  interfaces
 * @author      miguelrojasch
 * @cdk.created 2007-11-20
 * @cdk.keyword molecular formula
 */
00044 public interface IMolecularFormula{

      /**
       * Adds an molecularFormula to this MolecularFormula.
       *
       * @param  formula  The molecularFormula to be added to this chemObject
       */
      public IMolecularFormula add(IMolecularFormula formula);
      
      /**
       *  Adds an Isotope to this MolecularFormula one time.
       *
       * @param  isotope  The isotope to be added to this MolecularFormula
       * @see             #addIsotope(IIsotope, int)
       */
      public IMolecularFormula addIsotope(IIsotope isotope); 
      
      /**
       *  Adds an Isotope to this MolecularFormula in a number of occurrences.
       *
       * @param  isotope  The isotope to be added to this MolecularFormula
       * @param  count    The number of occurrences to add
       * @see             #addIsotope(IIsotope)
       */
      public IMolecularFormula addIsotope(IIsotope isotope, int count);
      
      /**
       *  Checks a set of Nodes for the occurrence of the isotope in the 
       *  IMolecularFormula from a particular isotope. It returns 0 if the does not exist.
       *
       * @param   isotope          The IIsotope to look for
       * @return                   The occurrence of this isotope in this IMolecularFormula
       * @see                      #getIsotopeCount()
       */
      public int getIsotopeCount(IIsotope isotope);
      
      /**
       *  Returns an {@link Iterable} for looping over all isotopes in this IMolecularFormula.
       *
       * @return    An {@link Iterable} with the isotopes in this IMolecularFormula
       */
      public Iterable<IIsotope> isotopes();
      
      /**
       *  Checks a set of Nodes for the number of different isotopes in the 
       *  IMolecularFormula.
       *
       * @return        The the number of different isotopes in this IMolecularFormula
       * @see           #getIsotopeCount(IIsotope)
       */
      public int getIsotopeCount();
    
      /**
       *  True, if the MolecularFormula contains the given IIsotope object. Not
       *  the instance. The method looks for other isotopes which has the same
       *  symbol, natural abundance and exact mass.
       *
       * @param  isotope  The IIsotope this IMolecularFormula is searched for
       * @return          True, if the IMolecularFormula contains the given isotope object
       */
      public boolean contains(IIsotope isotope);
      
      /**
       *  Removes the given isotope from the MolecularFormula.
       *
       * @param isotope  The IIsotope to be removed
       */
      public void removeIsotope(IIsotope isotope);

      /**
       * Removes all isotopes of this molecular formula.
       */
      public void removeAllIsotopes();
      
      /**
     *  Sets the partial charge of this IMolecularFormula.
     *
     * @param  charge  The partial charge
     *
     * @see    #getCharge
     */
    public void setCharge(Integer charge) ;

    /**
     *  Returns the partial charge of this IMolecularFormula. If the charge 
     *  has not been set the return value is Double.NaN.
     *
     * @return the charge of this IMolecularFormula
     *
     * @see    #setCharge
     */
    public Integer getCharge();
    /**
       * Clones this MolecularFormula object and its content.
       *
       * @return    The cloned object
       */
      public Object clone() throws CloneNotSupportedException ;
      
      
      /**
       *  Sets a property for a IChemObject. I should
       * integrate into ChemObject.
       *
       *@param  description  An object description of the property (most likely a
       *      unique string)
       *@param  property     An object with the property itself
       *@see                 #getProperty
       *@see                 #removeProperty
       */
      public void setProperty(Object description, Object property);


      /**
       *  Removes a property for a IChemObject. I should
       * integrate into ChemObject.
       *
       *@param  description  The object description of the property (most likely a
       *      unique string)
       *@see                 #setProperty
       *@see                 #getProperty
       */
      public void removeProperty(Object description);


      /**
       *  Returns a property for the IChemObject. I should
       * integrate into ChemObject.
       *
       *@param  description  An object description of the property (most likely a
       *      unique string)
       *@return              The object containing the property. Returns null if
       *      property is not set.
       *@see                 #setProperty
       *@see                 #removeProperty
       */
      public Object getProperty(Object description);


      /**
       *  Returns a Map with the IChemObject's properties.I should
       * integrate into ChemObject.
       *
       *@return    The object's properties as an Hashtable
       *@see       #setProperties
       */
      public Map<Object, Object> getProperties();
      /**
       *  Sets the properties of this object.I should
       * integrate into ChemObject.
       *
       *@param  properties  a Hashtable specifying the property values
       *@see                #getProperties
       */
      public void setProperties(Map<Object, Object> properties);
      
    /**
     * Returns a ChemObjectBuilder for the data classes that extend
     * this class.
     * 
     * @return The IChemObjectBuilder matching this IChemObject
     */
    public IChemObjectBuilder getBuilder();
    
}

Generated by  Doxygen 1.6.0   Back to index