All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openscience.cdk.formula.MolecularFormulaSet Maven / Gradle / Ivy

/* Copyright (C) 2007  Miguel Rojasch 
 *
 *  Contact: [email protected]
 *
 *  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.formula;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.openscience.cdk.DefaultChemObjectBuilder;
import org.openscience.cdk.interfaces.IMolecularFormula;
import org.openscience.cdk.interfaces.IMolecularFormulaSet;
import org.openscience.cdk.interfaces.IChemObjectBuilder;

/**
 *  Class defining an set object of MolecularFormulas. It maintains
 *   a list of list IMolecularFormula.

* * @cdk.module data * @author miguelrojasch * @cdk.created 2007-11-20 * @cdk.keyword molecular formula * @cdk.githash */ public class MolecularFormulaSet implements Iterable, IMolecularFormulaSet, Cloneable { /** * Determines if a de-serialized object is compatible with this class. * * This value must only be changed if and only if the new version * of this class is incompatible with the old version. See Sun docs * for details. */ private static final long serialVersionUID = -2043178712150212550L; /** Internal List of IMolecularFormula. */ private List components; /** * Constructs an empty MolecularFormulaSet. * * @see #MolecularFormulaSet(IMolecularFormula) */ public MolecularFormulaSet() { components = new ArrayList(); } /** * Constructs a MolecularFormulaSet with a copy MolecularFormulaSet of another * MolecularFormulaSet (A shallow copy, i.e., with the same objects as in * the original MolecularFormulaSet). * * @param formula An MolecularFormula to copy from * @see #MolecularFormulaSet() */ public MolecularFormulaSet(IMolecularFormula formula) { components = new ArrayList(); components.add(0, formula); } /** * Adds all molecularFormulas in the MolecularFormulaSet to this chemObject. * * @param formulaSet The MolecularFormulaSet */ @Override public void add(IMolecularFormulaSet formulaSet) { for (IMolecularFormula mf : formulaSet.molecularFormulas()) { addMolecularFormula(mf); } /* * notifyChanged() is called by addAtomContainer() */ } /** * Adds an molecularFormula to this chemObject. * * @param formula The molecularFormula to be added to this chemObject */ @Override public void addMolecularFormula(IMolecularFormula formula) { components.add(formula); } /** * Returns an Iterable for looping over all IMolecularFormula * in this MolecularFormulaSet. * * @return An Iterable with the IMolecularFormula in this MolecularFormulaSet */ @Override public Iterable molecularFormulas() { return components; } /** * Returns an Iterator for looping over all IMolecularFormula * in this MolecularFormulaSet. * * @return An Iterator with the IMolecularFormula in this MolecularFormulaSet */ @Override public Iterator iterator() { return components.iterator(); } /** * Returns the number of MolecularFormulas in this MolecularFormulaSet. * * @return The number of MolecularFormulas in this MolecularFormulaSet */ @Override public int size() { return components.size(); } /** * True, if the MolecularFormulaSet contains the given IMolecularFormula object. * * @param formula The IMolecularFormula this MolecularFormulaSet is searched for * @return True, if the MolecularFormulaSet contains the given IMolecularFormula object */ @Override public boolean contains(IMolecularFormula formula) { return components.contains(formula); } /** * * Returns the MolecularFormula at position number in the * chemObject. * * @param position The position of the IMolecularFormula to be returned. * @return The IMolecularFormula at position number . */ @Override public IMolecularFormula getMolecularFormula(int position) { return components.get(position); } /** * Removes all IMolecularFormula from this chemObject. */ @Override public void removeAllMolecularFormulas() { components.clear(); } /** * Removes an IMolecularFormula from this chemObject. * * @param formula The IMolecularFormula to be removed from this chemObject */ @Override public void removeMolecularFormula(IMolecularFormula formula) { components.remove(formula); } /** * Removes an MolecularFormula from this chemObject. * * @param position The position of the MolecularFormula to be removed from this chemObject */ @Override public void removeMolecularFormula(int position) { components.remove(position); } /** * Clones this MolecularFormulaSet object and its content. * * @return The cloned object */ @Override public Object clone() throws CloneNotSupportedException { // /* it is not a super class of chemObject */ // MolecularFormulaSet clone = (MolecularFormulaSet) super.clone(); // // start from scratch // clone.removeAllMolecularFormulas(); // // clone all molecularFormulas // Iterator iterForm = this.molecularFormulas(); // while(iterForm.hasNext()){ // clone.addMolecularFormula((IMolecularFormula) iterForm.next().clone()); // } MolecularFormulaSet clone = new MolecularFormulaSet(); for (IMolecularFormula mf : this.molecularFormulas()) { clone.addMolecularFormula((IMolecularFormula) mf.clone()); } return clone; } @Override public IChemObjectBuilder getBuilder() { return DefaultChemObjectBuilder.getInstance(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy