/* $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 */ 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(); }