diff --git a/.classpath b/.classpath
index f074f2a..a6ea1d0 100644
--- a/.classpath
+++ b/.classpath
@@ -4,5 +4,6 @@
+
diff --git a/src/de/katho/kBorrow/db/DbConnector.java b/src/de/katho/kBorrow/db/DbConnector.java
index e258800..7856ea5 100644
--- a/src/de/katho/kBorrow/db/DbConnector.java
+++ b/src/de/katho/kBorrow/db/DbConnector.java
@@ -15,5 +15,6 @@ public interface DbConnector {
public int createArticle(String pName, String pDesc);
public boolean deleteArticle(int id);
public int editArticle(int pId, String pName, String pDesc);
+ public ArrayList getFreeArticleList();
}
diff --git a/src/de/katho/kBorrow/db/SqlConnector.java b/src/de/katho/kBorrow/db/SqlConnector.java
index 0c89cb5..5aab9b7 100644
--- a/src/de/katho/kBorrow/db/SqlConnector.java
+++ b/src/de/katho/kBorrow/db/SqlConnector.java
@@ -59,5 +59,11 @@ public class SqlConnector implements DbConnector{
// TODO Auto-generated method stub
return 0;
}
+
+ @Override
+ public ArrayList getFreeArticleList() {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
diff --git a/src/de/katho/kBorrow/db/SqliteConnector.java b/src/de/katho/kBorrow/db/SqliteConnector.java
index 8c4e53a..4f952d2 100644
--- a/src/de/katho/kBorrow/db/SqliteConnector.java
+++ b/src/de/katho/kBorrow/db/SqliteConnector.java
@@ -182,44 +182,6 @@ public class SqliteConnector implements DbConnector {
return text.toString();
}
- /**
- *
- * @return 0: Benutzer erfolgreich erzeugt
- * 1: SQL-Fehler beim Erzeugen
- * 2: Benutzername ist leer
- */
- public int createUser(String pName, String pSurname){
- if (pName.isEmpty() && pSurname.isEmpty()) return 2;
- try {
- Statement st = this.connection.createStatement();
- String query = "INSERT INTO user (name, surname) VALUES ('"+pName+"', '"+pSurname+"')";
-
- st.executeUpdate(query);
-
- return 0;
-
- } catch (SQLException e) {
- e.printStackTrace();
- return 1;
- }
- }
-
- public boolean deleteUser(int id){
- // @TODO: Ausleihen auf einen anderen User umschreiben!
- try {
- Statement st = this.connection.createStatement();
- String query = "DELETE FROM user WHERE id = '"+id+"'";
-
- st.executeUpdate(query);
-
- return true;
- }
- catch (SQLException e){
- e.printStackTrace();
- return false;
- }
- }
-
public ArrayList getUserList(){
ArrayList userArr = new ArrayList();
@@ -260,6 +222,48 @@ public class SqliteConnector implements DbConnector {
}
}
+ public ArrayList getFreeArticleList() {
+ ArrayList artArr = new ArrayList();
+
+ try {
+ Statement st = this.connection.createStatement();
+ String query = "SELECT article.id, name, description FROM article LEFT OUTER JOIN lending ON article.id = lending.article_id WHERE lending.start_date IS NULL OR (lending.start_date IS NOT NULL AND lending.end_date IS NOT NULL);";
+ ResultSet rs = st.executeQuery(query);
+
+ while (rs.next()){
+ artArr.add(new KArticle(rs.getInt("id"), rs.getString("name"), rs.getString("description")));
+ }
+
+ return artArr;
+ }
+ catch(SQLException ex){
+ ex.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
+ *
+ * @return 0: Benutzer erfolgreich erzeugt
+ * 1: SQL-Fehler beim Erzeugen
+ * 2: Benutzername ist leer
+ */
+ public int createUser(String pName, String pSurname){
+ if (pName.isEmpty() && pSurname.isEmpty()) return 2;
+ try {
+ Statement st = this.connection.createStatement();
+ String query = "INSERT INTO user (name, surname) VALUES ('"+pName+"', '"+pSurname+"')";
+
+ st.executeUpdate(query);
+
+ return 0;
+
+ } catch (SQLException e) {
+ e.printStackTrace();
+ return 1;
+ }
+ }
+
public int editUser(int pId, String pName, String pSurname) {
if(pName.isEmpty() && pSurname.isEmpty()) return 2;
try {
@@ -276,6 +280,22 @@ public class SqliteConnector implements DbConnector {
}
}
+ public boolean deleteUser(int id){
+ // @TODO: Ausleihen auf einen anderen User umschreiben!
+ try {
+ Statement st = this.connection.createStatement();
+ String query = "DELETE FROM user WHERE id = '"+id+"'";
+
+ st.executeUpdate(query);
+
+ return true;
+ }
+ catch (SQLException e){
+ e.printStackTrace();
+ return false;
+ }
+ }
+
public int createArticle(String pName, String pDesc) {
if (pName.isEmpty()) return 2;
try {
diff --git a/src/de/katho/kBorrow/gui/PanelArticle.java b/src/de/katho/kBorrow/gui/ArticlePanel.java
similarity index 66%
rename from src/de/katho/kBorrow/gui/PanelArticle.java
rename to src/de/katho/kBorrow/gui/ArticlePanel.java
index ee65c54..70d4503 100644
--- a/src/de/katho/kBorrow/gui/PanelArticle.java
+++ b/src/de/katho/kBorrow/gui/ArticlePanel.java
@@ -22,15 +22,17 @@ import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;
+import de.katho.kBorrow.controller.ArticleController;
import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.listener.ArticleDeleteTableButton;
import de.katho.kBorrow.listener.ArticleEditTableButton;
-import de.katho.kBorrow.models.ArticleTableModel;
+import de.katho.kBorrow.models.ArticleModel;
-public class PanelArticle extends JPanel implements ActionListener, KeyListener {
+public class ArticlePanel extends JPanel implements ActionListener, KeyListener {
private static final long serialVersionUID = -8511924597640457608L;
- private ArticleTableModel articleTableModel;
+ private ArticleModel articleModel;
+ private ArticleController articleController;
private JTextArea textAreaArticleDescription;
private JTextField textFieldArticleName;
private JButton btnArticleSave;
@@ -43,17 +45,19 @@ public class PanelArticle extends JPanel implements ActionListener, KeyListener
* Create the panel.
* @throws IOException
*/
- public PanelArticle(final DbConnector dbCon) throws IOException {
+ public ArticlePanel(final DbConnector dbCon) throws IOException {
super();
- this.setLayout(null);
+ this.setLayout(null);
+ articleModel = new ArticleModel(dbCon);
+ articleController = new ArticleController(dbCon, articleModel);
/*
* Tabelle und drumherum
*/
- this.articleTableModel = new ArticleTableModel(dbCon);
- JTable articleTable = new JTable(articleTableModel);
+
+ JTable articleTable = new JTable(articleModel);
articleTable.setRowHeight(30);
- ArticleDeleteTableButton articleDeleteTableButton = new ArticleDeleteTableButton("Löschen", articleTable);
+ ArticleDeleteTableButton articleDeleteTableButton = new ArticleDeleteTableButton("Löschen", articleTable, this, articleController);
ArticleEditTableButton articleEditTableButton = new ArticleEditTableButton("Bearbeiten", articleTable, this);
for (int i = 3; i <= 4; i++){
@@ -64,6 +68,9 @@ public class PanelArticle extends JPanel implements ActionListener, KeyListener
articleTable.getColumnModel().getColumn(i).setMaxWidth(30);
articleTable.getColumnModel().getColumn(i).setPreferredWidth(30);
}
+ articleTable.getColumnModel().getColumn(0).setMinWidth(30);
+ articleTable.getColumnModel().getColumn(0).setMaxWidth(30);
+ articleTable.getColumnModel().getColumn(0).setPreferredWidth(30);
articleTable.setFillsViewportHeight(true);
@@ -122,7 +129,7 @@ public class PanelArticle extends JPanel implements ActionListener, KeyListener
* PanelArticleEdit
*/
JPanel panelArticleEdit = new JPanel();
- panelArticleEdit.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Artikel hinzuf\u00FCgen / bearbeiten", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0)));
+ panelArticleEdit.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Artikel hinzufügen / bearbeiten", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0)));
panelArticleEdit.setBounds(0, 273, 589, 170);
panelArticleEdit.setLayout(null);
panelArticleEdit.add(lblName);
@@ -145,47 +152,23 @@ public class PanelArticle extends JPanel implements ActionListener, KeyListener
* Aktionen für den Button "Artikel speichern"
*/
if(e.getSource() == this.btnArticleSave){
- if(this.articleModeEdit){
- int re = this.articleTableModel.editArticle(this.articleEditId, this.textFieldArticleName.getText(), this.textAreaArticleDescription.getText());
-
- switch(re){
- case 0:
- this.lblArticleStatus.setText("Artikel-ID \""+this.articleEditId+"\" erfolgreich bearbeitet.");
- this.textFieldArticleName.setText("");
- this.textAreaArticleDescription.setText("");
- break;
-
- case 1:
- this.lblArticleStatus.setText("SQL-Fehler. Artikel konnte nicht bearbeitet werden.");
- this.textFieldArticleName.setText("");
- this.textAreaArticleDescription.setText("");
- break;
-
- case 2:
- this.lblArticleStatus.setText("Artikelname muss ausgefüllt sein.");
- break;
-
- }
-
- this.articleModeEdit = false;
- this.articleEditId = -1;
- }
-
- else {
- saveButtonPressed();
- }
+ saveButtonPressed();
}
/**
* Aktionen für den Button "Artikel abbrechen"
*/
if(e.getSource() == this.btnArticleCancel){
- this.articleModeEdit = false;
- this.textFieldArticleName.setText("");
- this.textAreaArticleDescription.setText("");
+ this.resetModeEditArticle();
}
}
+ public void resetModeEditArticle() {
+ this.articleModeEdit = false;
+ this.textFieldArticleName.setText("");
+ this.textAreaArticleDescription.setText("");
+ }
+
public void setModeEditArticle(int articleId, String articleName, String articleDescription) {
this.articleModeEdit = true;
this.articleEditId = articleId;
@@ -194,25 +177,53 @@ public class PanelArticle extends JPanel implements ActionListener, KeyListener
}
private void saveButtonPressed(){
- int re = this.articleTableModel.createArticle(this.textFieldArticleName.getText(), this.textAreaArticleDescription.getText());
-
- switch(re){
- case 0:
- this.lblArticleStatus.setText("Artikel \""+this.textFieldArticleName.getText()+"\" erfolgreich hinzugefügt.");
- this.textFieldArticleName.setText("");
- this.textAreaArticleDescription.setText("");
- break;
+ if(this.articleModeEdit){
+ int re = articleController.editArticle(this.articleEditId, this.textFieldArticleName.getText(), this.textAreaArticleDescription.getText());
- case 1:
- this.lblArticleStatus.setText("SQL-Fehler. Artikel konnte nicht erstellt werden.");
- this.textFieldArticleName.setText("");
- this.textAreaArticleDescription.setText("");
- break;
-
- case 2:
- this.lblArticleStatus.setText("Es muss ein Artikelname vergeben werden");
- break;
+ switch(re){
+ case 0:
+ this.lblArticleStatus.setText("Artikel-ID \""+this.articleEditId+"\" erfolgreich bearbeitet.");
+ this.textFieldArticleName.setText("");
+ this.textAreaArticleDescription.setText("");
+ break;
+
+ case 1:
+ this.lblArticleStatus.setText("SQL-Fehler. Artikel konnte nicht bearbeitet werden.");
+ this.textFieldArticleName.setText("");
+ this.textAreaArticleDescription.setText("");
+ break;
+
+ case 2:
+ this.lblArticleStatus.setText("Artikelname muss ausgefüllt sein.");
+ break;
+
+ }
+
+ this.articleModeEdit = false;
+ this.articleEditId = -1;
}
+
+ else {
+ int re = articleController.createArticle(this.textFieldArticleName.getText(), this.textAreaArticleDescription.getText());
+
+ switch(re){
+ case 0:
+ this.lblArticleStatus.setText("Artikel \""+this.textFieldArticleName.getText()+"\" erfolgreich hinzugefügt.");
+ this.textFieldArticleName.setText("");
+ this.textAreaArticleDescription.setText("");
+ break;
+
+ case 1:
+ this.lblArticleStatus.setText("SQL-Fehler. Artikel konnte nicht erstellt werden.");
+ this.textFieldArticleName.setText("");
+ this.textAreaArticleDescription.setText("");
+ break;
+
+ case 2:
+ this.lblArticleStatus.setText("Es muss ein Artikelname vergeben werden");
+ break;
+ }
+ }
}
@Override
diff --git a/src/de/katho/kBorrow/gui/MainWindow.java b/src/de/katho/kBorrow/gui/MainWindow.java
index 5a0577e..462c5fe 100644
--- a/src/de/katho/kBorrow/gui/MainWindow.java
+++ b/src/de/katho/kBorrow/gui/MainWindow.java
@@ -55,8 +55,8 @@ public class MainWindow {
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 PanelArticle(this.dbCon));
- this.tabbedPane.addTab("Benutzer verwalten", new PanelUser(this.dbCon));
+ this.tabbedPane.addTab("Artikel verwalten", new ArticlePanel(this.dbCon));
+ this.tabbedPane.addTab("Benutzer verwalten", new UserPanel(this.dbCon));
}
catch(ClassNotFoundException | InstantiationException | IllegalAccessException | IOException | UnsupportedLookAndFeelException | SQLException e) {
diff --git a/src/de/katho/kBorrow/gui/PanelNewLending.java b/src/de/katho/kBorrow/gui/PanelNewLending.java
index a2a00ff..9856371 100644
--- a/src/de/katho/kBorrow/gui/PanelNewLending.java
+++ b/src/de/katho/kBorrow/gui/PanelNewLending.java
@@ -4,7 +4,7 @@ import javax.swing.JPanel;
import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.listener.NewLendingTableButton;
-import de.katho.kBorrow.models.FreeArticleTableModel;
+import de.katho.kBorrow.models.FreeArticleModel;
import javax.swing.border.TitledBorder;
import javax.swing.JScrollPane;
@@ -13,13 +13,25 @@ import javax.swing.JTable;
import java.awt.BorderLayout;
import java.io.IOException;
+import javax.swing.JLabel;
+import javax.swing.JComboBox;
+import javax.swing.JSeparator;
+import javax.swing.JButton;
+import javax.swing.JTextField;
+import javax.swing.UIManager;
+
+import java.awt.Color;
+
public class PanelNewLending extends JPanel {
/**
*
*/
private static final long serialVersionUID = -7346953418572781322L;
- private FreeArticleTableModel freeArticleTableModel;
+ private FreeArticleModel freeArticleModel;
+ private JTextField tfName;
+ private JTextField tfSurname;
+ private JTextField tfStudentNumber;
/**
* Create the panel.
@@ -30,8 +42,8 @@ public class PanelNewLending extends JPanel {
this.setLayout(null);
// FreeArticleTable
- this.freeArticleTableModel = new FreeArticleTableModel(dbCon);
- JTable freeArticleTable = new JTable(freeArticleTableModel);
+ this.freeArticleModel = new FreeArticleModel(dbCon);
+ JTable freeArticleTable = new JTable(freeArticleModel);
freeArticleTable.setRowHeight(30);
NewLendingTableButton newLendingTableButton = new NewLendingTableButton("Artikel ausleihen", freeArticleTable, this);
@@ -40,6 +52,9 @@ public class PanelNewLending extends JPanel {
freeArticleTable.getColumnModel().getColumn(3).setMinWidth(30);
freeArticleTable.getColumnModel().getColumn(3).setMaxWidth(30);
freeArticleTable.getColumnModel().getColumn(3).setPreferredWidth(30);
+ freeArticleTable.getColumnModel().getColumn(0).setMinWidth(30);
+ freeArticleTable.getColumnModel().getColumn(0).setMaxWidth(30);
+ freeArticleTable.getColumnModel().getColumn(0).setPreferredWidth(30);
freeArticleTable.setFillsViewportHeight(true);
@@ -47,7 +62,7 @@ public class PanelNewLending extends JPanel {
// Panel: FreeArticleList
JPanel panelFreeArticleList = new JPanel();
- panelFreeArticleList.setBorder(new TitledBorder(null, "Vorhandene Artikel", TitledBorder.LEADING, TitledBorder.TOP, null, null));
+ panelFreeArticleList.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Verf\u00FCgbare Artikel", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0)));
panelFreeArticleList.setBounds(0, 0, 589, 253);
panelFreeArticleList.setLayout(new BorderLayout(0, 0));
panelFreeArticleList.add(new JScrollPane(freeArticleTable));
@@ -60,6 +75,74 @@ public class PanelNewLending extends JPanel {
this.add(panelFreeArticleList);
this.add(panelNewLending);
+ panelNewLending.setLayout(null);
+
+ JLabel lblArtikelname = new JLabel("Artikelname:");
+ lblArtikelname.setBounds(10, 20, 90, 20);
+ panelNewLending.add(lblArtikelname);
+
+ JLabel lblArticleName = new JLabel("");
+ lblArticleName.setBounds(110, 20, 100, 20);
+ panelNewLending.add(lblArticleName);
+
+ JLabel lblAusgeliehenAm = new JLabel("Ausgeliehen am:");
+ lblAusgeliehenAm.setBounds(10, 40, 90, 20);
+ panelNewLending.add(lblAusgeliehenAm);
+
+ JLabel lblStartDate = new JLabel("");
+ lblStartDate.setBounds(110, 40, 100, 20);
+ panelNewLending.add(lblStartDate);
+
+ JLabel lblNewLabel = new JLabel("Vor. Rückgabe:");
+ lblNewLabel.setBounds(10, 60, 90, 20);
+ panelNewLending.add(lblNewLabel);
+
+ JLabel lblBenutzer = new JLabel("Benutzer:");
+ lblBenutzer.setBounds(350, 20, 70, 20);
+ panelNewLending.add(lblBenutzer);
+
+ JComboBox comboBox = new JComboBox();
+ comboBox.setBounds(430, 20, 130, 20);
+ panelNewLending.add(comboBox);
+
+ JSeparator separator = new JSeparator();
+ separator.setBounds(10, 90, 569, 2);
+ panelNewLending.add(separator);
+
+ JButton btnAbbrechen = new JButton("Abbrechen");
+ btnAbbrechen.setBounds(471, 130, 89, 23);
+ panelNewLending.add(btnAbbrechen);
+
+ JButton btnSpeichern = new JButton("Speichern");
+ btnSpeichern.setBounds(471, 160, 89, 23);
+ panelNewLending.add(btnSpeichern);
+
+ JLabel lblNewLabel_1 = new JLabel("Name:");
+ lblNewLabel_1.setBounds(10, 100, 90, 20);
+ panelNewLending.add(lblNewLabel_1);
+
+ JLabel lblNewLabel_2 = new JLabel("Nachname:");
+ lblNewLabel_2.setBounds(10, 130, 90, 20);
+ panelNewLending.add(lblNewLabel_2);
+
+ JLabel lblNewLabel_3 = new JLabel("Matrikelnummer:");
+ lblNewLabel_3.setBounds(10, 160, 90, 20);
+ panelNewLending.add(lblNewLabel_3);
+
+ tfName = new JTextField();
+ tfName.setBounds(110, 100, 90, 20);
+ panelNewLending.add(tfName);
+ tfName.setColumns(10);
+
+ tfSurname = new JTextField();
+ tfSurname.setBounds(110, 130, 90, 20);
+ panelNewLending.add(tfSurname);
+ tfSurname.setColumns(10);
+
+ tfStudentNumber = new JTextField();
+ tfStudentNumber.setBounds(110, 160, 90, 20);
+ panelNewLending.add(tfStudentNumber);
+ tfStudentNumber.setColumns(10);
}
diff --git a/src/de/katho/kBorrow/gui/PanelUser.java b/src/de/katho/kBorrow/gui/UserPanel.java
similarity index 66%
rename from src/de/katho/kBorrow/gui/PanelUser.java
rename to src/de/katho/kBorrow/gui/UserPanel.java
index 0b9cc40..e417993 100644
--- a/src/de/katho/kBorrow/gui/PanelUser.java
+++ b/src/de/katho/kBorrow/gui/UserPanel.java
@@ -18,12 +18,13 @@ import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;
+import de.katho.kBorrow.controller.UserController;
import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.listener.UserDeleteTableButton;
import de.katho.kBorrow.listener.UserEditTableButton;
-import de.katho.kBorrow.models.UserTableModel;
+import de.katho.kBorrow.models.UserModel;
-public class PanelUser extends JPanel implements ActionListener, KeyListener {
+public class UserPanel extends JPanel implements ActionListener, KeyListener {
private static final long serialVersionUID = -319340262589243978L;
private JLabel lblUserStatus;
@@ -33,17 +34,19 @@ public class PanelUser extends JPanel implements ActionListener, KeyListener {
private JButton btnUserCancel;
private boolean userModeEdit;
private int userEditId;
- private UserTableModel userTableModel;
+ private UserModel userModel;
+ private UserController userController;
- public PanelUser(final DbConnector dbCon) throws IOException{
+ public UserPanel(final DbConnector dbCon) throws IOException{
super();
this.setLayout(null);
+ this.userModel = new UserModel(dbCon);
+ this.userController = new UserController(dbCon, this.userModel);
//Tabelle und drumherum
- this.userTableModel = new UserTableModel(dbCon);
- JTable userTable = new JTable(userTableModel);
+ JTable userTable = new JTable(userModel);
userTable.setRowHeight(30);
- UserDeleteTableButton userDeleteTableButton = new UserDeleteTableButton("Löschen", userTable);
+ UserDeleteTableButton userDeleteTableButton = new UserDeleteTableButton("Löschen", userTable, this, userController);
UserEditTableButton userEditTableButton = new UserEditTableButton("Bearbeiten", userTable, this);
for (int i = 3; i <= 4; i++){
@@ -54,6 +57,9 @@ public class PanelUser extends JPanel implements ActionListener, KeyListener {
userTable.getColumnModel().getColumn(i).setMaxWidth(30);
userTable.getColumnModel().getColumn(i).setPreferredWidth(30);
}
+ userTable.getColumnModel().getColumn(0).setMinWidth(30);
+ userTable.getColumnModel().getColumn(0).setMaxWidth(30);
+ userTable.getColumnModel().getColumn(0).setPreferredWidth(30);
userTable.setFillsViewportHeight(true);
@@ -121,47 +127,24 @@ public class PanelUser extends JPanel implements ActionListener, KeyListener {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == this.btnUserSave){
- if(this.userModeEdit){
- int re = this.userTableModel.editUser(this.userEditId, this.textFieldUserName.getText(), this.textFieldUserSurname.getText());
-
- switch(re){
- case 0:
- this.lblUserStatus.setText("Benutzer-ID \""+this.userEditId+"\" erfolgreich bearbeitet.");
- this.textFieldUserName.setText("");
- this.textFieldUserSurname.setText("");
- break;
-
- case 1:
- this.lblUserStatus.setText("SQL-Fehler. Benutzer konnte nicht bearbeitet werden.");
- this.textFieldUserName.setText("");
- this.textFieldUserSurname.setText("");
- break;
-
- case 2:
- this.lblUserStatus.setText("Entweder Vor- oder Nachname müssen ausgefüllt sein.");
- break;
-
- }
-
- this.userModeEdit = false;
- this.userEditId = -1;
- }
- else {
- saveButtonPressed();
- }
+ saveButtonPressed();
}
/**
* Aktionen für den Button "Benutzer abbrechen"
*/
if(e.getSource() == this.btnUserCancel){
- this.userModeEdit = false;
- this.textFieldUserName.setText("");
- this.textFieldUserSurname.setText("");
+ this.resetModeEditUser();
}
}
+ public void resetModeEditUser() {
+ this.userModeEdit = false;
+ this.textFieldUserName.setText("");
+ this.textFieldUserSurname.setText("");
+ }
+
public void setModeEditUser(int pId, String pName, String pSurname){
this.userModeEdit = true;
this.userEditId = pId;
@@ -170,24 +153,51 @@ public class PanelUser extends JPanel implements ActionListener, KeyListener {
}
private void saveButtonPressed(){
- int re = this.userTableModel.createUser(this.textFieldUserName.getText(), this.textFieldUserSurname.getText());
+ if(this.userModeEdit){
+ int re = this.userController.editUser(this.userEditId, this.textFieldUserName.getText(), this.textFieldUserSurname.getText());
+
+ switch(re){
+ case 0:
+ this.lblUserStatus.setText("Benutzer-ID \""+this.userEditId+"\" erfolgreich bearbeitet.");
+ this.textFieldUserName.setText("");
+ this.textFieldUserSurname.setText("");
+ break;
+
+ case 1:
+ this.lblUserStatus.setText("SQL-Fehler. Benutzer konnte nicht bearbeitet werden.");
+ this.textFieldUserName.setText("");
+ this.textFieldUserSurname.setText("");
+ break;
+
+ case 2:
+ this.lblUserStatus.setText("Entweder Vor- oder Nachname müssen ausgefüllt sein.");
+ break;
+
+ }
+
+ this.userModeEdit = false;
+ this.userEditId = -1;
+ }
+ else {
+ int re = userController.createUser(this.textFieldUserName.getText(), this.textFieldUserSurname.getText());
- switch (re){
- case 0:
- this.lblUserStatus.setText("Benutzer \""+this.textFieldUserName.getText()+" "+this.textFieldUserSurname.getText()+"\" erfolgreich hinzugefügt.");
- this.textFieldUserName.setText("");
- this.textFieldUserSurname.setText("");
- break;
-
- case 1:
- this.lblUserStatus.setText("SQL-Fehler. Benutzer konnte nicht erstellt werden.");
- this.textFieldUserName.setText("");
- this.textFieldUserSurname.setText("");
- break;
-
- case 2:
- this.lblUserStatus.setText("Entweder Vor- oder Nachname müssen ausgefüllt sein.");
- break;
+ switch (re){
+ case 0:
+ this.lblUserStatus.setText("Benutzer \""+this.textFieldUserName.getText()+" "+this.textFieldUserSurname.getText()+"\" erfolgreich hinzugefügt.");
+ this.textFieldUserName.setText("");
+ this.textFieldUserSurname.setText("");
+ break;
+
+ case 1:
+ this.lblUserStatus.setText("SQL-Fehler. Benutzer konnte nicht erstellt werden.");
+ this.textFieldUserName.setText("");
+ this.textFieldUserSurname.setText("");
+ break;
+
+ case 2:
+ this.lblUserStatus.setText("Entweder Vor- oder Nachname müssen ausgefüllt sein.");
+ break;
+ }
}
}
diff --git a/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java b/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java
index 22ee89e..54d47bf 100644
--- a/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java
+++ b/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java
@@ -9,7 +9,9 @@ import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JTable;
-import de.katho.kBorrow.models.ArticleTableModel;
+import de.katho.kBorrow.controller.ArticleController;
+import de.katho.kBorrow.gui.ArticlePanel;
+import de.katho.kBorrow.models.ArticleModel;
public class ArticleDeleteTableButton extends TableButton {
@@ -18,7 +20,7 @@ public class ArticleDeleteTableButton extends TableButton {
*/
private static final long serialVersionUID = 7701712368979056068L;
- public ArticleDeleteTableButton(String pLabel, final JTable pTable) throws IOException {
+ public ArticleDeleteTableButton(String pLabel, final JTable pTable, final ArticlePanel pPanel, final ArticleController pController) throws IOException {
super(pLabel);
ImageIcon icon = new ImageIcon(ImageIO.read(new File("assets/icons/edit-delete.png")));
@@ -29,12 +31,13 @@ public class ArticleDeleteTableButton extends TableButton {
public void actionPerformed(ActionEvent e){
fireEditingStopped();
- ArticleTableModel model = (ArticleTableModel) pTable.getModel();
+ ArticleModel model = (ArticleModel) pTable.getModel();
int row = pTable.getSelectedRow();
int id = model.getArticleId(row);
- model.deleteArticle(id);
+ pController.deleteArticle(id);
+ pPanel.resetModeEditArticle();
}
});
}
diff --git a/src/de/katho/kBorrow/listener/ArticleEditTableButton.java b/src/de/katho/kBorrow/listener/ArticleEditTableButton.java
index 954fc11..0fb6433 100644
--- a/src/de/katho/kBorrow/listener/ArticleEditTableButton.java
+++ b/src/de/katho/kBorrow/listener/ArticleEditTableButton.java
@@ -9,8 +9,8 @@ import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JTable;
-import de.katho.kBorrow.gui.PanelArticle;
-import de.katho.kBorrow.models.ArticleTableModel;
+import de.katho.kBorrow.gui.ArticlePanel;
+import de.katho.kBorrow.models.ArticleModel;
public class ArticleEditTableButton extends TableButton {
@@ -19,7 +19,7 @@ public class ArticleEditTableButton extends TableButton {
*/
private static final long serialVersionUID = -5902626427691636902L;
- public ArticleEditTableButton(String pLabel, final JTable pTable, final PanelArticle articleTab) throws IOException {
+ public ArticleEditTableButton(String pLabel, final JTable pTable, final ArticlePanel articleTab) throws IOException {
super(pLabel);
ImageIcon icon = new ImageIcon(ImageIO.read(new File("assets/icons/accessories-text-editor.png")));
@@ -30,7 +30,7 @@ public class ArticleEditTableButton extends TableButton {
public void actionPerformed(ActionEvent e){
fireEditingStopped();
- ArticleTableModel model = (ArticleTableModel) pTable.getModel();
+ ArticleModel model = (ArticleModel) pTable.getModel();
int row = pTable.getSelectedRow();
articleTab.setModeEditArticle(model.getArticleId(row), model.getArticleName(row), model.getArticleDescription(row));
diff --git a/src/de/katho/kBorrow/listener/NewLendingTableButton.java b/src/de/katho/kBorrow/listener/NewLendingTableButton.java
index dab5736..139b81e 100644
--- a/src/de/katho/kBorrow/listener/NewLendingTableButton.java
+++ b/src/de/katho/kBorrow/listener/NewLendingTableButton.java
@@ -10,7 +10,7 @@ import javax.swing.ImageIcon;
import javax.swing.JTable;
import de.katho.kBorrow.gui.PanelNewLending;
-import de.katho.kBorrow.models.FreeArticleTableModel;
+import de.katho.kBorrow.models.FreeArticleModel;
public class NewLendingTableButton extends TableButton {
@@ -30,7 +30,7 @@ public class NewLendingTableButton extends TableButton {
public void actionPerformed(ActionEvent e){
fireEditingStopped();
- FreeArticleTableModel model = (FreeArticleTableModel) pTable.getModel();
+ FreeArticleModel model = (FreeArticleModel) pTable.getModel();
int row = pTable.getSelectedRow();
pPanel.setModeNewLending(model.getArticleId(row), model.getArticleName(row), model.getArticleDescription(row));
diff --git a/src/de/katho/kBorrow/listener/UserDeleteTableButton.java b/src/de/katho/kBorrow/listener/UserDeleteTableButton.java
index 0b9ab67..b897a2e 100644
--- a/src/de/katho/kBorrow/listener/UserDeleteTableButton.java
+++ b/src/de/katho/kBorrow/listener/UserDeleteTableButton.java
@@ -9,13 +9,15 @@ import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JTable;
-import de.katho.kBorrow.models.UserTableModel;
+import de.katho.kBorrow.controller.UserController;
+import de.katho.kBorrow.gui.UserPanel;
+import de.katho.kBorrow.models.UserModel;
public class UserDeleteTableButton extends TableButton {
private static final long serialVersionUID = -886584066497429394L;
- public UserDeleteTableButton(String pLabel, final JTable pTable) throws IOException{
+ public UserDeleteTableButton(String pLabel, final JTable pTable, final UserPanel pPanel, final UserController pController ) throws IOException{
super(pLabel);
ImageIcon icon = new ImageIcon(ImageIO.read(new File("assets/icons/edit-delete.png")));
@@ -26,12 +28,13 @@ public class UserDeleteTableButton extends TableButton {
public void actionPerformed(ActionEvent e){
fireEditingStopped();
- UserTableModel model = (UserTableModel) pTable.getModel();
+ UserModel model = (UserModel) pTable.getModel();
int row = pTable.getSelectedRow();
int id = model.getUserId(row);
- model.deleteUser(id);
+ pController.deleteUser(id);
+ pPanel.resetModeEditUser();
}
});
diff --git a/src/de/katho/kBorrow/listener/UserEditTableButton.java b/src/de/katho/kBorrow/listener/UserEditTableButton.java
index fd2f90b..542a2c9 100644
--- a/src/de/katho/kBorrow/listener/UserEditTableButton.java
+++ b/src/de/katho/kBorrow/listener/UserEditTableButton.java
@@ -9,8 +9,8 @@ import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JTable;
-import de.katho.kBorrow.gui.PanelUser;
-import de.katho.kBorrow.models.UserTableModel;
+import de.katho.kBorrow.gui.UserPanel;
+import de.katho.kBorrow.models.UserModel;
public class UserEditTableButton extends TableButton {
@@ -19,7 +19,7 @@ public class UserEditTableButton extends TableButton {
*/
private static final long serialVersionUID = -886584066497429394L;
- public UserEditTableButton(String pLabel, final JTable pTable, final PanelUser pPanel) throws IOException{
+ public UserEditTableButton(String pLabel, final JTable pTable, final UserPanel pPanel) throws IOException{
super(pLabel);
ImageIcon icon = new ImageIcon(ImageIO.read(new File("assets/icons/accessories-text-editor.png")));
@@ -30,7 +30,7 @@ public class UserEditTableButton extends TableButton {
public void actionPerformed(ActionEvent e){
fireEditingStopped();
- UserTableModel model = (UserTableModel) pTable.getModel();
+ UserModel model = (UserModel) pTable.getModel();
int row = pTable.getSelectedRow();
pPanel.setModeEditUser(model.getUserId(row), model.getUserName(row), model.getUserSurname(row));
diff --git a/src/de/katho/kBorrow/models/ArticleTableModel.java b/src/de/katho/kBorrow/models/ArticleModel.java
similarity index 50%
rename from src/de/katho/kBorrow/models/ArticleTableModel.java
rename to src/de/katho/kBorrow/models/ArticleModel.java
index 17bbbcb..5b15041 100644
--- a/src/de/katho/kBorrow/models/ArticleTableModel.java
+++ b/src/de/katho/kBorrow/models/ArticleModel.java
@@ -7,17 +7,18 @@ import javax.swing.table.AbstractTableModel;
import de.katho.kBorrow.data.KArticle;
import de.katho.kBorrow.db.DbConnector;
-public class ArticleTableModel extends AbstractTableModel {
+public class ArticleModel extends AbstractTableModel {
/**
*
*/
private static final long serialVersionUID = -1860949772989116745L;
- private DbConnector dbCon;
- private String[] header = {"ID", "Artikelname", "Artikelbeschreibung", "", ""};
- private ArrayList data = new ArrayList();
+ protected String[] header;
+ protected DbConnector dbCon;
+ protected ArrayList data = new ArrayList();
- public ArticleTableModel(DbConnector pDbCon){
+ public ArticleModel(DbConnector pDbCon){
+ header = new String [] {"ID", "Artikelname", "Artikelbeschreibung", "", ""};
this.dbCon = pDbCon;
this.updateTable();
}
@@ -26,20 +27,19 @@ public class ArticleTableModel extends AbstractTableModel {
return header[index];
}
- private void updateTable() {
+ public void updateTable() {
this.data = this.dbCon.getArticleList();
this.fireTableDataChanged();
}
- @Override
public int getColumnCount() {
- return this.header.length;
+ return header.length;
}
public int getRowCount() {
- return this.data.size();
+ return data.size();
}
@@ -94,75 +94,51 @@ public class ArticleTableModel extends AbstractTableModel {
return this.data.get(pRow).getDescription();
}
- /**
- * Löscht den Artikel mit der gegebenen ID in der Datenbank und aktualisiert die Tabelle.
- *
- * @param id ID des Artikels, der gelöscht werden soll.
- * @return true, wenn der Artikel erfolgreich gelöscht wurde. false, wenn ein Fehler aufgetreten ist.
- */
- public boolean deleteArticle(int id) {
- if(this.dbCon.deleteArticle(id)){
- int row = this.getRowFromId(id);
- this.data.remove(row);
- this.fireTableRowsDeleted(row, row);
-
- return true;
- }
-
- return false;
- }
+
/**
* Gibt die entsprechende Zeile in der Tabelle für ein Objekt mit der gegebenen ID zurück.
*
* @param id ID, für die die Tabellenzeile herausgesucht werden soll
* @return Zeile in der Tabelle. -1, wenn die ID nicht vorhanden ist.
*/
- private int getRowFromId(int id) {
+ public int getRowFromId(int id) {
for (KArticle elem : this.data){
if(elem.getId() == id) return data.indexOf(elem);
}
return -1;
}
-
+
/**
- * Erzeugt einen neuen Artikel in der Datenbank und aktualisiert die Tabelle
+ * Entfernt die gegebene Zeile aus der ArrayList
*
- * @param pName Name des Artikels
- * @param pDesc Beschreibung des Artikels
- * @return 0: Artikel erfolgreich erzeugt
- * 1: SQL-Fehler beim Erzeugen
- * 2: Feld "Name" leer
+ * @param pRow Zeile, die gelöscht wird.
*/
- public int createArticle(String pName, String pDesc) {
- int status = this.dbCon.createArticle(pName, pDesc);
-
- updateTable();
-
- return status;
+ public void removeRow(int pRow){
+ data.remove(pRow);
+ fireTableRowsDeleted(pRow, pRow);
}
-
+
/**
- * Ändert einen Artikel in der Datenbank und aktualisiert die Tabelle
+ * Gibt das Article-Objekt der übergebenen Zeile zurück.
*
- * @param pId Id des Artikels, der geändert werden soll
- * @param pName (Neuer) Name des Artikels
- * @param pDesc (Neue) Beschreibung des Artikels
- * @return 0: Artikel erfolgreich geändert
- * 1: SQL-Fehler beim Erzeugen
- * 2: Artikelname ist leer
+ * @param pRow Zeile, deren Article-Objekt zurückgegeben werden soll.
+ * @return KArticle-Objekt
*/
- public int editArticle(int pId, String pName, String pDesc) {
- int status = this.dbCon.editArticle(pId, pName, pDesc);
-
- if(status == 0){
- int row = this.getRowFromId(pId);
-
- this.data.get(row).setName(pName);
- this.data.get(row).setDescription(pDesc);
- this.fireTableRowsUpdated(row, row);
+ public KArticle getArticleByRow(int pRow){
+ return this.data.get(pRow);
+ }
+
+ /**
+ * Gibt das Article-Objekt mit der entsprechendne ID zurück.
+ *
+ * @param pId Id, deren Objekt zurückgegeben werden soll.
+ * @return KArticle-Objekt
+ */
+ public KArticle getArticleById(int pId){
+ for(KArticle elem : data){
+ if(elem.getId() == pId) return elem;
}
-
- return status;
+ return null;
}
}
diff --git a/src/de/katho/kBorrow/models/FreeArticleTableModel.java b/src/de/katho/kBorrow/models/FreeArticleTableModel.java
deleted file mode 100644
index 444169a..0000000
--- a/src/de/katho/kBorrow/models/FreeArticleTableModel.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package de.katho.kBorrow.models;
-
-import javax.swing.table.AbstractTableModel;
-import java.util.ArrayList;
-
-import de.katho.kBorrow.db.DbConnector;
-import de.katho.kBorrow.data.KArticle;
-
-public class FreeArticleTableModel extends AbstractTableModel {
-
- /**
- *
- */
- private static final long serialVersionUID = -7318589937150373541L;
- private DbConnector dbCon;
- String[] header = {"ID", "Artikelname", "Artikelbeschreibung", ""};
- private ArrayList data = new ArrayList();
-
- public FreeArticleTableModel(DbConnector pDbCon) {
- this.dbCon = pDbCon;
- this.updateTable();
- }
-
- public String getColumnName(int pIndex){
- return header[pIndex];
- }
-
- public int getColumnCount() {
- return header.length;
- }
-
- public int getRowCount() {
- return data.size();
- }
-
- public Object getValueAt(int pRow, int pCol) {
- switch(pCol){
- case 0:
- return String.valueOf(data.get(pRow).getId());
-
- case 1:
- return data.get(pRow).getName();
-
- case 2:
- return data.get(pRow).getDescription();
-
- default:
- return null;
- }
- }
-
- public boolean isCellEditable(int row, int col){
- if (col > 2) return true;
- return false;
- }
-
- // TODO: Implement!
- private void updateTable(){
-
- }
-
- public int getArticleId(int pRow){
- return data.get(pRow).getId();
- }
-
- public String getArticleName(int pRow){
- return data.get(pRow).getName();
- }
-
- public String getArticleDescription(int pRow){
- return data.get(pRow).getDescription();
- }
-
-}
diff --git a/src/de/katho/kBorrow/models/UserTableModel.java b/src/de/katho/kBorrow/models/UserModel.java
similarity index 64%
rename from src/de/katho/kBorrow/models/UserTableModel.java
rename to src/de/katho/kBorrow/models/UserModel.java
index e761803..ca66c00 100644
--- a/src/de/katho/kBorrow/models/UserTableModel.java
+++ b/src/de/katho/kBorrow/models/UserModel.java
@@ -7,7 +7,7 @@ import javax.swing.table.AbstractTableModel;
import de.katho.kBorrow.data.KUser;
import de.katho.kBorrow.db.DbConnector;
-public class UserTableModel extends AbstractTableModel {
+public class UserModel extends AbstractTableModel {
/**
*
@@ -17,7 +17,7 @@ public class UserTableModel extends AbstractTableModel {
private String[] header = {"ID", "Vorname", "Nachname", "", ""};
private ArrayList data = new ArrayList();
- public UserTableModel(DbConnector pDbCon){
+ public UserModel(DbConnector pDbCon){
this.dbCon = pDbCon;
this.updateTable();
}
@@ -76,50 +76,33 @@ public class UserTableModel extends AbstractTableModel {
return this.data.get(row).getSurname();
}
- public boolean deleteUser(int id){
- if(dbCon.deleteUser(id)){
- int row = this.getRowFromId(id);
- this.data.remove(row);
- this.fireTableRowsDeleted(row, row);
-
- return true;
- }
- return false;
- }
-
- public int createUser(String pName, String pSurname){
- int status = this.dbCon.createUser(pName, pSurname);
-
- updateTable();
-
- return status;
- }
-
- public int editUser(int pId, String pName, String pSurname) {
- int status = this.dbCon.editUser(pId, pName, pSurname);
-
- if(status == 0){
- int row = this.getRowFromId(pId);
-
- this.data.get(row).setName(pName);
- this.data.get(row).setSurname(pSurname);
- this.fireTableRowsUpdated(row, row);
- }
-
- return status;
- }
-
/**
*
* @param pId
* @return Returns -1 if there is no row for the given id.
*/
- private int getRowFromId(int pId){
+ public int getRowFromId(int pId){
for(KUser elem : this.data){
if(elem.getId() == pId) return data.indexOf(elem);
}
return -1;
}
+
+ public KUser getUserByRow(int pRow){
+ return this.data.get(pRow);
+ }
+
+ public KUser getUserById(int pId){
+ for(KUser elem : this.data){
+ if(elem.getId() == pId) return elem;
+ }
+ return null;
+ }
+
+ public void removeRow(int pRow){
+ data.remove(pRow);
+ fireTableRowsDeleted(pRow, pRow);
+ }
}