11 Commits

Author SHA1 Message Date
Servicepoint
428806c5b9 Wenn ein Benutzer gelöscht wird, wird nun vorher geprüft, ob dieser
Benutzer mit Ausleihen verknüpft ist. Ist dies der Fall, kann über einen
Auswahldialog ein Benutzer ausgewählt werden, auf den die Ausleihen
übertragen werden sollen. closes issue #2
2014-12-09 16:19:29 +01:00
Servicepoint
6dae70df05 Arbeite an issue #2: Wenn ein Benutzer gelöscht wird, soll vorher
geprüft werden, ob es eine Ausleihe gibt, in der dieser Benutzer
vorhandne ist. Wenn das der Fall ist, soll in einem JDialog ein User
ausgewählt werden können, auf den alle betroffenen Ausleihen
umgeschrieben werden. Anschließend soll noch einmal geprüft werden, ob
der zu löschende User in Benutzung ist (Rekursion).
2014-12-03 17:39:38 +01:00
Servicepoint
0d02edec31 lblArticleNamen in ArticleInspectFrame vergrößert. 2014-12-03 17:00:49 +01:00
Servicepoint
ff76f0557f Einen Fehler korrigiert, der verhindert, dass das ArticleTableModel
aktualisiert wird, wenn neue Ausleihen erzeugt oder bestehende Ausleihen
zurückgegeben werden. fixed #5.
2014-12-03 16:49:55 +01:00
Servicepoint
8c0e5481fe Ich arbeite an einer Funktion, die beim Löschen eines Artikels den
aktuellen isFree-Status berücksichtigt. Testing.
2014-12-03 16:35:17 +01:00
Servicepoint
a8014deaa5 Merge remote-tracking branch 'origin/InspectArticle' 2014-12-03 16:03:59 +01:00
Servicepoint
c32b6c7ab9 issue #7: Kleinere Designänderungen am Inspect-Frame und dem
Datenmodell.
2014-12-03 16:03:35 +01:00
Servicepoint
4f71db4fa0 ArticleInspect-Fenster ist grundlegend implementiert und zeigt alle
Ausleihen zu einem Artikel an.
2014-12-02 17:24:39 +01:00
Servicepoint
051c6df2a4 Eine Zeile aus Util.java entfernt... 2014-12-02 15:40:44 +01:00
Servicepoint
8b652dceef Merge branch 'Deploy' into InspectArticle 2014-12-02 15:22:46 +01:00
Servicepoint
32c8042b75 Erste Ansätze, ein Artikel-Inspect-Frame zu implementieren. 2014-11-26 17:56:25 +01:00
22 changed files with 577 additions and 53 deletions

View File

