/* * $RCSfile$ * $Author$ * $Date$ * $Revision$ * * Copyright (C) 2006-2007 Egon Willighagen <egonw@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.Comparator; /** * A set of AtomContainers. * * @author egonw * @cdk.module interfaces * @cdk.githash */ public interface IAtomContainerSet extends IChemObject { /** * Adds an atomContainer to this container. * * @param atomContainer The atomContainer to be added to this container */ public void addAtomContainer(IAtomContainer atomContainer); /** * Removes an AtomContainer from this container. * * @param atomContainer The atomContainer to be removed from this container */ public void removeAtomContainer(IAtomContainer atomContainer); /** * Removes all AtomContainer from this container. */ public void removeAllAtomContainers(); /** * Removes an AtomContainer from this container. * * @param pos The position of the AtomContainer to be removed from this container */ public void removeAtomContainer(int pos); /** * Replace the AtomContainer at a specific position (array has to be large enough). * * @param position position in array for AtomContainer * @param container the replacement AtomContainer */ public void replaceAtomContainer(int position, IAtomContainer container); /** * Sets the coefficient of a AtomContainer to a given value. * * @param container The AtomContainer for which the multiplier is set * @param multiplier The new multiplier for the AtomContatiner * @return true if multiplier has been set * @see #getMultiplier(IAtomContainer) */ public boolean setMultiplier(IAtomContainer container, Double multiplier); /** * Sets the coefficient of a AtomContainer to a given value. * * @param position The position of the AtomContainer for which the multiplier is * set in [0,..] * @param multiplier The new multiplier for the AtomContatiner at * <code>position</code> * @see #getMultiplier(int) */ public void setMultiplier(int position, Double multiplier); /** * Returns an array of double with the stoichiometric coefficients * of the products. * * @return The multipliers for the AtomContainer's in this set * @see #setMultipliers */ public Double[] getMultipliers(); /** * Sets the multipliers of the AtomContainers. * * @param newMultipliers The new multipliers for the AtomContainers in this set * @return true if multipliers have been set. * @see #getMultipliers */ public boolean setMultipliers(Double[] newMultipliers); /** * Adds an atomContainer to this container with the given * multiplier. * * @param atomContainer The atomContainer to be added to this container * @param multiplier The multiplier of this atomContainer */ public void addAtomContainer(IAtomContainer atomContainer, double multiplier); /** * Adds all atomContainers in the AtomContainerSet to this container. * * @param atomContainerSet The AtomContainerSet */ public void add(IAtomContainerSet atomContainerSet); /** * Get an Iterable for this AtomContainerSet. * * @return A new Iterable for this AtomContainerSet. */ public Iterable<IAtomContainer> atomContainers(); /** * Returns the AtomContainer at position <code>number</code> in the * container. * * @param number The position of the AtomContainer to be returned. * @return The AtomContainer at position <code>number</code> . */ public IAtomContainer getAtomContainer(int number); /** * Returns the multiplier for the AtomContainer at position <code>number</code> in the * container. * * @param number The position of the multiplier of the AtomContainer to be returned. * @return The multiplier for the AtomContainer at position <code>number</code> . * @see #setMultiplier(int, Double) */ public Double getMultiplier(int number); /** * Returns the multiplier of the given AtomContainer. * * @param container The AtomContainer for which the multiplier is given * @return -1, if the given molecule is not a container in this set * @see #setMultiplier(IAtomContainer, Double) */ public Double getMultiplier(IAtomContainer container); /** * Returns the number of AtomContainers in this Container. * * @return The number of AtomContainers in this Container */ public int getAtomContainerCount(); /** * Sort the AtomContainers using a provided Comparator * @param comparator defines the sorting method */ public void sortAtomContainers( Comparator<IAtomContainer> comparator); }