From e21589c0024f2867908f79985dd15fcb79a89b0e Mon Sep 17 00:00:00 2001 From: Servicepoint Date: Wed, 5 Nov 2014 18:06:17 +0100 Subject: [PATCH] =?UTF-8?q?UserListModel=20implementiert,=20um=20Daten=20f?= =?UTF-8?q?=C3=BCr=20eine=20Dropdownliste=20zur=20Verf=C3=BCgung=20stellen?= =?UTF-8?q?=20zu=20k=C3=B6nnen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kBorrow.ucls | 306 ++++++++---------- .../kBorrow/controller/ArticleController.java | 23 +- .../controller/NewLendingController.java | 5 + .../kBorrow/controller/UserController.java | 24 +- src/de/katho/kBorrow/gui/ArticlePanel.java | 10 +- src/de/katho/kBorrow/gui/MainWindow.java | 20 +- ...Lendings.java => ManageLendingsPanel.java} | 6 +- ...elNewLending.java => NewLendingPanel.java} | 15 +- src/de/katho/kBorrow/gui/UserPanel.java | 9 +- .../listener/NewLendingTableButton.java | 4 +- src/de/katho/kBorrow/models/ArticleModel.java | 27 +- .../kBorrow/models/FreeArticleModel.java | 4 +- .../katho/kBorrow/models/UserListModel.java | 78 +++++ src/de/katho/kBorrow/models/UserModel.java | 19 +- 14 files changed, 307 insertions(+), 243 deletions(-) create mode 100644 src/de/katho/kBorrow/controller/NewLendingController.java rename src/de/katho/kBorrow/gui/{PanelManageLendings.java => ManageLendingsPanel.java} (57%) rename src/de/katho/kBorrow/gui/{PanelNewLending.java => NewLendingPanel.java} (88%) create mode 100644 src/de/katho/kBorrow/models/UserListModel.java diff --git a/kBorrow.ucls b/kBorrow.ucls index bc111b9..4bb436f 100644 --- a/kBorrow.ucls +++ b/kBorrow.ucls @@ -55,16 +55,7 @@ - - - - - - - - - - - - + @@ -109,7 +100,7 @@ - - - - + @@ -145,7 +136,7 @@ - - - - - - - - - - - - - - - - - + + + + + + + + - + - - - - - - - - - - - - + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - + - - + + + + + + - + - - + + + + + + - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/de/katho/kBorrow/controller/ArticleController.java b/src/de/katho/kBorrow/controller/ArticleController.java index 153009a..7a7739f 100644 --- a/src/de/katho/kBorrow/controller/ArticleController.java +++ b/src/de/katho/kBorrow/controller/ArticleController.java @@ -1,15 +1,20 @@ package de.katho.kBorrow.controller; +import java.util.HashMap; + import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.models.ArticleModel; +import de.katho.kBorrow.models.FreeArticleModel; public class ArticleController { private DbConnector dbCon; private ArticleModel articleModel; + private FreeArticleModel freeArticleModel; - public ArticleController(DbConnector pDbCon, ArticleModel pModel){ + public ArticleController(DbConnector pDbCon, HashMap pModels){ dbCon = pDbCon; - articleModel = pModel; + articleModel = (ArticleModel)pModels.get("articlemodel"); + freeArticleModel = (FreeArticleModel)pModels.get("freearticlemodel"); } /** @@ -24,7 +29,8 @@ public class ArticleController { public int createArticle(String pName, String pDesc) { int status = dbCon.createArticle(pName, pDesc); - articleModel.updateTable(); + articleModel.updateModel(); + freeArticleModel.updateModel(); return status; } @@ -43,11 +49,8 @@ public class ArticleController { int status = this.dbCon.editArticle(pId, pName, pDesc); if(status == 0){ - int row = articleModel.getRowFromId(pId); - - articleModel.getArticleByRow(row).setName(pName); - articleModel.getArticleByRow(row).setDescription(pDesc); - articleModel.fireTableRowsUpdated(row, row); + articleModel.updateModel(); + freeArticleModel.updateModel(); } return status; @@ -61,8 +64,8 @@ public class ArticleController { */ public boolean deleteArticle(int id) { if(this.dbCon.deleteArticle(id)){ - int row = articleModel.getRowFromId(id); - articleModel.removeRow(row); + articleModel.updateModel(); + freeArticleModel.updateModel(); return true; } diff --git a/src/de/katho/kBorrow/controller/NewLendingController.java b/src/de/katho/kBorrow/controller/NewLendingController.java new file mode 100644 index 0000000..ebd1754 --- /dev/null +++ b/src/de/katho/kBorrow/controller/NewLendingController.java @@ -0,0 +1,5 @@ +package de.katho.kBorrow.controller; + +public class NewLendingController { + +} diff --git a/src/de/katho/kBorrow/controller/UserController.java b/src/de/katho/kBorrow/controller/UserController.java index 8d854b1..c8f21a3 100644 --- a/src/de/katho/kBorrow/controller/UserController.java +++ b/src/de/katho/kBorrow/controller/UserController.java @@ -1,22 +1,28 @@ package de.katho.kBorrow.controller; +import java.util.HashMap; + import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.models.UserModel; +import de.katho.kBorrow.models.UserListModel; public class UserController { private DbConnector dbCon; private UserModel userModel; + private UserListModel userListModel; - public UserController(DbConnector pDbCon, UserModel pModel) { + public UserController(DbConnector pDbCon, HashMap pModels) { dbCon = pDbCon; - userModel = pModel; + userModel = (UserModel)pModels.get("usermodel"); + userListModel = (UserListModel)pModels.get("userlistmodel"); } public int createUser(String pName, String pSurname){ int status = dbCon.createUser(pName, pSurname); - userModel.updateTable(); + userModel.updateModel(); + userListModel.updateModel(); return status; } @@ -25,11 +31,8 @@ public class UserController { int status = dbCon.editUser(pId, pName, pSurname); if(status == 0){ - int row = userModel.getRowFromId(pId); - - userModel.getUserByRow(row).setName(pName); - userModel.getUserByRow(row).setSurname(pSurname); - userModel.fireTableRowsUpdated(row, row); + userModel.updateModel(); + userListModel.updateModel(); } return status; @@ -37,9 +40,8 @@ public class UserController { public boolean deleteUser(int id){ if(dbCon.deleteUser(id)){ - int row = userModel.getRowFromId(id); - - userModel.removeRow(row); + userModel.updateModel(); + userListModel.updateModel(); return true; } diff --git a/src/de/katho/kBorrow/gui/ArticlePanel.java b/src/de/katho/kBorrow/gui/ArticlePanel.java index 70d4503..ef9d5ae 100644 --- a/src/de/katho/kBorrow/gui/ArticlePanel.java +++ b/src/de/katho/kBorrow/gui/ArticlePanel.java @@ -9,6 +9,7 @@ import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.IOException; +import java.util.HashMap; import java.util.Vector; import javax.swing.BorderFactory; @@ -31,7 +32,6 @@ import de.katho.kBorrow.models.ArticleModel; public class ArticlePanel extends JPanel implements ActionListener, KeyListener { private static final long serialVersionUID = -8511924597640457608L; - private ArticleModel articleModel; private ArticleController articleController; private JTextArea textAreaArticleDescription; private JTextField textFieldArticleName; @@ -40,16 +40,18 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener private JLabel lblArticleStatus; private boolean articleModeEdit; private int articleEditId; + private ArticleModel articleModel; /** * Create the panel. * @throws IOException */ - public ArticlePanel(final DbConnector dbCon) throws IOException { + public ArticlePanel(final DbConnector dbCon, HashMap pModels) throws IOException { super(); this.setLayout(null); - articleModel = new ArticleModel(dbCon); - articleController = new ArticleController(dbCon, articleModel); + articleModel = (ArticleModel)pModels.get("articlemodel"); + + articleController = new ArticleController(dbCon, pModels); /* * Tabelle und drumherum diff --git a/src/de/katho/kBorrow/gui/MainWindow.java b/src/de/katho/kBorrow/gui/MainWindow.java index 462c5fe..e4a8367 100644 --- a/src/de/katho/kBorrow/gui/MainWindow.java +++ b/src/de/katho/kBorrow/gui/MainWindow.java @@ -9,11 +9,16 @@ import javax.swing.UnsupportedLookAndFeelException; import java.awt.BorderLayout; import java.io.IOException; import java.sql.SQLException; +import java.util.HashMap; import de.katho.kBorrow.Settings; import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.db.SqlConnector; import de.katho.kBorrow.db.SqliteConnector; +import de.katho.kBorrow.models.ArticleModel; +import de.katho.kBorrow.models.FreeArticleModel; +import de.katho.kBorrow.models.UserModel; +import de.katho.kBorrow.models.UserListModel; public class MainWindow { @@ -26,6 +31,7 @@ public class MainWindow { private Settings set; + private HashMap models; /** * Create the application. @@ -51,12 +57,18 @@ public class MainWindow { } UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + models = new HashMap(); + models.put("usermodel", new UserModel(dbCon)); + models.put("userlistmodel", new UserListModel(dbCon)); + models.put("articlemodel", new ArticleModel(dbCon)); + models.put("freearticlemodel", new FreeArticleModel(dbCon)); + this.tabbedPane = new JTabbedPane(JTabbedPane.TOP); this.frame.getContentPane().add(this.tabbedPane, BorderLayout.CENTER); - this.tabbedPane.addTab("Neue Ausleihe", new PanelNewLending(this.dbCon)); - this.tabbedPane.addTab("Ausleihen verwalten", new PanelManageLendings(this.dbCon)); - this.tabbedPane.addTab("Artikel verwalten", new ArticlePanel(this.dbCon)); - this.tabbedPane.addTab("Benutzer verwalten", new UserPanel(this.dbCon)); + this.tabbedPane.addTab("Neue Ausleihe", new NewLendingPanel(this.dbCon, models)); + this.tabbedPane.addTab("Ausleihen verwalten", new ManageLendingsPanel(this.dbCon, models)); + this.tabbedPane.addTab("Artikel verwalten", new ArticlePanel(this.dbCon, models)); + this.tabbedPane.addTab("Benutzer verwalten", new UserPanel(this.dbCon, models)); } catch(ClassNotFoundException | InstantiationException | IllegalAccessException | IOException | UnsupportedLookAndFeelException | SQLException e) { diff --git a/src/de/katho/kBorrow/gui/PanelManageLendings.java b/src/de/katho/kBorrow/gui/ManageLendingsPanel.java similarity index 57% rename from src/de/katho/kBorrow/gui/PanelManageLendings.java rename to src/de/katho/kBorrow/gui/ManageLendingsPanel.java index 0b0ff9e..92fdd9a 100644 --- a/src/de/katho/kBorrow/gui/PanelManageLendings.java +++ b/src/de/katho/kBorrow/gui/ManageLendingsPanel.java @@ -1,10 +1,12 @@ package de.katho.kBorrow.gui; +import java.util.HashMap; + import javax.swing.JPanel; import de.katho.kBorrow.db.DbConnector; -public class PanelManageLendings extends JPanel { +public class ManageLendingsPanel extends JPanel { /** * @@ -15,7 +17,7 @@ public class PanelManageLendings extends JPanel { * Create the panel. * @param dbCon */ - public PanelManageLendings(DbConnector dbCon) { + public ManageLendingsPanel(DbConnector dbCon, HashMap pModels) { } diff --git a/src/de/katho/kBorrow/gui/PanelNewLending.java b/src/de/katho/kBorrow/gui/NewLendingPanel.java similarity index 88% rename from src/de/katho/kBorrow/gui/PanelNewLending.java rename to src/de/katho/kBorrow/gui/NewLendingPanel.java index 9856371..6cd6a73 100644 --- a/src/de/katho/kBorrow/gui/PanelNewLending.java +++ b/src/de/katho/kBorrow/gui/NewLendingPanel.java @@ -5,6 +5,7 @@ import javax.swing.JPanel; import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.listener.NewLendingTableButton; import de.katho.kBorrow.models.FreeArticleModel; +import de.katho.kBorrow.models.UserListModel; import javax.swing.border.TitledBorder; import javax.swing.JScrollPane; @@ -12,6 +13,7 @@ import javax.swing.JTable; import java.awt.BorderLayout; import java.io.IOException; +import java.util.HashMap; import javax.swing.JLabel; import javax.swing.JComboBox; @@ -22,7 +24,7 @@ import javax.swing.UIManager; import java.awt.Color; -public class PanelNewLending extends JPanel { +public class NewLendingPanel extends JPanel { /** * @@ -32,17 +34,20 @@ public class PanelNewLending extends JPanel { private JTextField tfName; private JTextField tfSurname; private JTextField tfStudentNumber; + private UserListModel userListModel; /** * Create the panel. * @param dbCon * @throws IOException */ - public PanelNewLending(final DbConnector dbCon) throws IOException { - this.setLayout(null); + public NewLendingPanel(final DbConnector dbCon, HashMap pModel) throws IOException { + setLayout(null); // FreeArticleTable - this.freeArticleModel = new FreeArticleModel(dbCon); + freeArticleModel = (FreeArticleModel)pModel.get("freearticlemodel"); + userListModel = (UserListModel)pModel.get("userlistmodel"); + JTable freeArticleTable = new JTable(freeArticleModel); freeArticleTable.setRowHeight(30); @@ -101,7 +106,7 @@ public class PanelNewLending extends JPanel { lblBenutzer.setBounds(350, 20, 70, 20); panelNewLending.add(lblBenutzer); - JComboBox comboBox = new JComboBox(); + JComboBox comboBox = new JComboBox(userListModel); comboBox.setBounds(430, 20, 130, 20); panelNewLending.add(comboBox); diff --git a/src/de/katho/kBorrow/gui/UserPanel.java b/src/de/katho/kBorrow/gui/UserPanel.java index e417993..753d928 100644 --- a/src/de/katho/kBorrow/gui/UserPanel.java +++ b/src/de/katho/kBorrow/gui/UserPanel.java @@ -7,6 +7,7 @@ import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.IOException; +import java.util.HashMap; import java.util.Vector; import javax.swing.JButton; @@ -37,11 +38,11 @@ public class UserPanel extends JPanel implements ActionListener, KeyListener { private UserModel userModel; private UserController userController; - public UserPanel(final DbConnector dbCon) throws IOException{ + public UserPanel(final DbConnector dbCon, HashMap pModels) throws IOException{ super(); - this.setLayout(null); - this.userModel = new UserModel(dbCon); - this.userController = new UserController(dbCon, this.userModel); + setLayout(null); + userModel = (UserModel)pModels.get("usermodel"); + userController = new UserController(dbCon, pModels); //Tabelle und drumherum JTable userTable = new JTable(userModel); diff --git a/src/de/katho/kBorrow/listener/NewLendingTableButton.java b/src/de/katho/kBorrow/listener/NewLendingTableButton.java index 139b81e..05ddb72 100644 --- a/src/de/katho/kBorrow/listener/NewLendingTableButton.java +++ b/src/de/katho/kBorrow/listener/NewLendingTableButton.java @@ -9,7 +9,7 @@ import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JTable; -import de.katho.kBorrow.gui.PanelNewLending; +import de.katho.kBorrow.gui.NewLendingPanel; import de.katho.kBorrow.models.FreeArticleModel; public class NewLendingTableButton extends TableButton { @@ -19,7 +19,7 @@ public class NewLendingTableButton extends TableButton { */ private static final long serialVersionUID = 7492272258718253745L; - public NewLendingTableButton(String pLabel, final JTable pTable, final PanelNewLending pPanel) throws IOException { + public NewLendingTableButton(String pLabel, final JTable pTable, final NewLendingPanel pPanel) throws IOException { super(pLabel); ImageIcon icon = new ImageIcon(ImageIO.read(new File("assets/icons/go-down.png"))); diff --git a/src/de/katho/kBorrow/models/ArticleModel.java b/src/de/katho/kBorrow/models/ArticleModel.java index 5b15041..978622c 100644 --- a/src/de/katho/kBorrow/models/ArticleModel.java +++ b/src/de/katho/kBorrow/models/ArticleModel.java @@ -20,17 +20,16 @@ public class ArticleModel extends AbstractTableModel { public ArticleModel(DbConnector pDbCon){ header = new String [] {"ID", "Artikelname", "Artikelbeschreibung", "", ""}; this.dbCon = pDbCon; - this.updateTable(); + this.updateModel(); } public String getColumnName(int index){ return header[index]; } - public void updateTable() { + public void updateModel() { this.data = this.dbCon.getArticleList(); - this.fireTableDataChanged(); - + this.fireTableDataChanged(); } public int getColumnCount() { @@ -46,17 +45,17 @@ public class ArticleModel extends AbstractTableModel { public Object getValueAt(int pRow, int pCol) { switch(pCol){ case 0: - return String.valueOf(this.data.get(pRow).getId()); + return String.valueOf(data.get(pRow).getId()); case 1: - return this.data.get(pRow).getName(); + return data.get(pRow).getName(); case 2: - return this.data.get(pRow).getDescription(); + return data.get(pRow).getDescription(); default: return null; - } + } } public boolean isCellEditable(int pRow, int pCol){ @@ -107,17 +106,7 @@ public class ArticleModel extends AbstractTableModel { } return -1; } - - /** - * Entfernt die gegebene Zeile aus der ArrayList - * - * @param pRow Zeile, die gelöscht wird. - */ - public void removeRow(int pRow){ - data.remove(pRow); - fireTableRowsDeleted(pRow, pRow); - } - + /** * Gibt das Article-Objekt der übergebenen Zeile zurück. * diff --git a/src/de/katho/kBorrow/models/FreeArticleModel.java b/src/de/katho/kBorrow/models/FreeArticleModel.java index 2e426fb..00b8a3d 100644 --- a/src/de/katho/kBorrow/models/FreeArticleModel.java +++ b/src/de/katho/kBorrow/models/FreeArticleModel.java @@ -14,10 +14,10 @@ public class FreeArticleModel extends ArticleModel { super(pDbCon); this.header = new String[] {"ID", "Artikelname", "Artikelbeschreibung", ""}; - updateTable(); + updateModel(); } - public void updateTable(){ + public void updateModel(){ data = dbCon.getFreeArticleList(); fireTableDataChanged(); } diff --git a/src/de/katho/kBorrow/models/UserListModel.java b/src/de/katho/kBorrow/models/UserListModel.java new file mode 100644 index 0000000..8641eff --- /dev/null +++ b/src/de/katho/kBorrow/models/UserListModel.java @@ -0,0 +1,78 @@ +package de.katho.kBorrow.models; + +import java.util.ArrayList; +import java.util.Vector; + +import javax.swing.DefaultComboBoxModel; + +import de.katho.kBorrow.data.KUser; +import de.katho.kBorrow.db.DbConnector; + +public class UserListModel extends DefaultComboBoxModel { + + /** + * + */ + private static final long serialVersionUID = -8653066929273274524L; + private DbConnector dbCon; + private Vector list; + private KUser selectedItem = null; + + public UserListModel(DbConnector pDbCon){ + super(); + dbCon = pDbCon; + updateModel(); + } + + + public void updateModel() { + list = new Vector(); + ArrayList data = dbCon.getUserList(); + + for(KUser elem : data){ + list.add(elem); + } + + setSelectedItem(list.firstElement()); + fireIntervalAdded(this, 0, list.size()-1); + } + + public void setSelectedItem(KUser object) { + if(selectedItem == null && object == null) return; + if(selectedItem != null && selectedItem.equals(object)) return; + if(object!= null && getIndexOf(object) == -1) return; + + selectedItem = object; + fireContentsChanged(this, -1, -1); + } + + public String getSelectedItem(){ + if(selectedItem != null ) return selectedItem.getName()+" "+selectedItem.getSurname(); + return ""; + } + + public String getElementAt(int index){ + if(index < 0 || index >= list.size()) return null; + + KUser obj = list.elementAt(index); + return obj.getName()+" "+obj.getSurname(); + } + + public int getSize(){ + return list.size(); + } + + public void addElement(KUser object) { + list.addElement(object); + int index = list.size() - 1; + fireIntervalAdded(this, index, index); + + if (list.size() == 1 && selectedItem == null) + setSelectedItem(object); + } + + public int getIndexOf(KUser obj){ + return list.indexOf(obj); + } +} + diff --git a/src/de/katho/kBorrow/models/UserModel.java b/src/de/katho/kBorrow/models/UserModel.java index ca66c00..33f03b6 100644 --- a/src/de/katho/kBorrow/models/UserModel.java +++ b/src/de/katho/kBorrow/models/UserModel.java @@ -18,8 +18,8 @@ public class UserModel extends AbstractTableModel { private ArrayList data = new ArrayList(); public UserModel(DbConnector pDbCon){ - this.dbCon = pDbCon; - this.updateTable(); + dbCon = pDbCon; + updateModel(); } @Override @@ -53,9 +53,9 @@ public class UserModel extends AbstractTableModel { return header[index]; } - public void updateTable(){ - this.data = this.dbCon.getUserList(); - this.fireTableDataChanged(); + public void updateModel(){ + data = dbCon.getUserList(); + fireTableDataChanged(); } // Die Funktion muss differenzierter werden @@ -97,12 +97,5 @@ public class UserModel extends AbstractTableModel { if(elem.getId() == pId) return elem; } return null; - } - - public void removeRow(int pRow){ - data.remove(pRow); - fireTableRowsDeleted(pRow, pRow); - } - - + } }