@@ -3,9 +3,6 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import de.katho.kBorrow.db.DbConnector;
public class Util { public class Util {
public static String getCurrentDate(){ public static String getCurrentDate(){
DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy"); DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");

View File

@@ -60,20 +60,23 @@ public class ArticleController {
* L<>scht den Artikel mit der gegebenen ID in der Datenbank und aktualisiert die Tabelle. * L<>scht den Artikel mit der gegebenen ID in der Datenbank und aktualisiert die Tabelle.
* *
* @param pRow Row des Artikels, der gel<65>scht werden soll. * @param pRow Row des Artikels, der gel<65>scht werden soll.
* @return true, wenn der Artikel erfolgreich gel<65>scht wurde. false, wenn ein Fehler aufgetreten ist. * @return 0: Artikel konnte erfolgreich gel<65>scht werden
* 1: Artikel konnte nicht gel<65>scht werden, unbekannter Fehler (SQL-Fehler)
* 2: Artikel konnte nicht gel<65>scht werden, weil er im Moment verliehen ist.
*/ */
public boolean deleteArticle(int pRow) { public int deleteArticle(int pRow) {
int id = articleTableModel.getArticleByRow(pRow).getId();
if(this.dbCon.deleteArticle(id)){ if(!articleTableModel.getArticleByRow(pRow).getIsFree()) return 2;
int id = articleTableModel.getArticleByRow(pRow).getId();
int returnCode = dbCon.deleteArticle(id);
if(returnCode == 0){
articleTableModel.updateModel(); articleTableModel.updateModel();
freeArticleTableModel.updateModel(); freeArticleTableModel.updateModel();
return true;
} }
return false; return returnCode;
} }
} }

View File

@@ -5,6 +5,7 @@ import java.util.HashMap;
import de.katho.kBorrow.Util; import de.katho.kBorrow.Util;
import de.katho.kBorrow.data.KLending; import de.katho.kBorrow.data.KLending;
import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.models.ArticleTableModel;
import de.katho.kBorrow.models.FreeArticleTableModel; import de.katho.kBorrow.models.FreeArticleTableModel;
import de.katho.kBorrow.models.LendingTableModel; import de.katho.kBorrow.models.LendingTableModel;
@@ -12,12 +13,14 @@ public class ManageLendingsController {
private DbConnector dbCon; private DbConnector dbCon;
private FreeArticleTableModel freeArticleTableModel; private FreeArticleTableModel freeArticleTableModel;
private ArticleTableModel articleTableModel;
private LendingTableModel lendingTableModel; private LendingTableModel lendingTableModel;
public ManageLendingsController(DbConnector pDbCon, HashMap<String, Object> pModels){ public ManageLendingsController(DbConnector pDbCon, HashMap<String, Object> pModels){
dbCon = pDbCon; dbCon = pDbCon;
freeArticleTableModel = (FreeArticleTableModel)pModels.get("freearticletablemodel"); freeArticleTableModel = (FreeArticleTableModel)pModels.get("freearticletablemodel");
articleTableModel = (ArticleTableModel)pModels.get("articletablemodel");
lendingTableModel = (LendingTableModel)pModels.get("lendingtablemodel"); lendingTableModel = (LendingTableModel)pModels.get("lendingtablemodel");
} }
@@ -30,6 +33,7 @@ public class ManageLendingsController {
dbCon.returnLending(lendingId, artId, Util.getCurrentDate()); dbCon.returnLending(lendingId, artId, Util.getCurrentDate());
freeArticleTableModel.updateModel(); freeArticleTableModel.updateModel();
articleTableModel.updateModel();
lendingTableModel.updateModel(); lendingTableModel.updateModel();
} }

View File

@@ -8,6 +8,7 @@ import java.util.HashMap;
import de.katho.kBorrow.data.KLender; import de.katho.kBorrow.data.KLender;
import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.models.ArticleTableModel;
import de.katho.kBorrow.models.FreeArticleTableModel; import de.katho.kBorrow.models.FreeArticleTableModel;
import de.katho.kBorrow.models.LenderModel; import de.katho.kBorrow.models.LenderModel;
import de.katho.kBorrow.models.LendingTableModel; import de.katho.kBorrow.models.LendingTableModel;
@@ -19,12 +20,14 @@ public class NewLendingController {
private LenderModel lenderModel; private LenderModel lenderModel;
private FreeArticleTableModel freeArticleModel; private FreeArticleTableModel freeArticleModel;
private LendingTableModel lendingTableModel; private LendingTableModel lendingTableModel;
private ArticleTableModel articleTableModel;
public NewLendingController(DbConnector pDbCon, HashMap<String, Object> pModels){ public NewLendingController(DbConnector pDbCon, HashMap<String, Object> pModels){
dbCon = pDbCon; dbCon = pDbCon;
userListModel = (UserListModel)pModels.get("userlistmodel"); userListModel = (UserListModel)pModels.get("userlistmodel");
lenderModel = (LenderModel)pModels.get("lendermodel"); lenderModel = (LenderModel)pModels.get("lendermodel");
freeArticleModel = (FreeArticleTableModel)pModels.get("freearticletablemodel"); freeArticleModel = (FreeArticleTableModel)pModels.get("freearticletablemodel");
articleTableModel = (ArticleTableModel)pModels.get("articletablemodel");
lendingTableModel = (LendingTableModel)pModels.get("lendingtablemodel"); lendingTableModel = (LendingTableModel)pModels.get("lendingtablemodel");
} }
@@ -63,6 +66,7 @@ public class NewLendingController {
if(result == 0){ if(result == 0){
freeArticleModel.updateModel(); freeArticleModel.updateModel();
articleTableModel.updateModel();
lendingTableModel.updateModel(); lendingTableModel.updateModel();
return result; return result;
} }

View File

@@ -0,0 +1,16 @@
package de.katho.kBorrow.controller;
import de.katho.kBorrow.db.DbConnector;
public class RewriteToNewUserController {
private DbConnector dbCon;
public RewriteToNewUserController(DbConnector pDbCon){
dbCon = pDbCon;
}
public boolean rewriteToNewUser(int pOldId, int pNewId){
return dbCon.rewriteToNewUser(pOldId, pNewId);
}
}

View File

@@ -1,8 +1,12 @@
package de.katho.kBorrow.controller; package de.katho.kBorrow.controller;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import de.katho.kBorrow.data.KLending;
import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.gui.RewriteToNewUserDialog;
import de.katho.kBorrow.models.LendingTableModel;
import de.katho.kBorrow.models.UserTableModel; import de.katho.kBorrow.models.UserTableModel;
import de.katho.kBorrow.models.UserListModel; import de.katho.kBorrow.models.UserListModel;
@@ -11,11 +15,13 @@ public class UserController {
private DbConnector dbCon; private DbConnector dbCon;
private UserTableModel userTableModel; private UserTableModel userTableModel;
private UserListModel userListModel; private UserListModel userListModel;
private LendingTableModel lendingTableModel;
public UserController(DbConnector pDbCon, HashMap<String, Object> pModels) { public UserController(DbConnector pDbCon, HashMap<String, Object> pModels) {
dbCon = pDbCon; dbCon = pDbCon;
userTableModel = (UserTableModel)pModels.get("usertablemodel"); userTableModel = (UserTableModel)pModels.get("usertablemodel");
userListModel = (UserListModel)pModels.get("userlistmodel"); userListModel = (UserListModel)pModels.get("userlistmodel");
lendingTableModel = (LendingTableModel)pModels.get("lendingtablemodel");
} }
public int createUser(String pName, String pSurname){ public int createUser(String pName, String pSurname){
@@ -38,16 +44,39 @@ public class UserController {
return status; return status;
} }
public boolean deleteUser(int pRow){ public boolean deleteUser(int pRow) {
int id = userTableModel.getUserByRow(pRow).getId(); int id = userTableModel.getUserByRow(pRow).getId();
if(dbCon.deleteUser(id)){ boolean isOccupied = false;
userTableModel.updateModel(); ArrayList<KLending> lendingList = lendingTableModel.getLendingList();
userListModel.updateModel(); for(KLending elem : lendingList){
if(elem.getUserId() == id){
return true; isOccupied = true;
break;
}
}
if(isOccupied){
RewriteToNewUserDialog dialog = new RewriteToNewUserDialog(id, dbCon);
if(dialog.getResult() == 0){
lendingTableModel.updateModel();
userTableModel.updateModel();
userListModel.updateModel();
return deleteUser(pRow);
}
else return false;
}
else {
if(dbCon.deleteUser(id)){
userTableModel.updateModel();
userListModel.updateModel();
lendingTableModel.updateModel();
return true;
}
return false;
} }
return false;
} }
} }

View File

@@ -4,11 +4,13 @@ public class KArticle {
private int id; private int id;
private String name; private String name;
private String description; private String description;
private boolean isFree;
public KArticle(int pId, String pName, String pDesc) { public KArticle(int pId, String pName, boolean pFree, String pDesc) {
this.id = pId; this.id = pId;
this.name = pName; this.name = pName;
this.description = pDesc; this.description = pDesc;
isFree = pFree;
} }
public int getId() { public int getId() {
@@ -23,6 +25,10 @@ public class KArticle {
return this.description; return this.description;
} }
public boolean getIsFree(){
return isFree;
}
public void setName(String pName){ public void setName(String pName){
this.name = pName; this.name = pName;
} }
@@ -30,5 +36,9 @@ public class KArticle {
public void setDescription(String pDesc){ public void setDescription(String pDesc){
this.description = pDesc; this.description = pDesc;
} }
public void setIsFree(boolean pFree){
isFree = pFree;
}
} }

View File

@@ -15,7 +15,7 @@ public interface DbConnector {
public int editUser(int pId, String pName, String pSurname); public int editUser(int pId, String pName, String pSurname);
public ArrayList<KArticle> getArticleList(); public ArrayList<KArticle> getArticleList();
public int createArticle(String pName, String pDesc); public int createArticle(String pName, String pDesc);
public boolean deleteArticle(int id); public int deleteArticle(int id);
public int editArticle(int pId, String pName, String pDesc); public int editArticle(int pId, String pName, String pDesc);
public ArrayList<KArticle> getFreeArticleList(); public ArrayList<KArticle> getFreeArticleList();
public ArrayList<KLender> getLenderList(); public ArrayList<KLender> getLenderList();
@@ -23,4 +23,7 @@ public interface DbConnector {
public int createNewLender(String pLName, String pLSurname, String pLSN); public int createNewLender(String pLName, String pLSurname, String pLSN);
public ArrayList<KLending> getActiveLendingList(); public ArrayList<KLending> getActiveLendingList();
public int returnLending(int lendingId, int artId, String string); public int returnLending(int lendingId, int artId, String string);
public ArrayList<KLending> getLendingListForArticle(int pArtId);
public ArrayList<KUser> getRewriteUserList(int id);
public boolean rewriteToNewUser(int pOldId, int pNewId);
} }

View File

@@ -51,9 +51,9 @@ public class SqlConnector implements DbConnector{
} }
@Override @Override
public boolean deleteArticle(int id) { public int deleteArticle(int id) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return false; return 0;
} }
@Override @Override
@@ -98,5 +98,23 @@ public class SqlConnector implements DbConnector{
// TODO Auto-generated method stub // TODO Auto-generated method stub
return 0; return 0;
} }
@Override
public ArrayList<KLending> getLendingListForArticle(int pArtId) {
// TODO Auto-generated method stub
return null;
}
@Override
public ArrayList<KUser> getRewriteUserList(int id) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean rewriteToNewUser(int pOldId, int pNewId) {
// TODO Auto-generated method stub
return false;
}
} }

