From a06edd431b66d1b682f7dd11c4d93f090f90a62c Mon Sep 17 00:00:00 2001 From: CaelanWong Date: Mon, 29 Apr 2024 10:29:46 -0400 Subject: [PATCH] implement --delete molecule feature --- src/Main.java | 7 +++++++ src/MoleculeDatabase.java | 24 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/Main.java b/src/Main.java index 7c5632f..9930250 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 bdd0fa9..81a9e3d 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 */ -- GitLab