Solved issue #14 - Datenmodell wurde nun komplett überarbeitet.

Theoretisch müssten nun sämtliche Operationen auf Datenstrukturen direkt
auf den Datenmodellen geschehen, während die Tabellen- und Listenmodelle
lediglich in den Tabellen und Listen eingebunden werden und für damit
verbundene Aufgaben zuständig sind.
This commit is contained in:
Servicepoint
2015-01-06 17:24:13 +01:00
parent 401d68cf47
commit c5638e697f
30 changed files with 321 additions and 298 deletions

View File

@@ -2,20 +2,18 @@ package de.katho.kBorrow.controller;
import java.util.HashMap;
import de.katho.kBorrow.data.KArticleModel;
import de.katho.kBorrow.data.objects.KArticle;
import de.katho.kBorrow.interfaces.DbConnector;
import de.katho.kBorrow.interfaces.KDataModel;
import de.katho.kBorrow.models.ArticleTableModel;
import de.katho.kBorrow.models.FreeArticleTableModel;
public class ArticleController {
private DbConnector dbCon;
private ArticleTableModel articleTableModel;
private FreeArticleTableModel freeArticleTableModel;
private KArticleModel kArticleModel;
public ArticleController(DbConnector pDbCon, HashMap<String, KDataModel> models){
dbCon = pDbCon;
articleTableModel = (ArticleTableModel)models.get("articletablemodel");
freeArticleTableModel = (FreeArticleTableModel)models.get("freearticletablemodel");
kArticleModel = (KArticleModel)models.get("karticlemodel");
}
/**
@@ -30,8 +28,7 @@ public class ArticleController {
public int createArticle(String pName, String pDesc) {
int status = dbCon.createArticle(pName, pDesc);
articleTableModel.updateModel();
freeArticleTableModel.updateModel();
kArticleModel.updateModel();
return status;
}
@@ -50,8 +47,7 @@ public class ArticleController {
int status = this.dbCon.editArticle(pId, pName, pDesc);
if(status == 0){
articleTableModel.updateModel();
freeArticleTableModel.updateModel();
kArticleModel.updateModel();
}
return status;
@@ -60,21 +56,19 @@ public class ArticleController {
/**
* 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 pId ID des Artikels, der gel<65>scht werden soll.
* @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 int deleteArticle(int pRow) {
public int deleteArticle(int pId) {
if(!articleTableModel.getArticleByRow(pRow).getIsFree()) return 2;
if(!((KArticle)kArticleModel.getElement(pId)).getIsFree()) return 2;
int id = articleTableModel.getArticleByRow(pRow).getId();
int returnCode = dbCon.deleteArticle(id);
int returnCode = dbCon.deleteArticle(pId);
if(returnCode == 0){
articleTableModel.updateModel();
freeArticleTableModel.updateModel();
kArticleModel.updateModel();
}
return returnCode;

View File

@@ -3,39 +3,34 @@ package de.katho.kBorrow.controller;
import java.util.HashMap;
import de.katho.kBorrow.Util;
import de.katho.kBorrow.data.KArticleModel;
import de.katho.kBorrow.data.KLendingModel;
import de.katho.kBorrow.data.objects.KLending;
import de.katho.kBorrow.interfaces.DbConnector;
import de.katho.kBorrow.interfaces.KDataModel;
import de.katho.kBorrow.models.ArticleTableModel;
import de.katho.kBorrow.models.FreeArticleTableModel;
import de.katho.kBorrow.models.LendingTableModel;
public class ManageLendingsController {
private DbConnector dbCon;
private FreeArticleTableModel freeArticleTableModel;
private ArticleTableModel articleTableModel;
private LendingTableModel lendingTableModel;
private KArticleModel articleModel;
private KLendingModel lendingModel;
public ManageLendingsController(DbConnector pDbCon, HashMap<String, KDataModel> models){
dbCon = pDbCon;
freeArticleTableModel = (FreeArticleTableModel)models.get("freearticletablemodel");
articleTableModel = (ArticleTableModel)models.get("articletablemodel");
lendingTableModel = (LendingTableModel)models.get("lendingtablemodel");
articleModel = (KArticleModel)models.get("karticlemodel");
lendingModel = (KLendingModel)models.get("klendingmodel");
}
public void returnLending(int pRow) {
KLending lending = lendingTableModel.getLendingByRow(pRow);
public void returnLending(int pId) {
KLending lending = lendingModel.getElement(pId);
int artId = lending.getArticleId();
int lendingId = lending.getId();
dbCon.returnLending(lendingId, artId, Util.getCurrentDate());
freeArticleTableModel.updateModel();
articleTableModel.updateModel();
lendingTableModel.updateModel();
dbCon.returnLending(pId, artId, Util.getCurrentDate());
articleModel.updateModel();
lendingModel.updateModel();
}
}

View File

@@ -19,34 +19,31 @@ import java.util.HashMap;
import de.katho.kBorrow.Settings;
import de.katho.kBorrow.Util;
import de.katho.kBorrow.data.KArticleModel;
import de.katho.kBorrow.data.KLenderModel;
import de.katho.kBorrow.data.KLendingModel;
import de.katho.kBorrow.data.KUserModel;
import de.katho.kBorrow.data.objects.KArticle;
import de.katho.kBorrow.data.objects.KLender;
import de.katho.kBorrow.data.objects.KLending;
import de.katho.kBorrow.data.objects.KUser;
import de.katho.kBorrow.interfaces.DbConnector;
import de.katho.kBorrow.interfaces.KDataModel;
import de.katho.kBorrow.models.ArticleTableModel;
import de.katho.kBorrow.models.FreeArticleTableModel;
import de.katho.kBorrow.models.LenderModel;
import de.katho.kBorrow.models.LendingTableModel;
import de.katho.kBorrow.models.UserListModel;
public class NewLendingController {
private DbConnector dbCon;
private UserListModel userListModel;
private LenderModel lenderModel;
private FreeArticleTableModel freeArticleModel;
private LendingTableModel lendingTableModel;
private ArticleTableModel articleTableModel;
private KUserModel kUserModel;
private KLenderModel kLenderModel;
private KArticleModel kArticleModel;
private KLendingModel kLendingModel;
private Settings settings;
public NewLendingController(DbConnector pDbCon, HashMap<String, KDataModel> models, final Settings pSettings){
dbCon = pDbCon;
userListModel = (UserListModel)models.get("userlistmodel");
lenderModel = (LenderModel)models.get("lendermodel");
freeArticleModel = (FreeArticleTableModel)models.get("freearticletablemodel");
articleTableModel = (ArticleTableModel)models.get("articletablemodel");
lendingTableModel = (LendingTableModel)models.get("lendingtablemodel");
kUserModel = (KUserModel)models.get("kusermodel");
kLenderModel = (KLenderModel)models.get("klendermodel");
kArticleModel = (KArticleModel)models.get("karticlemodel");
kLendingModel = (KLendingModel)models.get("klendingmodel");
settings = pSettings;
}
@@ -67,12 +64,12 @@ public class NewLendingController {
if(pEstEndDate.before(new Date())) return 3;
if(!pLSN.matches("[0-9]+")) return 5;
ArrayList<KLender> lenders = lenderModel.getLenders(pLName, pLSurname, pLSN);
ArrayList<KLender> lenders = kLenderModel.getLenders(pLName, pLSurname, pLSN);
if(lenders.size() == 0) {
int result = dbCon.createNewLender(pLName, pLSurname, pLSN);
if(result == 0){
lenderModel.updateModel();
kLenderModel.updateModel();
return newLending(pArtId, pLName, pLSurname, pLSN, pStartDate, pEstEndDate, pUsername);
}
@@ -80,15 +77,14 @@ public class NewLendingController {
}
else if(lenders.size() == 1){
KLender lender = lenders.get(0);
int uId = userListModel.getIdByFullname(pUsername);
int uId = kUserModel.getIdByFullname(pUsername);
DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
int[] result = dbCon.createNewLending(pArtId, uId, lender.getId(), pStartDate, dateFormat.format(pEstEndDate));
if(result[0] == 0){
freeArticleModel.updateModel();
articleTableModel.updateModel();
lendingTableModel.updateModel();
kArticleModel.updateModel();
kLendingModel.updateModel();
createPdfFile(result[1]);
return result[0];
@@ -100,10 +96,10 @@ public class NewLendingController {
private void createPdfFile(int pLendingId) throws Exception {
KLending lending = lendingTableModel.getLendingById(pLendingId);
KArticle article = articleTableModel.getArticleById(lending.getArticleId());
KUser user = userListModel.getUserById(lending.getUserId());
KLender lender = lenderModel.getLenderById(lending.getLenderId());
KLending lending = kLendingModel.getElement(pLendingId);
KArticle article = kArticleModel.getElement(lending.getArticleId());
KUser user = kUserModel.getElement(lending.getUserId());
KLender lender = kLenderModel.getElement(lending.getLenderId());
PDDocument doc = new PDDocument();
PDPage page = new PDPage(PDPage.PAGE_SIZE_A4);

View File

@@ -58,7 +58,7 @@ public class UserController {
}
if(isOccupied){
RewriteToNewUserDialog dialog = new RewriteToNewUserDialog(pId, dbCon);
RewriteToNewUserDialog dialog = new RewriteToNewUserDialog(pId, dbCon, userModel);
if(dialog.getResult() == 0){
lendingModel.updateModel();
userModel.updateModel();

View File

@@ -37,8 +37,10 @@ public class KArticleModel implements KDataModel {
return data;
}
public Object get(int id) {
if(data.size() > id) return data.get(id);
public KArticle getElement(int id) {
for (KArticle elem : data){
if(elem.getId() == id) return elem;
}
return null;
}

View File

@@ -38,9 +38,94 @@ public class KLenderModel implements KDataModel {
return data;
}
public Object get(int id) {
if(data.size() > id) return data.get(id);
public KLender getElement(int id) {
for(KLender elem : data){
if(elem.getId() == id) return elem;
}
return null;
}
public ArrayList<KLender> getLenders(String pName, String pSurname, String pSN){
boolean nameEmpty = pName.isEmpty();
boolean surnameEmpty = pSurname.isEmpty();
boolean snEmpty = pSN.isEmpty();
ArrayList<KLender> elems = new ArrayList<KLender>();
int sn;
if(pSN.matches("[0-9]+")){
sn = Integer.parseInt(pSN);
}
else {
sn = -1;
}
if(!nameEmpty){
if(!surnameEmpty){
if(!snEmpty){
// Alles gegeben
for(KLender e : data){
if(e.getName().equals(pName) && e.getSurname().equals(pSurname) && e.getStudentnumber() == sn){
elems.add(e);
}
}
return elems;
}
//Name und Surname gegeben
for(KLender e : data){
if(e.getName().equals(pName) && e.getSurname().equals(pSurname)){
elems.add(e);
}
}
return elems;
}
if(!snEmpty){
// Name und SN gegeben
for (KLender e : data){
if(e.getName().equals(pName) && e.getStudentnumber() == sn){
elems.add(e);
}
}
return elems;
}
// Nur Name gegeben
for (KLender e : data){
if(e.getName().equals(pName)){
elems.add(e);
}
}
return elems;
}
if(!surnameEmpty){
if(!snEmpty){
// Surname und SN gegeben
for (KLender e : data){
if(e.getSurname().equals(pSurname) && e.getStudentnumber() == sn){
elems.add(e);
}
}
return elems;
}
// Nur Surname gegeben
for (KLender e : data){
if(e.getSurname().equals(pSurname)){
elems.add(e);
}
}
return elems;
}
if(!snEmpty){
// Nur SN gegeben
for (KLender e : data){
if(e.getStudentnumber() == sn){
elems.add(e);
}
}
return elems;
}
return elems;
}
}

View File

@@ -38,8 +38,10 @@ public class KLendingModel implements KDataModel {
return data;
}
public Object get(int id) {
if(data.size() > id) return data.get(id);
public KLending getElement(int id) {
for(KLending elem : data){
if(elem.getId() == id) return elem;
}
return null;
}

View File

@@ -37,9 +37,18 @@ public class KUserModel implements KDataModel {
return data;
}
public Object get(int id) {
if(data.size() > id) return data.get(id);
public KUser getElement(int id) {
for(KUser elem : data){
if(elem.getId() == id) return elem;
}
return null;
}
public int getIdByFullname(String pName){
for (KUser elem : data){
if(pName.equals(elem.getName()+" "+elem.getSurname())) return elem.getId();
}
return -1;
}
}

View File

@@ -11,11 +11,10 @@ import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JTextArea;
import de.katho.kBorrow.data.KArticleModel;
import de.katho.kBorrow.data.objects.KArticle;
import de.katho.kBorrow.interfaces.DbConnector;
import de.katho.kBorrow.interfaces.KDataModel;
import de.katho.kBorrow.models.ArticleInspectTableModel;
import de.katho.kBorrow.models.ArticleTableModel;
public class ArticleInspectFrame extends JFrame {
@@ -25,16 +24,15 @@ public class ArticleInspectFrame extends JFrame {
private static final long serialVersionUID = -8993341404926674307L;
private JPanel contentPane;
private JTable table;
private ArticleInspectTableModel artInsModel;
private ArticleTableModel articleModel;
private KArticleModel articleModel;
private KArticle article;
/**
* Create the frame.
*/
public ArticleInspectFrame(int pRow, final DbConnector dbCon, HashMap<String, KDataModel> models) {
articleModel = (ArticleTableModel)models.get("articletablemodel");
article = articleModel.getArticleByRow(pRow);
public ArticleInspectFrame(int pId, HashMap<String, KDataModel> models) {
articleModel = (KArticleModel)models.get("karticlemodel");
article = articleModel.getElement(pId);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(150, 150, 660, 541);
@@ -72,8 +70,7 @@ public class ArticleInspectFrame extends JFrame {
panelInfo.add(taArticleDesc);
// Table
artInsModel = new ArticleInspectTableModel(pRow, dbCon, models);
table = new JTable(artInsModel);
table = new JTable(new ArticleInspectTableModel(pId, models));
table.setFillsViewportHeight(true);
table.setRowHeight(30);
table.getColumnModel().getColumn(0).setMinWidth(30);

View File

@@ -24,6 +24,7 @@ import javax.swing.UIManager;
import javax.swing.border.TitledBorder;
import de.katho.kBorrow.controller.ArticleController;
import de.katho.kBorrow.data.KArticleModel;
import de.katho.kBorrow.data.objects.KArticle;
import de.katho.kBorrow.interfaces.DbConnector;
import de.katho.kBorrow.interfaces.KDataModel;
@@ -43,7 +44,7 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener
private JLabel lblArticleStatus;
private boolean articleModeEdit;
private int articleEditId;
private ArticleTableModel articleTableModel;
private KArticleModel articleModel;
/**
* Create the panel.
@@ -52,18 +53,18 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener
public ArticlePanel(final DbConnector dbCon, HashMap<String, KDataModel> models) throws IOException {
super();
this.setLayout(null);
articleTableModel = (ArticleTableModel)models.get("articletablemodel");
articleModel = (KArticleModel)models.get("karticlemodel");
articleController = new ArticleController(dbCon, models);
/*
* Tabelle und drumherum
*/
JTable articleTable = new JTable(articleTableModel);
JTable articleTable = new JTable(new ArticleTableModel(articleModel));
articleTable.setRowHeight(30);
ArticleDeleteTableButton articleDeleteTableButton = new ArticleDeleteTableButton("L<EFBFBD>schen", articleTable, this, articleController);
ArticleEditTableButton articleEditTableButton = new ArticleEditTableButton("Bearbeiten", articleTable, this);
ArticleInspectTableButton articleInspectTableButton = new ArticleInspectTableButton("Details", articleTable, dbCon, models);
ArticleInspectTableButton articleInspectTableButton = new ArticleInspectTableButton("Details", articleTable, models);
for (int i = 3; i <= 5; i++){
articleTable.getColumnModel().getColumn(i).setCellEditor(i == 3 ? articleInspectTableButton : i == 4 ? articleEditTableButton : articleDeleteTableButton);
@@ -174,8 +175,8 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener
this.textAreaArticleDescription.setText("");
}
public void setModeEditArticle(int pRow) {
KArticle art = articleTableModel.getArticleByRow(pRow);
public void setModeEditArticle(int pId) {
KArticle art = articleModel.getElement(pId);
this.articleModeEdit = true;
this.articleEditId = art.getId();

View File

@@ -5,8 +5,6 @@ import javax.swing.JPanel;
import de.katho.kBorrow.controller.ManageLendingsController;
import de.katho.kBorrow.interfaces.DbConnector;
import de.katho.kBorrow.interfaces.KDataModel;
import de.katho.kBorrow.listener.LendingReturnTableButton;
@@ -27,16 +25,14 @@ public class ManageLendingsPanel extends JPanel {
*/
private static final long serialVersionUID = 925691137664223491L;
private LendingTableModel lendingTableModel;
private ManageLendingsController manageLendingsController;
public ManageLendingsPanel(DbConnector dbCon, HashMap<String, KDataModel> models) throws IOException {
lendingTableModel = (LendingTableModel)models.get("lendingtablemodel");
manageLendingsController = new ManageLendingsController(dbCon, models);
// Lending-Table
JTable lendingTable = new JTable(lendingTableModel);
JTable lendingTable = new JTable(new LendingTableModel(models));
LendingReturnTableButton lrtb = new LendingReturnTableButton("Ausleihe beenden", lendingTable, manageLendingsController);
lendingTable.getColumnModel().getColumn(0).setMinWidth(30);
lendingTable.getColumnModel().getColumn(0).setMaxWidth(30);

View File

@@ -34,13 +34,15 @@ import de.katho.kBorrow.controller.NewLendingController;
import de.katho.kBorrow.converter.LenderNameConverter;
import de.katho.kBorrow.converter.LenderStudentnumberConverter;
import de.katho.kBorrow.converter.LenderSurnameConverter;
import de.katho.kBorrow.data.KArticleModel;
import de.katho.kBorrow.data.KLenderModel;
import de.katho.kBorrow.data.KUserModel;
import de.katho.kBorrow.data.objects.KArticle;
import de.katho.kBorrow.data.objects.KLender;
import de.katho.kBorrow.interfaces.DbConnector;
import de.katho.kBorrow.interfaces.KDataModel;
import de.katho.kBorrow.listener.NewLendingTableButton;
import de.katho.kBorrow.models.FreeArticleTableModel;
import de.katho.kBorrow.models.LenderModel;
import de.katho.kBorrow.models.UserListModel;
import java.awt.event.FocusEvent;
@@ -51,15 +53,12 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList
*
*/
private static final long serialVersionUID = -7346953418572781322L;
private FreeArticleTableModel freeArticleTableModel;
private JTextField tfName;
private JTextField tfSurname;
private JTextField tfStudentNumber;
private UserListModel userListModel;
private JLabel lblStartDate;
private JLabel lblArticleName;
private int articleId;
//private LenderModel lenderModel;
private JButton btnCancel;
private JButton btnSave;
private NewLendingController newLendingController;
@@ -67,6 +66,13 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList
private JXDatePicker dpEstEndDate;
private JLabel lblStatus;
private KArticleModel kArticleModel;
private KUserModel kUserModel;
private KLenderModel kLenderModel;
private UserListModel userListModel;
private FreeArticleTableModel freeArticleTableModel;
/**
* Create the panel.
* @param dbCon
@@ -76,10 +82,14 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList
setLayout(null);
articleId = -1;
kArticleModel = (KArticleModel)models.get("karticlemodel");
kUserModel = (KUserModel)models.get("kusermodel");
kLenderModel = (KLenderModel)models.get("klendermodel");
userListModel = new UserListModel(kUserModel);
freeArticleTableModel = new FreeArticleTableModel(kArticleModel);
// FreeArticleTable
freeArticleTableModel = (FreeArticleTableModel)models.get("freearticletablemodel");
userListModel = new UserListModel(models.get("kusermodel"));
lenderModel = (LenderModel)models.get("lendermodel");
newLendingController = new NewLendingController(dbCon, models, pSettings);
JTable freeArticleTable = new JTable(freeArticleTableModel);
@@ -157,9 +167,9 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList
tfName.addKeyListener(this);
tfSurname.addKeyListener(this);
tfStudentNumber.addKeyListener(this);
AutoCompleteDecorator.decorate(tfName, lenderModel.getList(), false, new LenderNameConverter() );
AutoCompleteDecorator.decorate(tfSurname, lenderModel.getList(), false, new LenderSurnameConverter());
AutoCompleteDecorator.decorate(tfStudentNumber, lenderModel.getList(), false, new LenderStudentnumberConverter());
AutoCompleteDecorator.decorate(tfName, kLenderModel.getData(), false, new LenderNameConverter() );
AutoCompleteDecorator.decorate(tfSurname, kLenderModel.getData(), false, new LenderSurnameConverter());
AutoCompleteDecorator.decorate(tfStudentNumber, kLenderModel.getData(), false, new LenderStudentnumberConverter());
// Buttons
btnCancel = new JButton("Abbrechen");
@@ -253,8 +263,8 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList
}
}
public void setModeNewLending(int pRow) {
KArticle art = freeArticleTableModel.getArticleByRow(pRow);
public void setModeNewLending(int id) {
KArticle art = kArticleModel.getElement(id);
lblStartDate.setText(Util.getCurrentDate());
lblArticleName.setText(art.getName());
@@ -283,7 +293,7 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList
}
public void focusLost(FocusEvent pEvent) {
ArrayList<KLender> result = lenderModel.getLenders(tfName.getText(), tfSurname.getText(), tfStudentNumber.getText());
ArrayList<KLender> result = kLenderModel.getLenders(tfName.getText(), tfSurname.getText(), tfStudentNumber.getText());
if(result.size() == 1){
tfName.setText(result.get(0).getName());

View File

@@ -11,6 +11,7 @@ import javax.swing.JComboBox;
import de.katho.kBorrow.controller.RewriteToNewUserController;
import de.katho.kBorrow.interfaces.DbConnector;
import de.katho.kBorrow.interfaces.KDataModel;
import de.katho.kBorrow.models.RewriteUserModel;
import java.awt.event.ActionEvent;
@@ -37,7 +38,7 @@ public class RewriteToNewUserDialog extends JDialog implements ActionListener {
/**
* Create the dialog.
*/
public RewriteToNewUserDialog(int pOldId, DbConnector pDbCon) {
public RewriteToNewUserDialog(int pOldId, DbConnector pDbCon, KDataModel userModel) {
setTitle("Ausleihe umschreiben");
setModal(true);
setModalityType(ModalityType.APPLICATION_MODAL);
@@ -48,7 +49,7 @@ public class RewriteToNewUserDialog extends JDialog implements ActionListener {
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout());
oldId = pOldId;
rwusermodel = new RewriteUserModel(pDbCon, oldId);
rwusermodel = new RewriteUserModel(userModel, oldId);
rwcontroller = new RewriteToNewUserController(pDbCon);
// Content Panel

View File

@@ -20,6 +20,7 @@ import javax.swing.UIManager;
import javax.swing.border.TitledBorder;
import de.katho.kBorrow.controller.UserController;
import de.katho.kBorrow.data.KUserModel;
import de.katho.kBorrow.data.objects.KUser;
import de.katho.kBorrow.interfaces.DbConnector;
import de.katho.kBorrow.interfaces.KDataModel;
@@ -37,17 +38,17 @@ public class UserPanel extends JPanel implements ActionListener, KeyListener {
private JButton btnUserCancel;
private boolean userModeEdit;
private int userEditId;
private UserTableModel userTableModel;
private KUserModel kUserModel;
private UserController userController;
public UserPanel(final DbConnector dbCon, HashMap<String, KDataModel> models) throws IOException{
super();
setLayout(null);
userTableModel = (UserTableModel)models.get("usertablemodel");
kUserModel = (KUserModel)models.get("kusermodel");
userController = new UserController(dbCon, models);
//Tabelle und drumherum
JTable userTable = new JTable(userTableModel);
JTable userTable = new JTable(new UserTableModel(kUserModel));
userTable.setRowHeight(30);
UserDeleteTableButton userDeleteTableButton = new UserDeleteTableButton("L<EFBFBD>schen", userTable, this, userController);
UserEditTableButton userEditTableButton = new UserEditTableButton("Bearbeiten", userTable, this);
@@ -148,8 +149,8 @@ public class UserPanel extends JPanel implements ActionListener, KeyListener {
this.textFieldUserSurname.setText("");
}
public void setModeEditUser(int pRow){
KUser user = userTableModel.getUserByRow(pRow);
public void setModeEditUser(int pId){
KUser user = kUserModel.getElement(pId);
this.userModeEdit = true;
this.userEditId = user.getId();

View File

@@ -6,5 +6,5 @@ public interface KDataModel {
public void register(KGuiModel pModel);
public void updateModel();
public ArrayList<?> getData();
public Object get(int id);
public Object getElement(int id);
}

View File

@@ -11,6 +11,7 @@ import javax.swing.JTable;
import sun.tools.jar.Main;
import de.katho.kBorrow.controller.ArticleController;
import de.katho.kBorrow.gui.ArticlePanel;
import de.katho.kBorrow.models.ArticleTableModel;
public class ArticleDeleteTableButton extends TableButton {
@@ -24,16 +25,17 @@ public class ArticleDeleteTableButton extends TableButton {
URL url = Main.class.getResource("/icons/edit-delete.png");
ImageIcon icon = new ImageIcon(url);
this.buttonE.setIcon(icon);
this.buttonR.setIcon(icon);
buttonE.setIcon(icon);
buttonR.setIcon(icon);
this.buttonE.addActionListener(new ActionListener(){
buttonE.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
fireEditingStopped();
int row = pTable.getSelectedRow();
int id = ((ArticleTableModel)pTable.getModel()).getIdFromRow(row);
pPanel.setDeleteStatusLabel(pController.deleteArticle(row));
pPanel.setDeleteStatusLabel(pController.deleteArticle(id));
pPanel.resetModeEditArticle();
}
});

View File

@@ -10,6 +10,7 @@ import javax.swing.JTable;
import sun.tools.jar.Main;
import de.katho.kBorrow.gui.ArticlePanel;
import de.katho.kBorrow.models.ArticleTableModel;
public class ArticleEditTableButton extends TableButton {
@@ -31,8 +32,9 @@ public class ArticleEditTableButton extends TableButton {
fireEditingStopped();
int row = pTable.getSelectedRow();
int id = ((ArticleTableModel)pTable.getModel()).getIdFromRow(row);
articleTab.setModeEditArticle(row);
articleTab.setModeEditArticle(id);
}
});
}

View File

@@ -11,8 +11,8 @@ import javax.swing.JTable;
import sun.tools.jar.Main;
import de.katho.kBorrow.gui.ArticleInspectFrame;
import de.katho.kBorrow.interfaces.DbConnector;
import de.katho.kBorrow.interfaces.KDataModel;
import de.katho.kBorrow.models.ArticleTableModel;
public class ArticleInspectTableButton extends TableButton {
@@ -21,7 +21,7 @@ public class ArticleInspectTableButton extends TableButton {
*/
private static final long serialVersionUID = -2591133864537097893L;
public ArticleInspectTableButton(String pLabel, final JTable pTable, final DbConnector dbCon, final HashMap<String, KDataModel> models) throws IOException {
public ArticleInspectTableButton(String pLabel, final JTable pTable, final HashMap<String, KDataModel> models) throws IOException {
super(pLabel);
URL url = Main.class.getResource("/icons/system-search.png");
ImageIcon icon = new ImageIcon(url);
@@ -34,8 +34,9 @@ public class ArticleInspectTableButton extends TableButton {
fireEditingStopped();
int row = pTable.getSelectedRow();
int id = ((ArticleTableModel)pTable.getModel()).getIdFromRow(row);
new ArticleInspectFrame(row, dbCon, models);
new ArticleInspectFrame(id, models);
}
});
}

View File

@@ -10,6 +10,7 @@ import javax.swing.JTable;
import sun.tools.jar.Main;
import de.katho.kBorrow.controller.ManageLendingsController;
import de.katho.kBorrow.models.LendingTableModel;
public class LendingReturnTableButton extends TableButton {
@@ -31,8 +32,9 @@ public class LendingReturnTableButton extends TableButton {
fireEditingStopped();
int row = pTable.getSelectedRow();
int id = ((LendingTableModel)pTable.getModel()).getIdFromRow(row);
pController.returnLending(row);
pController.returnLending(id);
}
});
}

View File

@@ -10,6 +10,7 @@ import javax.swing.JTable;
import sun.tools.jar.Main;
import de.katho.kBorrow.gui.NewLendingPanel;
import de.katho.kBorrow.models.FreeArticleTableModel;
public class NewLendingTableButton extends TableButton {
@@ -31,8 +32,9 @@ public class NewLendingTableButton extends TableButton {
fireEditingStopped();
int row = pTable.getSelectedRow();
int id = ((FreeArticleTableModel)pTable.getModel()).getIdFromRow(row);
pPanel.setModeNewLending(row);
pPanel.setModeNewLending(id);
}
});
}

View File

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

View File

@@ -10,6 +10,7 @@ import javax.swing.JTable;
import sun.tools.jar.Main;
import de.katho.kBorrow.gui.UserPanel;
import de.katho.kBorrow.models.UserTableModel;
public class UserEditTableButton extends TableButton {
@@ -31,8 +32,9 @@ public class UserEditTableButton extends TableButton {
fireEditingStopped();
int row = pTable.getSelectedRow();
int id = ((UserTableModel)pTable.getModel()).getIdFromRow(row);
pPanel.setModeEditUser(row);
pPanel.setModeEditUser(id);
}
});

View File

@@ -5,11 +5,12 @@ import java.util.HashMap;
import javax.swing.table.AbstractTableModel;
import de.katho.kBorrow.data.objects.KArticle;
import de.katho.kBorrow.data.KLenderModel;
import de.katho.kBorrow.data.KLendingModel;
import de.katho.kBorrow.data.KUserModel;
import de.katho.kBorrow.data.objects.KLender;
import de.katho.kBorrow.data.objects.KLending;
import de.katho.kBorrow.data.objects.KUser;
import de.katho.kBorrow.interfaces.DbConnector;
import de.katho.kBorrow.interfaces.KDataModel;
import de.katho.kBorrow.interfaces.KGuiModel;
@@ -20,29 +21,19 @@ public class ArticleInspectTableModel extends AbstractTableModel implements KGui
*/
private static final long serialVersionUID = 2293157709447086998L;
private String[] header;
private int articleId;
private ArrayList<KLending> data;
private DbConnector dbCon;
private KArticle article;
private ArticleTableModel articleModel;
private UserTableModel userModel;
private LenderModel lenderModel;
private KUserModel userModel;
private KLenderModel lenderModel;
public ArticleInspectTableModel(int pRow, DbConnector pDbCon, HashMap<String, KDataModel> models){
public ArticleInspectTableModel(int pId, HashMap<String, KDataModel> models){
header = new String[] {"ID", "Verliehen von:", "Ausgeliehen an:", "Ausleihdatum", "Vor. R<>ckgabe", "R<EFBFBD>ckgabe"};
dbCon = pDbCon;
articleModel = (ArticleTableModel)models.get("articletablemodel");
userModel = (UserTableModel)models.get("usertablemodel");
lenderModel = (LenderModel)models.get("lendermodel");
articleId = pId;
userModel = (KUserModel)models.get("kusermodel");
lenderModel = (KLenderModel)models.get("klendermodel");
article = articleModel.getArticleByRow(pRow);
updateModel();
}
public void updateModel() {
data = dbCon.getLendingListForArticle(article.getId());
fireTableDataChanged();
fetchData(((KLendingModel)models.get("klendingmodel")));
}
public int getColumnCount() {
@@ -68,13 +59,13 @@ public class ArticleInspectTableModel extends AbstractTableModel implements KGui
case 1:
int uid = data.get(row).getUserId();
KUser user = userModel.getUserById(uid);
KUser user = userModel.getElement(uid);
return user.getName()+" "+user.getSurname();
case 2:
int lid = data.get(row).getLenderId();
KLender lender = lenderModel.getLenderById(lid);
KLender lender = lenderModel.getElement(lid);
return lender.getName()+" "+lender.getSurname()+" ("+lender.getStudentnumber()+")";
@@ -92,4 +83,16 @@ public class ArticleInspectTableModel extends AbstractTableModel implements KGui
}
}
public void fetchData(KDataModel pModel) {
if(pModel instanceof KLendingModel){
data = new ArrayList<KLending>();
for(KLending elem : ((KLendingModel)pModel).getData()){
if(elem.getArticleId() == articleId) data.add(elem);
}
fireTableDataChanged();
}
}
}

View File

@@ -4,8 +4,10 @@ import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import de.katho.kBorrow.data.KArticleModel;
import de.katho.kBorrow.data.objects.KArticle;
import de.katho.kBorrow.interfaces.DbConnector;
import de.katho.kBorrow.interfaces.KDataModel;
import de.katho.kBorrow.interfaces.KGuiModel;
public class ArticleTableModel extends AbstractTableModel implements KGuiModel {
@@ -18,20 +20,14 @@ public class ArticleTableModel extends AbstractTableModel implements KGuiModel {
protected DbConnector dbCon;
protected ArrayList<KArticle> data = new ArrayList<KArticle>();
public ArticleTableModel(DbConnector pDbCon){
public ArticleTableModel(KDataModel pModel){
header = new String [] {"ID", "Artikelname", "Artikelbeschreibung", "", "", ""};
this.dbCon = pDbCon;
this.updateModel();
pModel.register(this);
}
public String getColumnName(int index){
return header[index];
}
public void updateModel() {
this.data = this.dbCon.getArticleList();
this.fireTableDataChanged();
}
public int getColumnCount() {
return header.length;
@@ -77,6 +73,10 @@ public class ArticleTableModel extends AbstractTableModel implements KGuiModel {
return -1;
}
public int getIdFromRow(int pRow){
return getArticleByRow(pRow).getId();
}
/**
* Gibt das Article-Objekt der <20>bergebenen Zeile zur<75>ck.
*
@@ -99,5 +99,14 @@ public class ArticleTableModel extends AbstractTableModel implements KGuiModel {
}
return null;
}
public void fetchData(KDataModel pModel) {
if(pModel instanceof KArticleModel){
data = ((KArticleModel)pModel).getData();
fireTableDataChanged();
}
}
}

View File

@@ -1,6 +1,12 @@
package de.katho.kBorrow.models;
import de.katho.kBorrow.interfaces.DbConnector;
import java.util.ArrayList;
import java.util.logging.Level;
import de.katho.kBorrow.KLogger;
import de.katho.kBorrow.data.KArticleModel;
import de.katho.kBorrow.data.objects.KArticle;
import de.katho.kBorrow.interfaces.KDataModel;
import de.katho.kBorrow.interfaces.KGuiModel;
public class FreeArticleTableModel extends ArticleTableModel implements KGuiModel {
@@ -9,21 +15,31 @@ public class FreeArticleTableModel extends ArticleTableModel implements KGuiMode
*
*/
private static final long serialVersionUID = 1908669541941834593L;
private String[] header;
private String[] header;
public FreeArticleTableModel(DbConnector pDbCon) {
super(pDbCon);
this.header = new String[] {"ID", "Artikelname", "Artikelbeschreibung", ""};
updateModel();
}
public void updateModel(){
data = dbCon.getFreeArticleList();
fireTableDataChanged();
public FreeArticleTableModel(KDataModel pModel) {
super(pModel);
header = new String[] {"ID", "Artikelname", "Artikelbeschreibung", ""};
pModel.register(this);
}
public int getColumnCount(){
return header.length;
}
public void fetchData(KDataModel pModel) {
if(pModel instanceof KArticleModel){
data = new ArrayList<KArticle>();
for(KArticle elem : ((KArticleModel)pModel).getData()){
if (elem.getIsFree()) data.add(elem);
}
fireTableDataChanged();
}
else {
KLogger.log(Level.SEVERE, "FreeArticleModel: Typecast error!", new Exception("FreeArticleModel: Typecast error!"));
}
}
}

View File

@@ -1,120 +0,0 @@
package de.katho.kBorrow.models;
import java.util.ArrayList;
import de.katho.kBorrow.data.KLenderModel;
import de.katho.kBorrow.data.objects.KLender;
import de.katho.kBorrow.interfaces.KDataModel;
import de.katho.kBorrow.interfaces.KGuiModel;
public class LenderModel implements KGuiModel {
private ArrayList<KLender> data;
public LenderModel(KDataModel pModel){
pModel.register(this);
}
public ArrayList<KLender> getList(){
return data;
}
public ArrayList<KLender> getLenders(String pName, String pSurname, String pSN){
boolean nameEmpty = pName.isEmpty();
boolean surnameEmpty = pSurname.isEmpty();
boolean snEmpty = pSN.isEmpty();
ArrayList<KLender> elems = new ArrayList<KLender>();
int sn;
if(pSN.matches("[0-9]+")){
sn = Integer.parseInt(pSN);
}
else {
sn = -1;
}
if(!nameEmpty){
if(!surnameEmpty){
if(!snEmpty){
// Alles gegeben
for(KLender e : data){
if(e.getName().equals(pName) && e.getSurname().equals(pSurname) && e.getStudentnumber() == sn){
elems.add(e);
}
}
return elems;
}
//Name und Surname gegeben
for(KLender e : data){
if(e.getName().equals(pName) && e.getSurname().equals(pSurname)){
elems.add(e);
}
}
return elems;
}
if(!snEmpty){
// Name und SN gegeben
for (KLender e : data){
if(e.getName().equals(pName) && e.getStudentnumber() == sn){
elems.add(e);
}
}
return elems;
}
// Nur Name gegeben
for (KLender e : data){
if(e.getName().equals(pName)){
elems.add(e);
}
}
return elems;
}
if(!surnameEmpty){
if(!snEmpty){
// Surname und SN gegeben
for (KLender e : data){
if(e.getSurname().equals(pSurname) && e.getStudentnumber() == sn){
elems.add(e);
}
}
return elems;
}
// Nur Surname gegeben
for (KLender e : data){
if(e.getSurname().equals(pSurname)){
elems.add(e);
}
}
return elems;
}
if(!snEmpty){
// Nur SN gegeben
for (KLender e : data){
if(e.getStudentnumber() == sn){
elems.add(e);
}
}
return elems;
}
return elems;
}
public KLender getLenderById(int pId){
for(KLender elem : data){
if(elem.getId() == pId) return elem;
}
return null;
}
public KLender getLenderByRow(int pRow){
return data.get(pRow);
}
public void fetchData(KDataModel pModel) {
if(pModel instanceof KLenderModel){
data = ((KLenderModel)pModel).getData();
}
}
}

View File

@@ -20,7 +20,7 @@ public class LendingTableModel extends AbstractTableModel implements KGuiModel {
*/
private static final long serialVersionUID = 1375465648631587292L;
private String[] header = {"ID", "Artikel", "Verliehen von:", "Ausgeliehen an:", "Ausleihdatum", "Vor. R<>ckgabe", ""};
private ArrayList<KLending> data = new ArrayList<KLending>();
private ArrayList<KLending> data;
private KDataModel articleModel;
private KDataModel lenderModel;
private KDataModel userModel;
@@ -54,19 +54,19 @@ public class LendingTableModel extends AbstractTableModel implements KGuiModel {
case 1:
int artId = data.get(row).getArticleId();
KArticle art = (KArticle) articleModel.get(artId);
KArticle art = (KArticle) articleModel.getElement(artId);
return art.getName();
case 2:
int uId = data.get(row).getUserId();
KUser user = (KUser) userModel.get(uId);
KUser user = (KUser) userModel.getElement(uId);
return user.getName()+" "+user.getSurname();
case 3:
int lenderId = data.get(row).getLenderId();
KLender lender = (KLender) lenderModel.get(lenderId);
KLender lender = (KLender) lenderModel.getElement(lenderId);
return lender.getName()+" "+lender.getSurname()+" ("+lender.getStudentnumber()+")";
@@ -98,12 +98,25 @@ public class LendingTableModel extends AbstractTableModel implements KGuiModel {
}
public void fetchData(KDataModel pModel) {
data = new ArrayList<KLending>();
if(pModel instanceof KLendingModel){
for(KLending elem : ((KLendingModel)pModel).getData()){
if(elem.getEndDate().equals("")) data.add(elem);
if(elem.getEndDate() == null || elem.getEndDate().equals("")) data.add(elem);
}
fireTableDataChanged();
}
}
public int getRowFromId(int pId){
for(KLending elem : this.data){
if(elem.getId() == pId) return data.indexOf(elem);
}
return -1;
}
public int getIdFromRow(int pRow){
return getLendingByRow(pRow).getId();
}
}

View File

@@ -22,6 +22,13 @@ public class RewriteUserModel extends UserListModel {
pModel.register(this);
}
public int getIdByFullname(String pName){
for (KUser elem : data){
if(pName.equals(elem.getName()+" "+elem.getSurname())) return elem.getId();
}
return -1;
}
public void fetchData(KDataModel pModel){
if(pModel instanceof KUserModel){
data = new ArrayList<KUser>();

View File

@@ -56,12 +56,7 @@ public class UserListModel extends AbstractListModel<String> implements ComboBox
return false;
}
public int getIdByFullname(String pName){
for (KUser elem : data){
if(pName.equals(elem.getName()+" "+elem.getSurname())) return elem.getId();
}
return -1;
}
public KUser getUserById(int pId){
for (KUser elem : data){

View File

@@ -68,6 +68,10 @@ public class UserTableModel extends AbstractTableModel implements KGuiModel {
return -1;
}
public int getIdFromRow(int pRow){
return getUserByRow(pRow).getId();
}
public KUser getUserByRow(int pRow){
return this.data.get(pRow);
}
@@ -79,10 +83,6 @@ public class UserTableModel extends AbstractTableModel implements KGuiModel {
return null;
}
public int rowToId(int pRow){
return getUserByRow(pRow).getId();
}
public void fetchData(KDataModel pModel) {
if(pModel instanceof KUserModel){
data = ((KUserModel)pModel).getData();