View File

@@ -206,16 +206,36 @@ public class SqliteConnector implements DbConnector {
} }
} }
public ArrayList<KUser> getRewriteUserList(int id) {
ArrayList<KUser> userArr = new ArrayList<KUser>();
try {
Statement st = this.connection.createStatement();
String query = "SELECT id, name, surname FROM user WHERE id != "+id;
ResultSet rs = st.executeQuery(query);
while (rs.next()){
userArr.add(new KUser(rs.getInt("id"), rs.getString("name"), rs.getString("surname")));
}
return userArr;
}
catch (SQLException e){
e.printStackTrace();
return null;
}
}
public ArrayList<KArticle> getArticleList() { public ArrayList<KArticle> getArticleList() {
ArrayList<KArticle> artArr = new ArrayList<KArticle>(); ArrayList<KArticle> artArr = new ArrayList<KArticle>();
try { try {
Statement st = this.connection.createStatement(); Statement st = this.connection.createStatement();
String query = "SELECT id, name, description FROM article"; String query = "SELECT id, name, is_free, description FROM article";
ResultSet rs = st.executeQuery(query); ResultSet rs = st.executeQuery(query);
while (rs.next()){ while (rs.next()){
artArr.add(new KArticle(rs.getInt("id"), rs.getString("name"), rs.getString("description"))); artArr.add(new KArticle(rs.getInt("id"), rs.getString("name"), rs.getBoolean("is_free"), rs.getString("description")));
} }
return artArr; return artArr;
@@ -231,11 +251,11 @@ public class SqliteConnector implements DbConnector {
try { try {
Statement st = this.connection.createStatement(); Statement st = this.connection.createStatement();
String query = "SELECT id, name, description FROM article WHERE is_free = 1;"; String query = "SELECT id, name, is_free, description FROM article WHERE is_free = 1;";
ResultSet rs = st.executeQuery(query); ResultSet rs = st.executeQuery(query);
while (rs.next()){ while (rs.next()){
artArr.add(new KArticle(rs.getInt("id"), rs.getString("name"), rs.getString("description"))); artArr.add(new KArticle(rs.getInt("id"), rs.getString("name"), rs.getBoolean("is_free"), rs.getString("description")));
} }
return artArr; return artArr;
@@ -286,6 +306,27 @@ public class SqliteConnector implements DbConnector {
return lendingArr; return lendingArr;
} }
} }
public ArrayList<KLending> getLendingListForArticle(int pArtId){
ArrayList<KLending> lendingArr = new ArrayList<KLending>();
try{
Statement st = connection.createStatement();
String query = "SELECT id, user_id, lender_id, start_date, expected_end_date, end_date FROM lending WHERE article_id = '"+pArtId+"' ORDER BY id DESC";
ResultSet rs = st.executeQuery(query);
while(rs.next()){
lendingArr.add(new KLending(rs.getInt("id"), rs.getInt("user_id"), rs.getInt("lender_id"), pArtId, rs.getString("start_date"), rs.getString("expected_end_date"), rs.getString("end_date")));
}
return lendingArr;
}
catch(SQLException e){
e.printStackTrace();
return lendingArr;
}
}
/** /**
* *
@@ -357,18 +398,18 @@ public class SqliteConnector implements DbConnector {
} }
} }
public boolean deleteArticle(int id) { public int deleteArticle(int id) {
try { try {
Statement st = this.connection.createStatement(); Statement st = connection.createStatement();
String query = "DELETE FROM article WHERE id = '"+id+"'"; String query = "DELETE FROM article WHERE id = '"+id+"'";
st.executeUpdate(query); st.executeUpdate(query);
return true; return 0;
} }
catch (SQLException e){ catch (SQLException e){
e.printStackTrace(); e.printStackTrace();
return false; return 1;
} }
} }
@@ -411,19 +452,18 @@ public class SqliteConnector implements DbConnector {
} }
} }
public int createNewLender(String pLName, String pLSurname, String pLSN) { public boolean rewriteToNewUser(int pOldId, int pNewId) {
try{ try {
Statement st = connection.createStatement(); Statement st = connection.createStatement();
String query = "INSERT into lender (name, surname, student_number) " String query = "UPDATE lending SET user_id = '"+pNewId+"' WHERE user_id = '"+pOldId+"'";
+ "VALUES ('"+pLName+"', '"+pLSurname+"', '"+pLSN+"')";
st.executeUpdate(query); st.executeUpdate(query);
return 0; return true;
} }
catch(SQLException e){ catch(SQLException e){
e.printStackTrace(); e.printStackTrace();
return 1; return false;
} }
} }
@@ -443,5 +483,21 @@ public class SqliteConnector implements DbConnector {
} }
} }
public int createNewLender(String pLName, String pLSurname, String pLSN) {
try{
Statement st = connection.createStatement();
String query = "INSERT into lender (name, surname, student_number) "
+ "VALUES ('"+pLName+"', '"+pLSurname+"', '"+pLSN+"')";
st.executeUpdate(query);
return 0;
}
catch(SQLException e){
e.printStackTrace();
return 1;
}
}
} }

View File

@@ -0,0 +1,93 @@
package de.katho.kBorrow.gui;
import java.util.HashMap;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.BorderFactory;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JTextArea;
import de.katho.kBorrow.data.KArticle;
import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.models.ArticleInspectTableModel;
import de.katho.kBorrow.models.ArticleTableModel;
public class ArticleInspectFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = -8993341404926674307L;
private JPanel contentPane;
private JTable table;
private ArticleInspectTableModel artInsModel;
private ArticleTableModel articleModel;
private KArticle article;
/**
* Create the frame.
*/
public ArticleInspectFrame(int pRow, final DbConnector dbCon, HashMap<String, Object> pModels) {
articleModel = (ArticleTableModel)pModels.get("articletablemodel");
article = articleModel.getArticleByRow(pRow);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(150, 150, 660, 541);
setTitle("Details: "+article.getName());
// ContentPane
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
// Panel Info
JPanel panelInfo = new JPanel();
panelInfo.setBounds(0, 0, 644, 134);
panelInfo.setBorder(BorderFactory.createTitledBorder("Artikeldetails"));
panelInfo.setLayout(null);
JLabel lblNewLabel_1 = new JLabel("Artikelname:");
JLabel lblArticleName = new JLabel(article.getName());
JLabel lblNewLabel_2 = new JLabel ("Artikelbeschreibung:");
JTextArea taArticleDesc = new JTextArea(article.getDescription());
taArticleDesc.setRows(5);
taArticleDesc.setBorder(BorderFactory.createEtchedBorder());
lblNewLabel_1.setBounds(10, 21, 100, 20);
lblNewLabel_2.setBounds(10, 47, 100, 20);
lblArticleName.setBounds(120, 21, 250, 20);
taArticleDesc.setBounds(120, 45, 250, 78);
taArticleDesc.setEditable(false);
panelInfo.add(lblNewLabel_1);
panelInfo.add(lblNewLabel_2);
panelInfo.add(lblArticleName);
panelInfo.add(taArticleDesc);
// Table
artInsModel = new ArticleInspectTableModel(pRow, dbCon, pModels);
table = new JTable(artInsModel);
table.setFillsViewportHeight(true);
table.setRowHeight(30);
table.getColumnModel().getColumn(0).setMinWidth(30);
table.getColumnModel().getColumn(0).setMaxWidth(30);
table.getColumnModel().getColumn(0).setPreferredWidth(30);
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setBounds(0, 131, 644, 371);
scrollPane.setBorder(BorderFactory.createTitledBorder("Alle Ausleihen des Artikels \""+article.getName()+"\""));
// Add components to ContentPane
contentPane.add(panelInfo);
contentPane.add(scrollPane);
setVisible(true);
}
}

View File

@@ -28,6 +28,7 @@ import de.katho.kBorrow.data.KArticle;
import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.listener.ArticleDeleteTableButton; import de.katho.kBorrow.listener.ArticleDeleteTableButton;
import de.katho.kBorrow.listener.ArticleEditTableButton; import de.katho.kBorrow.listener.ArticleEditTableButton;
import de.katho.kBorrow.listener.ArticleInspectTableButton;
import de.katho.kBorrow.models.ArticleTableModel; import de.katho.kBorrow.models.ArticleTableModel;
public class ArticlePanel extends JPanel implements ActionListener, KeyListener { public class ArticlePanel extends JPanel implements ActionListener, KeyListener {
@@ -61,10 +62,11 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener
articleTable.setRowHeight(30); articleTable.setRowHeight(30);
ArticleDeleteTableButton articleDeleteTableButton = new ArticleDeleteTableButton("L<EFBFBD>schen", articleTable, this, articleController); ArticleDeleteTableButton articleDeleteTableButton = new ArticleDeleteTableButton("L<EFBFBD>schen", articleTable, this, articleController);
ArticleEditTableButton articleEditTableButton = new ArticleEditTableButton("Bearbeiten", articleTable, this); ArticleEditTableButton articleEditTableButton = new ArticleEditTableButton("Bearbeiten", articleTable, this);
ArticleInspectTableButton articleInspectTableButton = new ArticleInspectTableButton("Details", articleTable, dbCon, pModels);
for (int i = 3; i <= 4; i++){ for (int i = 3; i <= 5; i++){
articleTable.getColumnModel().getColumn(i).setCellEditor(i == 3 ? articleEditTableButton : articleDeleteTableButton); articleTable.getColumnModel().getColumn(i).setCellEditor(i == 3 ? articleInspectTableButton : i == 4 ? articleEditTableButton : articleDeleteTableButton);
articleTable.getColumnModel().getColumn(i).setCellRenderer(i == 3 ? articleEditTableButton : articleDeleteTableButton); articleTable.getColumnModel().getColumn(i).setCellRenderer(i == 3 ? articleInspectTableButton : i == 4 ? articleEditTableButton : articleDeleteTableButton);
articleTable.getColumnModel().getColumn(i).setMinWidth(30); articleTable.getColumnModel().getColumn(i).setMinWidth(30);
articleTable.getColumnModel().getColumn(i).setMaxWidth(30); articleTable.getColumnModel().getColumn(i).setMaxWidth(30);
@@ -94,7 +96,7 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener
this.lblArticleStatus = new JLabel(""); this.lblArticleStatus = new JLabel("");
lblName.setBounds(10, 30, 70, 20); lblName.setBounds(10, 30, 70, 20);
lblDescription.setBounds(10, 61, 70, 20); lblDescription.setBounds(10, 61, 70, 20);
this.lblArticleStatus.setBounds(90, 145, 250, 14); this.lblArticleStatus.setBounds(90, 145, 390, 14);
// Edit: Name-Textfield // Edit: Name-Textfield
this.textFieldArticleName = new JTextField(); this.textFieldArticleName = new JTextField();
@@ -230,7 +232,6 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener
} }
} }
@Override
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER) saveButtonPressed(); if(e.getKeyCode() == KeyEvent.VK_ENTER) saveButtonPressed();
@@ -245,5 +246,19 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener
// Nothing to implement // Nothing to implement
} }
public void setDeleteStatusLabel(int pCode){
switch(pCode){
case 0:
lblArticleStatus.setText("Artikel erfolgreich gel<65>scht.");
break;
case 1:
lblArticleStatus.setText("Artikel kann nicht gel<65>scht werden.");
break;
case 2:
lblArticleStatus.setText("Artikel kann nicht gel<65>scht werden, w<>hrend er verliehen ist.");
break;
}
}
} }

