From ad584a2f4c288f77c86674bcb3503c586be97e61 Mon Sep 17 00:00:00 2001 From: Jordan Date: Fri, 19 Mar 2021 10:59:54 -0600 Subject: [PATCH 01/19] Updated Experiment Manager for queries, refined searching to proper section --- .../ExperimentModel/ExperimentManager.java | 106 ++++++++++++++++-- .../NavigationActivity.java | 21 ++++ .../ui/home/HomeFragment.java | 25 ++++- .../ExperimentManagerTest.java | 4 +- 4 files changed, 142 insertions(+), 14 deletions(-) diff --git a/code/app/src/main/java/com/example/experiment_automata/Experiments/ExperimentModel/ExperimentManager.java b/code/app/src/main/java/com/example/experiment_automata/Experiments/ExperimentModel/ExperimentManager.java index 9a10aa95..447c8123 100644 --- a/code/app/src/main/java/com/example/experiment_automata/Experiments/ExperimentModel/ExperimentManager.java +++ b/code/app/src/main/java/com/example/experiment_automata/Experiments/ExperimentModel/ExperimentManager.java @@ -33,11 +33,11 @@ public ExperimentManager() /** * Adds the given experiment that the user class/caller gives to this class * @param id - * id corresponding to the experiment + * Id corresponding to the experiment * @param experiment - * experiment to add to the manager + * Experiment to add to the manager * @throws IllegalArgumentException - * the id is already associated to an experiment + * The id is already associated to an experiment */ public void add(UUID id, Experiment experiment) throws IllegalArgumentException { if(experiments.containsKey(id)) @@ -50,14 +50,14 @@ public void add(UUID id, Experiment experiment) throws IllegalArgumentException /** * Deletes a given experiment from the currently maintained list * @param id - * experiment ID to delete + * Experiment ID to delete */ public void delete(UUID id) { experiments.remove(id); } /** - * gets the size of the currently maintained list + * Gets the size of the currently maintained list * @return - * the size of the current list + * The size of the current list */ public int getSize() { return experiments.size(); } @@ -94,7 +94,12 @@ public ArrayList queryExperiments(Collection experimentIds) { return experimentsList; } - public ArrayList queryPublishedExperiments() { + /** + * Get all published experiments + * @return + * An arraylist of all published experiments + */ + public ArrayList getPublishedExperiments() { ArrayList experimentsList = new ArrayList<>(); for (Map.Entry entry : experiments.entrySet()) { Experiment experiment = experiments.get(entry.getKey()); @@ -118,7 +123,7 @@ public Experiment getAtUUIDDescription(UUID experimentUUID) } /** - * gives back a list of experiments that match a search term given by the + * Gives back a list of experiments that match a search term given by the * user. * @param query * @return @@ -137,21 +142,104 @@ public ArrayList queryExperiments(String query) { return experimentsList; } + /** + * Queries experiments from group that have a description that matches the query + * @param query + * Description to match + * @param experimentIds + * Group of experiments to search through + * @return + * The experiments from the group that match the query + */ + public ArrayList queryExperiment(String query, Collection experimentIds) { + ArrayList experimentsList = new ArrayList<>(); + for (UUID id : experimentIds) { + if (queryMatch(query, experiments.get(id).getDescription())) { + experimentsList.add(experiments.get(id)); + } + } + return experimentsList; + } + + /** + * Get all owned experiments based on a query + * @param query + * The description you are querying for + * @param ownerId + * The owner of the experiment + * @return + * All experiments that match the query and are had by that owner + */ + public ArrayList queryOwnedExperiments(String query, UUID ownerId) { + ArrayList experimentsList = new ArrayList<>(); + for (Map.Entry entry : experiments.entrySet()) { + Experiment experiment = experiments.get(entry.getKey()); + if (experiment.getOwnerId().equals(ownerId) && queryMatch(query, + experiment.getDescription())) { + experimentsList.add(experiment); + } + } + return experimentsList; + } + + /** + * Get all published experiments based on a query + * @param query + * The description you are querying for + * @return + * All experiments that match the query and are published + */ + public ArrayList queryPublishedExperiments(String query) { + ArrayList experimentsList = new ArrayList<>(); + for (Map.Entry entry : experiments.entrySet()) { + Experiment experiment = experiments.get(entry.getKey()); + if (experiment.isPublished() && queryMatch(query, experiment.getDescription())) { + experimentsList.add(experiment); + } + } + return experimentsList; + } + + /** + * Will query a specific experiment based on it's UUID + * @param experimentId + * UUID of the experiment you want + * @return + * The requested experiment + */ public Experiment query(UUID experimentId) { return experiments.get(experimentId); } + /** + * Function to help query specific experiments when searching based on description + * @param query + * The query you are searching for + * @param source + * The object you are comparing against + * @return + * A boolean for if the source has a partial match with the query + */ private boolean queryMatch(String query, String source) { String[] queryTokens = query.toLowerCase().split("\\W"); for (int j = 0; j < queryTokens.length; j++) { -// Log.d("SEARCHING", "query token:\t" + queryTokens[j]); if (source.toLowerCase().indexOf(queryTokens[j]) >= 0) return true; } return false; } + /** + * Get the current experiment being held in memory by the manager + * @return + * The current experiment + */ public Experiment getCurrentExperiment() { return currentExperiment; } + /** + * Set the current experiment being held in memory by the manager + * @param experiment + * The experiment that you want to be set as the current experiment + */ public void setCurrentExperiment(Experiment experiment) { currentExperiment = experiment; } /** diff --git a/code/app/src/main/java/com/example/experiment_automata/NavigationActivity.java b/code/app/src/main/java/com/example/experiment_automata/NavigationActivity.java index 15353b72..75437846 100644 --- a/code/app/src/main/java/com/example/experiment_automata/NavigationActivity.java +++ b/code/app/src/main/java/com/example/experiment_automata/NavigationActivity.java @@ -191,6 +191,27 @@ public boolean onCreateOptionsMenu(Menu menu) { public boolean onQueryTextSubmit(String query) { Bundle bundle = new Bundle(); bundle.putString("query", query); + Log.d("Current Screen", currentFragment.getArguments().getString("mode")); + switch (currentFragment.getArguments().getString("mode")) { + case "owned": + bundle.putString("screen", "owned"); + break; + + case "published": + bundle.putString("screen", "published"); + break; + + case "subscribed": + bundle.putString("screen", "subscribed"); + break; + + case "search": + bundle.putString("screen", "search"); + break; + + default: + throw new IllegalArgumentException(); + } navController.navigate(R.id.nav_search, bundle); searchView.setQuery("", false); return false; diff --git a/code/app/src/main/java/com/example/experiment_automata/ui/home/HomeFragment.java b/code/app/src/main/java/com/example/experiment_automata/ui/home/HomeFragment.java index 080dec14..841b69a6 100644 --- a/code/app/src/main/java/com/example/experiment_automata/ui/home/HomeFragment.java +++ b/code/app/src/main/java/com/example/experiment_automata/ui/home/HomeFragment.java @@ -95,15 +95,34 @@ public void populateList() { break; case "published": experimentsArrayList.addAll(parentActivity.experimentManager - .queryPublishedExperiments()); + .getPublishedExperiments()); break; case "subscribed": experimentsArrayList.addAll(parentActivity.experimentManager .queryExperiments(parentActivity.loggedUser.getSubscriptions())); break; case "search": - experimentsArrayList.addAll(parentActivity.experimentManager - .queryExperiments(getArguments().getString("query"))); + Log.d("Search Size", "" + experimentsArrayList.size()); + String query = getArguments().getString("query"); + switch (getArguments().getString("screen")) { + case "owned": + experimentsArrayList.addAll(parentActivity.experimentManager + .queryOwnedExperiments(query, parentActivity.loggedUser.getUserId())); + break; + case "published": + experimentsArrayList.addAll(parentActivity.experimentManager + .queryPublishedExperiments(query)); + break; + case "subscribed": + experimentsArrayList.addAll(parentActivity.experimentManager + .queryExperiments(parentActivity.loggedUser.getSubscriptions())); + break; + case "search": + Log.d("uh oh", "search"); + break; + } +// experimentsArrayList.addAll(parentActivity.experimentManager +// .queryExperiments(getArguments().getString("query"))); break; default: throw new IllegalArgumentException(); diff --git a/code/app/src/test/java/com/example/experiment_automata/ExperimentManagerTest.java b/code/app/src/test/java/com/example/experiment_automata/ExperimentManagerTest.java index 9ac84a21..43cb197d 100644 --- a/code/app/src/test/java/com/example/experiment_automata/ExperimentManagerTest.java +++ b/code/app/src/test/java/com/example/experiment_automata/ExperimentManagerTest.java @@ -72,14 +72,14 @@ public void ownedExperiments() { @Test public void publishedExperiments() { - ArrayList publishedExperiments = experimentManager.queryPublishedExperiments(); + ArrayList publishedExperiments = experimentManager.getPublishedExperiments(); // None of the experiments have been published assertEquals(0, publishedExperiments.size()); // Publish all the experiments for (Experiment e : experiments) { e.setPublished(true); } - publishedExperiments = experimentManager.queryPublishedExperiments(); + publishedExperiments = experimentManager.getPublishedExperiments(); assertEquals(2, publishedExperiments.size()); } From a1fecedc09f3559754d1d55fdfc14852876e838a Mon Sep 17 00:00:00 2001 From: Jordan Date: Fri, 19 Mar 2021 11:22:06 -0600 Subject: [PATCH 02/19] Fixed Javadoc, small bug in search, updated UML --- .../ExperimentModel/ExperimentManager.java | 2 +- .../NavigationActivity.java | 71 ++++++++++++++++++- .../ui/home/HomeFragment.java | 4 +- doc/uml/uml.puml | 6 +- 4 files changed, 74 insertions(+), 9 deletions(-) diff --git a/code/app/src/main/java/com/example/experiment_automata/Experiments/ExperimentModel/ExperimentManager.java b/code/app/src/main/java/com/example/experiment_automata/Experiments/ExperimentModel/ExperimentManager.java index 447c8123..5f2dea02 100644 --- a/code/app/src/main/java/com/example/experiment_automata/Experiments/ExperimentModel/ExperimentManager.java +++ b/code/app/src/main/java/com/example/experiment_automata/Experiments/ExperimentModel/ExperimentManager.java @@ -151,7 +151,7 @@ public ArrayList queryExperiments(String query) { * @return * The experiments from the group that match the query */ - public ArrayList queryExperiment(String query, Collection experimentIds) { + public ArrayList queryExperiments(String query, Collection experimentIds) { ArrayList experimentsList = new ArrayList<>(); for (UUID id : experimentIds) { if (queryMatch(query, experiments.get(id).getDescription())) { diff --git a/code/app/src/main/java/com/example/experiment_automata/NavigationActivity.java b/code/app/src/main/java/com/example/experiment_automata/NavigationActivity.java index 75437846..10ea265e 100644 --- a/code/app/src/main/java/com/example/experiment_automata/NavigationActivity.java +++ b/code/app/src/main/java/com/example/experiment_automata/NavigationActivity.java @@ -73,6 +73,11 @@ public class NavigationActivity extends AppCompatActivity implements public final User loggedUser = new User(); public Experiment currentExperiment; + /** + * Method called when creating NavigationActivity + * @param savedInstanceState + * A bundle with stored information if required + */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -92,6 +97,11 @@ protected void onCreate(Bundle savedInstanceState) { NavigationUI.setupWithNavController(navigationView, navController); FloatingActionButton addExperimentButton = findViewById(R.id.add_experiment_button); addExperimentButton.setOnClickListener(new View.OnClickListener() { + /** + * Deal with the FAB when clicked + * @param view + * The current view being used + */ @Override public void onClick(View view) { switch (currentScreen) { @@ -165,6 +175,13 @@ public void onClick(View view) { }); } + /** + * Prepare search bar functionality + * @param menu + * A menu to help create the object + * @return + * A boolean based on success of creation + */ @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. @@ -191,7 +208,6 @@ public boolean onCreateOptionsMenu(Menu menu) { public boolean onQueryTextSubmit(String query) { Bundle bundle = new Bundle(); bundle.putString("query", query); - Log.d("Current Screen", currentFragment.getArguments().getString("mode")); switch (currentFragment.getArguments().getString("mode")) { case "owned": bundle.putString("screen", "owned"); @@ -231,6 +247,11 @@ public boolean onQueryTextChange(String newText) { return true; } + /** + * Deals with when a user navigates up in the application + * @return + * A boolean based on the success of the operation + */ @Override public boolean onSupportNavigateUp() { NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment); @@ -238,6 +259,11 @@ public boolean onSupportNavigateUp() { || super.onSupportNavigateUp(); } + /** + * Tells the application how to respond when OK is pressed in experiment creation + * @param experiment + * Experiment to be added to the experiment manager + */ @Override public void onOkPressed(Experiment experiment) { @@ -257,6 +283,19 @@ public void onOkPressed(Experiment experiment) { } } + /** + * Edits an existing experiment with the information given + * @param experimentDescription + * New description of the experiment + * @param experimentTrials + * New minimum trials for this experiment + * @param experimentLocation + * Boolean for if this experiment requires a location + * @param experimentNewResults + * Boolean for if this experiment accepts new results + * @param currentExperiment + * The current experiment being modified + */ @Override // todo: this functionality should be moved into something else in the future public void onOKPressedEdit(String experimentDescription, int experimentTrials, @@ -269,20 +308,39 @@ public void onOKPressedEdit(String experimentDescription, int experimentTrials, ((NavExperimentDetailsFragment) currentFragment).updateScreen(); } - + /** + * Sets the current screen variable + * @param currentScreen + * The screen to set as currentScreen + */ public void setCurrentScreen(Screen currentScreen) { this.currentScreen = currentScreen; } + /** + * Sets the current fragment variable + * @param currentFragment + * The fragment to set as currentFragment + */ public void setCurrentFragment(Fragment currentFragment) { this.currentFragment = currentFragment; } + /** + * Gives the singleton Experiment Manager used throughout + * @return + */ public ExperimentManager getExperimentManager() { return experimentManager; } - + /** + * Creates a question from QuestionDialog and adds it to QuestionManager + * @param question + * The message of the question + * @param experimentId + * The ID of the experiment it's related to. + */ @Override public void onOkPressedQuestion(String question, UUID experimentId) { Question newQuestion = new Question(question, loggedUser.getUserId(), experimentId); @@ -294,6 +352,13 @@ public void onOkPressedQuestion(String question, UUID experimentId) { Log.d("current screen", currentScreen + ""); } + /** + * Creates a reply from the QuestionDialog and adds it to QuestionManager + * @param reply + * The message of the reply + * @param questionId + * The ID of the associated Question + */ @Override public void onOkPressedReply(String reply, UUID questionId) { Reply newReply = new Reply(reply, questionId); diff --git a/code/app/src/main/java/com/example/experiment_automata/ui/home/HomeFragment.java b/code/app/src/main/java/com/example/experiment_automata/ui/home/HomeFragment.java index 841b69a6..59f2626a 100644 --- a/code/app/src/main/java/com/example/experiment_automata/ui/home/HomeFragment.java +++ b/code/app/src/main/java/com/example/experiment_automata/ui/home/HomeFragment.java @@ -115,14 +115,12 @@ public void populateList() { break; case "subscribed": experimentsArrayList.addAll(parentActivity.experimentManager - .queryExperiments(parentActivity.loggedUser.getSubscriptions())); + .queryExperiments(query, parentActivity.loggedUser.getSubscriptions())); break; case "search": Log.d("uh oh", "search"); break; } -// experimentsArrayList.addAll(parentActivity.experimentManager -// .queryExperiments(getArguments().getString("query"))); break; default: throw new IllegalArgumentException(); diff --git a/doc/uml/uml.puml b/doc/uml/uml.puml index 525a8e35..ac7a266d 100644 --- a/doc/uml/uml.puml +++ b/doc/uml/uml.puml @@ -24,8 +24,10 @@ class ExperimentManager{ + getOwnedExperiments(ownerID: UUID): ArrayList + query(experimentID: UUID): Experiment + queryExperiments(query: String): ArrayList - + queryExperiments(experimentIds: Collection): ArrayList - + queryPublishedExperiments(): ArrayList + + queryExperiments(experimentIds: Collection): ArrayList + + queryExperiments(query: String, experimentIds: Collection): ArrayList + + queryOwnedExperiments(query: String, ownerId: UUID): ArrayList + + getPublishedExperiments(): ArrayList + getAtUUIDDescription(experimentUUID: UUID): Experiment + getAllExperiments(): ArrayList - queryMatch(query: String, source: String): Boolean From 1707a3c45185f15d0f76025d7d5618c565f5d0fa Mon Sep 17 00:00:00 2001 From: Jordan Date: Fri, 19 Mar 2021 11:40:34 -0600 Subject: [PATCH 03/19] Resolved nested search preventing proper search, final UML update for branch --- .../ExperimentModel/ExperimentManager.java | 15 +++++++++++++++ .../experiment_automata/NavigationActivity.java | 8 ++++---- .../experiment_automata/ui/home/HomeFragment.java | 2 +- doc/uml/uml.puml | 4 +++- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/code/app/src/main/java/com/example/experiment_automata/Experiments/ExperimentModel/ExperimentManager.java b/code/app/src/main/java/com/example/experiment_automata/Experiments/ExperimentModel/ExperimentManager.java index 5f2dea02..e311bd3c 100644 --- a/code/app/src/main/java/com/example/experiment_automata/Experiments/ExperimentModel/ExperimentManager.java +++ b/code/app/src/main/java/com/example/experiment_automata/Experiments/ExperimentModel/ExperimentManager.java @@ -20,6 +20,7 @@ public class ExperimentManager { private static HashMap experiments; private Experiment currentExperiment; + private String currentFragment; /** @@ -251,4 +252,18 @@ public ArrayList getAllExperiments() { return new ArrayList(experiments.values()); } + + /** + * Get the current fragment in case in the search screen + * @return + * A string of the name of the last non-search fragment + */ + public String getCurrentFragment() {return this.currentFragment;} + + /** + * Set the current fragment in case someone does many searches in a row + * @param newFragment + * A string for the name of the current non-search fragment + */ + public void setCurrentFragment(String newFragment) {this.currentFragment = newFragment;} } diff --git a/code/app/src/main/java/com/example/experiment_automata/NavigationActivity.java b/code/app/src/main/java/com/example/experiment_automata/NavigationActivity.java index 10ea265e..7e764fd2 100644 --- a/code/app/src/main/java/com/example/experiment_automata/NavigationActivity.java +++ b/code/app/src/main/java/com/example/experiment_automata/NavigationActivity.java @@ -210,19 +210,19 @@ public boolean onQueryTextSubmit(String query) { bundle.putString("query", query); switch (currentFragment.getArguments().getString("mode")) { case "owned": - bundle.putString("screen", "owned"); + experimentManager.setCurrentFragment("owned"); break; case "published": - bundle.putString("screen", "published"); + experimentManager.setCurrentFragment("published"); break; case "subscribed": - bundle.putString("screen", "subscribed"); + experimentManager.setCurrentFragment("subscribed"); break; case "search": - bundle.putString("screen", "search"); + Log.d("Nested Search", "Fix Later"); break; default: diff --git a/code/app/src/main/java/com/example/experiment_automata/ui/home/HomeFragment.java b/code/app/src/main/java/com/example/experiment_automata/ui/home/HomeFragment.java index 59f2626a..aa1e2319 100644 --- a/code/app/src/main/java/com/example/experiment_automata/ui/home/HomeFragment.java +++ b/code/app/src/main/java/com/example/experiment_automata/ui/home/HomeFragment.java @@ -104,7 +104,7 @@ public void populateList() { case "search": Log.d("Search Size", "" + experimentsArrayList.size()); String query = getArguments().getString("query"); - switch (getArguments().getString("screen")) { + switch (parentActivity.experimentManager.getCurrentFragment()) { case "owned": experimentsArrayList.addAll(parentActivity.experimentManager .queryOwnedExperiments(query, parentActivity.loggedUser.getUserId())); diff --git a/doc/uml/uml.puml b/doc/uml/uml.puml index ac7a266d..01755ebe 100644 --- a/doc/uml/uml.puml +++ b/doc/uml/uml.puml @@ -18,6 +18,7 @@ class User { class ExperimentManager{ - {static} experiments: HashMap - currentExperiment: Experiment + - currentFragment: String + delete(id: UUID) + add(id: UUID, experiment: Experiment) @@ -26,7 +27,8 @@ class ExperimentManager{ + queryExperiments(query: String): ArrayList + queryExperiments(experimentIds: Collection): ArrayList + queryExperiments(query: String, experimentIds: Collection): ArrayList - + queryOwnedExperiments(query: String, ownerId: UUID): ArrayList + + queryOwnedExperiments(query: String, ownerId: UUID): ArrayList + + queryPublishedExperiments(query: String): ArrayList + getPublishedExperiments(): ArrayList + getAtUUIDDescription(experimentUUID: UUID): Experiment + getAllExperiments(): ArrayList From 087f1fd603b8119d1259b5cd01af0d5bc19bb10d Mon Sep 17 00:00:00 2001 From: musichead42 Date: Fri, 19 Mar 2021 17:51:37 +0000 Subject: [PATCH 04/19] Update UML image --- doc/uml/UML.png | Bin 231493 -> 243541 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/uml/UML.png b/doc/uml/UML.png index 7ea5318e3404e4a5895544f0115053212eb53d6e..9995d6e46aa4fc68f0d193b723ae0813e504bc46 100644 GIT binary patch literal 243541 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