diff --git a/src/Main.java b/src/Main.java index 7c5632fbd04a87266da6706ec4da1e2c16b7d55c..99302505a3f10ec3bf0fa28f552b0b76b7bb342c 100644 --- a/src/Main.java +++ b/src/Main.java @@ -122,6 +122,13 @@ public class Main { printVerbose("invalid Input"); } break; + case "--delete": + boolean delete= moleculeDb.deleteMolecule(new Molecule(moleculePath)); + if(delete) + printVerbose("Successfully Deleted"); + else + printVerbose("Molecule not deleted or already not in the database"); + break; default: printVerbose("unrecognized command: " + cmd); break; diff --git a/src/MoleculeDatabase.java b/src/MoleculeDatabase.java index bdd0fa96259363450594ff235460c70d6acbadae..81a9e3d9e95ca5ecb09e18a9d997c251a2c0d308 100644 --- a/src/MoleculeDatabase.java +++ b/src/MoleculeDatabase.java @@ -176,6 +176,30 @@ public class MoleculeDatabase { return returnList; } + + /** + * Delete a given molecule if it is in the database + */ + public boolean deleteMolecule(Molecule molecule){ + // Retrieve the partitioned array list based on the number of atoms + int numAtoms = molecule.getNumAtoms(); + if (!db.containsKey(numAtoms)) { + return false; + } + ArrayList moleculesWithSameNumAtoms = db.get(numAtoms); + + // Iterate through the array list of molecules with the same number of atoms + for (Molecule dbMolecule : moleculesWithSameNumAtoms) { + Molecule result = dbMolecule.areMoleculesEqual(molecule); + if (result != null) { + db.get(numAtoms).remove(dbMolecule); + return true; // successfully delete the molecule + } + } + return false; // Return false if molecule not in database + } + + /** * Save database to file system */