View File

@@ -0,0 +1,105 @@
package de.katho.kBorrow.gui;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JComboBox;
import de.katho.kBorrow.controller.RewriteToNewUserController;
import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.models.RewriteUserModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
public class RewriteToNewUserDialog extends JDialog implements ActionListener {
/**
*
*/
private static final long serialVersionUID = -6002073589194176368L;
private final JPanel contentPanel = new JPanel();
private JButton okButton;
private JButton cancelButton;
private RewriteUserModel rwusermodel;
private RewriteToNewUserController rwcontroller;
private int result = 1;
private int oldId;
/**
* Create the dialog.
*/
public RewriteToNewUserDialog(int pOldId, DbConnector pDbCon) {
setTitle("Ausleihe umschreiben");
setModal(true);
setModalityType(ModalityType.APPLICATION_MODAL);
setResizable(false);
setBounds(100, 100, 229, 156);
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
JPanel contentPane = new JPanel();
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout());
oldId = pOldId;
rwusermodel = new RewriteUserModel(pDbCon, oldId);
rwcontroller = new RewriteToNewUserController(pDbCon);
// Content Panel
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPanel.setLayout(null);
JComboBox<String> comboBox = new JComboBox<String>(rwusermodel);
comboBox.setBounds(11, 52, 200, 30);
contentPanel.add(comboBox);
// Button Panel
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
okButton = new JButton("OK");
cancelButton = new JButton("Cancel");
okButton.addActionListener(this);
cancelButton.addActionListener(this);
buttonPane.add(okButton);
buttonPane.add(cancelButton);
contentPane.add(buttonPane, BorderLayout.SOUTH);
contentPane.add(contentPanel, BorderLayout.CENTER);
JLabel lblBenutzerAuswhlenAuf = new JLabel("<html>Benutzer ausw\u00E4hlen, auf den <br /> Ausleihen umgeschrieben werden sollen.</html>");
lblBenutzerAuswhlenAuf.setBounds(11, 11, 200, 30);
contentPanel.add(lblBenutzerAuswhlenAuf);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
// OK Button pressed
if(e.getSource() == okButton ) {
int newId = rwusermodel.getIdByFullname(rwusermodel.getSelectedItem());
if(rwcontroller.rewriteToNewUser(oldId, newId)){
result = 0;
}
dispose();
}
// Cancel Button pressed
if(e.getSource() == cancelButton ) {
dispose();
}
}
public int getResult(){
return result;
}
}

