From 12c332d77eeac25015bbc4992e67a0056eff0328 Mon Sep 17 00:00:00 2001 From: 3010293 <3010293@stud.hs-mannheim.de> Date: Thu, 14 Nov 2024 19:04:48 +0100 Subject: [PATCH] added filter function for media browse --- PR2Bib/src/domainBib/Bibliothek.java | 21 ++++++++++++- PR2Bib/src/guiBib/BibliothekGUI.java | 45 ++++++++++++++++++++++++++-- 2 files changed, 62 insertions(+), 4 deletions(-) diff --git a/PR2Bib/src/domainBib/Bibliothek.java b/PR2Bib/src/domainBib/Bibliothek.java index 6415668..d9f6948 100644 --- a/PR2Bib/src/domainBib/Bibliothek.java +++ b/PR2Bib/src/domainBib/Bibliothek.java @@ -678,7 +678,7 @@ public class Bibliothek { } } - public static ArrayList findMatches(String searchTerm) { + public static ArrayList findMatchesFiltered(String searchTerm) { ArrayList matches = new ArrayList<>(); for(Buch b: bücherListe) { String titel = b.getTitel(); @@ -716,9 +716,28 @@ public class Bibliothek { matches.add(j); } } + System.out.println("Filtered: " + matches.size()); return matches; } + public static ArrayList findMatchesUnfiltered(String searchTerm) { + ArrayList matches = new ArrayList<>(); + for(Medium m: katalog) { + String titel = m.getTitel(); + if(titel.contains(searchTerm)) { + String text = m.getClass().toString(); + int lastDotIndex = text.lastIndexOf("."); + String substring = text.substring(lastDotIndex + 1); + int kennnummer = m.getKennnummer(); + JLabel j = new JLabel(substring + " namens: " + titel + " mit der Kennnummer: " + kennnummer); + matches.add(j); + } + } + System.out.println("Unfiltered: " + matches.size()); + return matches; + } + + } diff --git a/PR2Bib/src/guiBib/BibliothekGUI.java b/PR2Bib/src/guiBib/BibliothekGUI.java index 9d244c7..b79c798 100644 --- a/PR2Bib/src/guiBib/BibliothekGUI.java +++ b/PR2Bib/src/guiBib/BibliothekGUI.java @@ -344,22 +344,37 @@ public class BibliothekGUI extends JFrame implements ActionListener{ private static void searchMenu(Kunde k) { JPanel mainSearch = new JPanel(new BorderLayout()); //NORTH: Search bar - JPanel enterSearch = new JPanel(new GridLayout(1,3,10,10)); + JPanel enterSearch = new JPanel(new GridLayout(1,4,10,10)); JLabel text0 = new JLabel("Geben Sie einen Suchbegriff ein:"); JTextField enterSearchTerm = new JTextField(20); JButton b0 = new JButton("Suchen"); + JCheckBox box0 = new JCheckBox("Nur ausleihbare Medien anzeigen"); enterSearch.add(text0); enterSearch.add(enterSearchTerm); enterSearch.add(b0); + enterSearch.add(box0); mainSearch.add(enterSearch, BorderLayout.NORTH); //CENTER: Matched media + mainSearch.revalidate(); + int[] doThis = {0}; + box0.addActionListener(e -> { + if(box0.isSelected()) { + doThis[0] = 0; + } else { + doThis[0] = 1; + } + }); + if(doThis[0] == 0) { b0.addActionListener(e -> { String searchTerm = enterSearchTerm.getText().toString(); - ArrayList matchedMedia = Bibliothek.findMatches(searchTerm); + ArrayList matchedMedia = Bibliothek.findMatchesFiltered(searchTerm); int i = matchedMedia.size(); if(i == 0) { JLabel text1 = new JLabel("Nichts passendes zu dem Suchbegriff " + searchTerm + " gefunden."); - mainSearch.add(text0, BorderLayout.CENTER); + mainSearch.revalidate(); + mainSearch.add(text1, BorderLayout.CENTER); + mainSearch.revalidate(); + System.out.println("FIL"); } else if (i > 0){ JPanel ergebnisPanel = new JPanel(new GridLayout(i, 1, 10,10)); for(JLabel j: matchedMedia) { @@ -370,6 +385,30 @@ public class BibliothekGUI extends JFrame implements ActionListener{ mainSearch.revalidate(); } }); + } + if(doThis[0] == 1) { + b0.addActionListener(e -> { + String searchTerm = enterSearchTerm.getText().toString(); + ArrayList matchedMedia = Bibliothek.findMatchesUnfiltered(searchTerm); + int i = matchedMedia.size(); + if(i == 0) { + JLabel text1 = new JLabel("Nichts passendes zu dem Suchbegriff " + searchTerm + " gefunden."); + mainSearch.revalidate(); + mainSearch.add(text1, BorderLayout.CENTER); + mainSearch.revalidate(); + System.out.println("UNFIL"); + } else if (i > 0){ + JPanel ergebnisPanel = new JPanel(new GridLayout(i, 1, 10,10)); + for(JLabel j: matchedMedia) { + ergebnisPanel.add(j); + } + mainSearch.revalidate(); + mainSearch.add(ergebnisPanel, BorderLayout.CENTER); + mainSearch.revalidate(); + } + mainSearch.revalidate(); + }); + } //SOUTH: OK Button to return JButton b1 = new JButton("OK"); b1.addActionListener(e -> cl.show(mainPanel, "suchenMenu"));