Angefangen, Controller für die einzelnen GUI-Formulare zu

implementieren, um Daten und Geschäftslogik strenger zu trennen.
This commit is contained in:
Servicepoint
2014-11-04 18:03:48 +01:00
parent 1e6ff4a897
commit a7acf646f9
16 changed files with 368 additions and 345 deletions

View File

@@ -4,5 +4,6 @@
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="lib" path="lib/mysql-connector-java-5.1.32-bin.jar"/>
<classpathentry kind="lib" path="lib/sqlite-jdbc-3.7.2.jar"/>
<classpathentry kind="lib" path="lib/jdatepicker-1.3.4.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@@ -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<KArticle> getFreeArticleList();
}

View File

@@ -59,5 +59,11 @@ public class SqlConnector implements DbConnector{
// TODO Auto-generated method stub
return 0;
}
@Override
public ArrayList<KArticle> getFreeArticleList() {
// TODO Auto-generated method stub
return null;
}
}

View File

@@ -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<KUser> getUserList(){
ArrayList<KUser> userArr = new ArrayList<KUser>();
@@ -260,6 +222,48 @@ public class SqliteConnector implements DbConnector {
}
}
public ArrayList<KArticle> getFreeArticleList() {
ArrayList<KArticle> artArr = new ArrayList<KArticle>();
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 {

View File

@@ -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

View File

@@ -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) {

View File

@@ -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);
}

View File

@@ -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;
}
}
}

View File

@@ -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();
}
});
}

View File

@@ -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));

View File

@@ -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));

View File

@@ -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();
}
});

View File

@@ -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));

View File

@@ -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<KArticle> data = new ArrayList<KArticle>();
protected String[] header;
protected DbConnector dbCon;
protected ArrayList<KArticle> data = new ArrayList<KArticle>();
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;
}
}

View File

@@ -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<KArticle> data = new ArrayList<KArticle>();
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();
}
}

View File

@@ -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<KUser> data = new ArrayList<KUser>();
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);
}
}