View File

@@ -205,6 +205,10 @@ public class UserPanel extends JPanel implements ActionListener, KeyListener {
} }
} }
public void setStatusLabel(String pText){
lblUserStatus.setText(pText);
}
@Override @Override
public void keyPressed(KeyEvent pKeyPress) { public void keyPressed(KeyEvent pKeyPress) {
if(pKeyPress.getKeyCode() == KeyEvent.VK_ENTER) saveButtonPressed(); if(pKeyPress.getKeyCode() == KeyEvent.VK_ENTER) saveButtonPressed();

View File

@@ -33,7 +33,7 @@ public class ArticleDeleteTableButton extends TableButton {
int row = pTable.getSelectedRow(); int row = pTable.getSelectedRow();
pController.deleteArticle(row); pPanel.setDeleteStatusLabel(pController.deleteArticle(row));
pPanel.resetModeEditArticle(); pPanel.resetModeEditArticle();
} }
}); });

View File

@@ -0,0 +1,42 @@
package de.katho.kBorrow.listener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import javax.swing.ImageIcon;
import javax.swing.JTable;
import sun.tools.jar.Main;
import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.gui.ArticleInspectFrame;
public class ArticleInspectTableButton extends TableButton {
/**
*
*/
private static final long serialVersionUID = -2591133864537097893L;
public ArticleInspectTableButton(String pLabel, final JTable pTable, final DbConnector dbCon, final HashMap<String, Object> pModels) throws IOException {
super(pLabel);
URL url = Main.class.getResource("/icons/system-search.png");
ImageIcon icon = new ImageIcon(url);
buttonE.setIcon(icon);
buttonR.setIcon(icon);
buttonE.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
fireEditingStopped();
int row = pTable.getSelectedRow();
new ArticleInspectFrame(row, dbCon, pModels);
}
});
}
}

View File

@@ -30,7 +30,9 @@ public class UserDeleteTableButton extends TableButton {
int row = pTable.getSelectedRow(); int row = pTable.getSelectedRow();
pController.deleteUser(row); if(pController.deleteUser(row)) pPanel.setStatusLabel("Benutzer erfolgreich gel<65>scht.");
else pPanel.setStatusLabel("Beuntzer konnte nicht gel<65>scht werden.");
pPanel.resetModeEditUser(); pPanel.resetModeEditUser();
} }
}); });

View File

@@ -0,0 +1,93 @@
package de.katho.kBorrow.models;
import java.util.ArrayList;
import java.util.HashMap;
import javax.swing.table.AbstractTableModel;
import de.katho.kBorrow.data.KArticle;
import de.katho.kBorrow.data.KLender;
import de.katho.kBorrow.data.KLending;
import de.katho.kBorrow.data.KUser;
import de.katho.kBorrow.db.DbConnector;
public class ArticleInspectTableModel extends AbstractTableModel {
/**
*
*/
private static final long serialVersionUID = 2293157709447086998L;
private String[] header;
private ArrayList<KLending> data;
private DbConnector dbCon;
private KArticle article;
private ArticleTableModel articleModel;
private UserTableModel userModel;
private LenderModel lenderModel;
public ArticleInspectTableModel(int pRow, DbConnector pDbCon, HashMap<String, Object> pModels){
header = new String[] {"ID", "Verliehen von:", "Ausgeliehen an:", "Ausleihdatum", "Vor. R<>ckgabe", "R<EFBFBD>ckgabe"};
dbCon = pDbCon;
articleModel = (ArticleTableModel)pModels.get("articletablemodel");
userModel = (UserTableModel)pModels.get("usertablemodel");
lenderModel = (LenderModel)pModels.get("lendermodel");
article = articleModel.getArticleByRow(pRow);
updateModel();
}
public void updateModel() {
data = dbCon.getLendingListForArticle(article.getId());
fireTableDataChanged();
}
public int getColumnCount() {
return header.length;
}
public String getColumnName(int col){
return header[col];
}
public int getRowCount() {
return data.size();
}
public boolean isCellEditable(int pRow, int pCol){
return false;
}
public Object getValueAt(int row, int col) {
switch(col){
case 0:
return data.get(row).getId();
case 1:
int uid = data.get(row).getUserId();
KUser user = userModel.getUserById(uid);
return user.getName()+" "+user.getSurname();
case 2:
int lid = data.get(row).getLenderId();
KLender lender = lenderModel.getLenderById(lid);
return lender.getName()+" "+lender.getSurname()+" ("+lender.getStudentnumber()+")";
case 3:
return data.get(row).getStartDate();
case 4:
return data.get(row).getExpectedEndDate();
case 5:
return data.get(row).getEndDate();
default:
return null;
}
}
}

View File

@@ -18,7 +18,7 @@ public class ArticleTableModel extends AbstractTableModel {
protected ArrayList<KArticle> data = new ArrayList<KArticle>(); protected ArrayList<KArticle> data = new ArrayList<KArticle>();
public ArticleTableModel(DbConnector pDbCon){ public ArticleTableModel(DbConnector pDbCon){
header = new String [] {"ID", "Artikelname", "Artikelbeschreibung", "", ""}; header = new String [] {"ID", "Artikelname", "Artikelbeschreibung", "", "", ""};
this.dbCon = pDbCon; this.dbCon = pDbCon;
this.updateModel(); this.updateModel();
} }

View File

@@ -79,11 +79,10 @@ public class LendingTableModel extends AbstractTableModel {
} }
} }
// Die Funktion muss differenzierter werden public boolean isCellEditable(int row, int col){
public boolean isCellEditable(int row, int col){ if (col > 4) return true;
if (col > 4) return true; return false;
return false; }
}
public void updateModel(){ public void updateModel(){
data = dbCon.getActiveLendingList(); data = dbCon.getActiveLendingList();
@@ -100,5 +99,9 @@ public class LendingTableModel extends AbstractTableModel {
} }
return null; return null;
} }
public ArrayList<KLending> getLendingList(){
return data;
}
} }

View File

@@ -0,0 +1,27 @@
package de.katho.kBorrow.models;
import de.katho.kBorrow.db.DbConnector;
public class RewriteUserModel extends UserListModel {
/**
*
*/
private static final long serialVersionUID = -78927566018961799L;
private int id;
public RewriteUserModel(DbConnector pDbCon, int pId) {
super(pDbCon);
id = pId;
updateModel();
}
public void updateModel(){
data = dbCon.getRewriteUserList(id);
if(data.size() > 0) setSelectedItem(data.get(0).getName()+" "+data.get(0).getSurname());
fireIntervalAdded(this, 0, data.size()-1);
}
}

View File

@@ -14,9 +14,9 @@ public class UserListModel extends AbstractListModel<String> implements ComboBox
* *
*/ */
private static final long serialVersionUID = -8653066929273274524L; private static final long serialVersionUID = -8653066929273274524L;
private DbConnector dbCon; protected DbConnector dbCon;
private ArrayList<KUser> data; protected ArrayList<KUser> data;
private String selectedItem = null; protected String selectedItem = null;
public UserListModel(DbConnector pDbCon){ public UserListModel(DbConnector pDbCon){
super(); super();