package gui;
import hibernateSwingApi.component.CTable;
import hibernateSwingApi.component.CTextField;
import hibernateSwingApi.hibernate.HibernateManager;
import hibernateSwingApi.utils.Utils;
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Font;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.text.ParseException;
import java.util.LinkedList;
import java.util.List;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JTable;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import javax.swing.border.LineBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import pojos.BankaPOSBilgileri;
import pojos.BankaPOSVadeBilgileri;
import pojos.POSVadeBilgileri;
import service.AutoClosingMessageDialog;
import service.PSAUtil;
import control.PriceControl;
public class PSABankaEkleDuzenleEkrani extends JFrame {
private static final long serialVersionUID = 1L;
private static PSABankaEkleDuzenleEkrani instance;
private CTextField cTextFieldBankaAdi;
private CTextField jTextFieldKomisyon;
private JButton jButtonEkle;
private JButton jButtonKaydet;
private JButton jButtonIptal;
private JScrollPane scrollPaneVadeBilgileri;
private CTable cTablePosVadeBilgileri;
private JLabel jLabelVadeSayisi;
private JSpinner spinner;
private JLabel jLabelKomisyon;
private JPanel jPanelBankaAd;
private JLabel jLabelBankaAd;
private JLabel jLabelTekCekim;
private CTextField jTextFieldTekCekim;
private JPanel cPanelVadeBilgi;
private BankaPOSBilgileri bankaPosGuncellemeBilgi;
private BankaPOSVadeBilgileri bankaPosVadeBilgileri;
private int frameState;
private List<BankaPOSVadeBilgileri> posVadeBilgileriListesi = new LinkedList<>();
private Robot robot;
public static PSABankaEkleDuzenleEkrani getInstance(int state,
BankaPOSBilgileri bankaPosBilgi) {
instance = new PSABankaEkleDuzenleEkrani(state, bankaPosBilgi);
return instance;
}
public PSABankaEkleDuzenleEkrani(int state, BankaPOSBilgileri bankaPosBilgi) {
bankaPosGuncellemeBilgi = bankaPosBilgi;
frameState = state;
initialize();
}
@SuppressWarnings("unchecked")
private void bankaBilgileriDoldur() {
cTextFieldBankaAdi.setText(bankaPosGuncellemeBilgi.getBankaAd());
jTextFieldTekCekim.setText(String.valueOf(bankaPosGuncellemeBilgi
.getTekCekimKomisyon()));
posVadeBilgileriListesi = (List<BankaPOSVadeBilgileri>) HibernateManager
.getInstance().getEntitysList(bankaPosGuncellemeBilgi,
"bankaPosVadeBilgileri");
cTablePosVadeBilgileri.setObjects(posVadeBilgileriListesi);
}
private void initialize() {
setTitle("PSA MERKEZ YENİ BANKA EKLE");
setResizable(false);
setBounds(0, 0, 414, 550);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setIconImage(PSAUtil.getImageIconViaRelativePath("picture/psaIcon.png")
.getImage());
jPanelBankaAd = new JPanel();
jPanelBankaAd.setBackground(UIManager.getColor("Button.shadow"));
jPanelBankaAd.setBorder(new LineBorder(new Color(0, 0, 0), 2));
cTextFieldBankaAdi = new CTextField();
cTextFieldBankaAdi.setHorizontalAlignment(SwingConstants.CENTER);
cTextFieldBankaAdi.setColumns(10);
jLabelBankaAd = new JLabel("*Banka Adı ");
jLabelBankaAd.setFont(new Font("Tahoma", Font.BOLD, 14));
jLabelTekCekim = new JLabel("*Tek Çekim Komisyon");
jLabelTekCekim.setFont(new Font("Tahoma", Font.BOLD, 11));
jTextFieldTekCekim = new CTextField();
jTextFieldTekCekim.setHorizontalAlignment(SwingConstants.CENTER);
jTextFieldTekCekim.setColumns(10);
GroupLayout gl_jPanelBankaAd = new GroupLayout(jPanelBankaAd);
gl_jPanelBankaAd
.setHorizontalGroup(gl_jPanelBankaAd
.createParallelGroup(Alignment.LEADING)
.addGroup(
gl_jPanelBankaAd
.createSequentialGroup()
.addGap(8)
.addGroup(
gl_jPanelBankaAd
.createParallelGroup(
Alignment.LEADING)
.addComponent(
jLabelTekCekim,
GroupLayout.PREFERRED_SIZE,
128,
GroupLayout.PREFERRED_SIZE)
.addComponent(
jLabelBankaAd,
GroupLayout.PREFERRED_SIZE,
108,
GroupLayout.PREFERRED_SIZE))
.addGap(34)
.addGroup(
gl_jPanelBankaAd
.createParallelGroup(
Alignment.LEADING,
false)
.addComponent(
jTextFieldTekCekim,
GroupLayout.DEFAULT_SIZE,
GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(
cTextFieldBankaAdi,
GroupLayout.DEFAULT_SIZE,
158,
Short.MAX_VALUE))
.addGap(8)));
gl_jPanelBankaAd
.setVerticalGroup(gl_jPanelBankaAd
.createParallelGroup(Alignment.LEADING)
.addGroup(
gl_jPanelBankaAd
.createSequentialGroup()
.addContainerGap()
.addGroup(
gl_jPanelBankaAd
.createParallelGroup(
Alignment.TRAILING)
.addComponent(
cTextFieldBankaAdi,
GroupLayout.PREFERRED_SIZE,
28,
GroupLayout.PREFERRED_SIZE)
.addComponent(
jLabelBankaAd,
GroupLayout.PREFERRED_SIZE,
25,
GroupLayout.PREFERRED_SIZE))
.addGap(10)
.addGroup(
gl_jPanelBankaAd
.createParallelGroup(
Alignment.BASELINE)
.addComponent(
jLabelTekCekim,
GroupLayout.PREFERRED_SIZE,
26,
GroupLayout.PREFERRED_SIZE)
.addComponent(
jTextFieldTekCekim,
GroupLayout.PREFERRED_SIZE,
23,
GroupLayout.PREFERRED_SIZE))));
jPanelBankaAd.setLayout(gl_jPanelBankaAd);
cPanelVadeBilgi = new JPanel();
cPanelVadeBilgi.setBorder(new LineBorder(new Color(0, 0, 0), 2));
cPanelVadeBilgi.setBackground(UIManager.getColor("Button.shadow"));
jLabelVadeSayisi = new JLabel("Vade Sayısı");
jLabelVadeSayisi.setFont(new Font("Tahoma", Font.BOLD, 14));
jLabelKomisyon = new JLabel("Komisyon");
jLabelKomisyon.setFont(new Font("Tahoma", Font.BOLD, 14));
jTextFieldKomisyon = new CTextField();
jTextFieldKomisyon.setHorizontalAlignment(SwingConstants.CENTER);
jTextFieldKomisyon.setColumns(10);
jButtonEkle = new JButton("EKLE");
jButtonEkle.setIcon(PSAUtil
.getImageIconViaRelativePath("picture/ekle.png"));
jButtonEkle.setFont(new Font("Tahoma", Font.BOLD, 14));
jButtonKaydet = new JButton("BANKA KAYDET");
if (frameState == 0) {
setTitle("PSA YENİ BANKA EKLEME EKRANI");
jButtonKaydet.setIcon(PSAUtil
.getImageIconViaRelativePath("picture/urunEkleme.png"));
} else {
setTitle("PSA BANKA GÜNCELLEME EKRANI");
jButtonKaydet.setText("BANKA GÜNCELLE");
jButtonKaydet
.setIcon(PSAUtil
.getImageIconViaRelativePath("picture/kullaniciGuncelle.png"));
}
jButtonKaydet.setFont(new Font("Tahoma", Font.BOLD, 14));
jButtonIptal = new JButton("İPTAL");
jButtonIptal.setIcon(PSAUtil
.getImageIconViaRelativePath("picture/geriButonu.png"));
jButtonIptal.setFont(new Font("Tahoma", Font.BOLD, 14));
scrollPaneVadeBilgileri = new JScrollPane();
cTablePosVadeBilgileri = new CTable((String) null,
POSVadeBilgileri.class, true, true);
cTablePosVadeBilgileri
.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
scrollPaneVadeBilgileri.setViewportView(cTablePosVadeBilgileri);
SpinnerModel spinnerModel = new SpinnerNumberModel(2, 2, 1000000, 1);
spinner = new JSpinner();
spinner.setModel(spinnerModel);
GroupLayout gl_cPanelVadeBilgi = new GroupLayout(cPanelVadeBilgi);
gl_cPanelVadeBilgi
.setHorizontalGroup(gl_cPanelVadeBilgi
.createParallelGroup(Alignment.LEADING)
.addGroup(
gl_cPanelVadeBilgi
.createSequentialGroup()
.addGap(10)
.addGroup(
gl_cPanelVadeBilgi
.createParallelGroup(
Alignment.LEADING)
.addGroup(
gl_cPanelVadeBilgi
.createSequentialGroup()
.addGroup(
gl_cPanelVadeBilgi
.createParallelGroup(
Alignment.LEADING)
.addComponent(
jLabelVadeSayisi,
GroupLayout.DEFAULT_SIZE,
80,
Short.MAX_VALUE)
.addGroup(
gl_cPanelVadeBilgi
.createSequentialGroup()
.addPreferredGap(
ComponentPlacement.RELATED)
.addComponent(
jLabelKomisyon,
GroupLayout.DEFAULT_SIZE,
80,
Short.MAX_VALUE)))
.addGap(36)
.addGroup(
gl_cPanelVadeBilgi
.createParallelGroup(
Alignment.LEADING)
.addComponent(
jTextFieldKomisyon,
GroupLayout.DEFAULT_SIZE,
59,
Short.MAX_VALUE)
.addComponent(
spinner,
GroupLayout.PREFERRED_SIZE,
59,
Short.MAX_VALUE))
.addGap(14)
.addComponent(
jButtonEkle,
GroupLayout.DEFAULT_SIZE,
127,
Short.MAX_VALUE)
.addContainerGap())
.addGroup(
gl_cPanelVadeBilgi
.createSequentialGroup()
.addGroup(
gl_cPanelVadeBilgi
.createParallelGroup(
Alignment.TRAILING)
.addComponent(
jButtonKaydet,
Alignment.LEADING,
GroupLayout.DEFAULT_SIZE,
GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(
scrollPaneVadeBilgileri,
Alignment.LEADING,
GroupLayout.DEFAULT_SIZE,
316,
Short.MAX_VALUE))
.addGap(10))))
.addGroup(
gl_cPanelVadeBilgi
.createSequentialGroup()
.addContainerGap()
.addComponent(jButtonIptal,
GroupLayout.DEFAULT_SIZE, 316,
Short.MAX_VALUE)
.addContainerGap()));
gl_cPanelVadeBilgi
.setVerticalGroup(gl_cPanelVadeBilgi
.createParallelGroup(Alignment.LEADING)
.addGroup(
gl_cPanelVadeBilgi
.createSequentialGroup()
.addGap(9)
.addGroup(
gl_cPanelVadeBilgi
.createParallelGroup(
Alignment.LEADING)
.addGroup(
gl_cPanelVadeBilgi
.createSequentialGroup()
.addComponent(
jLabelVadeSayisi,
GroupLayout.DEFAULT_SIZE,
26,
Short.MAX_VALUE)
.addGap(35))
.addGroup(
gl_cPanelVadeBilgi
.createSequentialGroup()
.addPreferredGap(
ComponentPlacement.RELATED)
.addComponent(
spinner,
GroupLayout.DEFAULT_SIZE,
22,
Short.MAX_VALUE)
.addGap(11)
.addGroup(
gl_cPanelVadeBilgi
.createParallelGroup(
Alignment.BASELINE)
.addComponent(
jTextFieldKomisyon,
GroupLayout.PREFERRED_SIZE,
23,
GroupLayout.PREFERRED_SIZE)
.addComponent(
jLabelKomisyon,
GroupLayout.PREFERRED_SIZE,
26,
GroupLayout.PREFERRED_SIZE)))
.addGroup(
gl_cPanelVadeBilgi
.createSequentialGroup()
.addComponent(
jButtonEkle,
GroupLayout.DEFAULT_SIZE,
60,
Short.MAX_VALUE)
.addGap(1)))
.addGap(9)
.addComponent(scrollPaneVadeBilgileri,
GroupLayout.DEFAULT_SIZE, 197,
Short.MAX_VALUE)
.addGap(11)
.addComponent(jButtonKaydet,
GroupLayout.DEFAULT_SIZE, 48,
Short.MAX_VALUE)
.addPreferredGap(
ComponentPlacement.RELATED)
.addComponent(jButtonIptal,
GroupLayout.DEFAULT_SIZE, 48,
Short.MAX_VALUE).addGap(12)));
cPanelVadeBilgi.setLayout(gl_cPanelVadeBilgi);
GroupLayout groupLayout = new GroupLayout(getContentPane());
groupLayout.setHorizontalGroup(groupLayout.createParallelGroup(
Alignment.LEADING).addGroup(
groupLayout
.createSequentialGroup()
.addGap(10)
.addGroup(
groupLayout
.createParallelGroup(Alignment.LEADING)
.addComponent(jPanelBankaAd,
GroupLayout.DEFAULT_SIZE,
GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(cPanelVadeBilgi,
GroupLayout.DEFAULT_SIZE,
GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)).addGap(11)));
groupLayout.setVerticalGroup(groupLayout.createParallelGroup(
Alignment.LEADING).addGroup(
groupLayout
.createSequentialGroup()
.addGap(11)
.addComponent(jPanelBankaAd, GroupLayout.DEFAULT_SIZE,
84, Short.MAX_VALUE)
.addGap(11)
.addComponent(cPanelVadeBilgi,
GroupLayout.DEFAULT_SIZE, 405, Short.MAX_VALUE)
.addGap(11)));
getContentPane().setLayout(groupLayout);
posVadeBilgileriListesi.clear();
initListener();
fillBankInfo();
}
private void fillBankInfo() {
if (bankaPosGuncellemeBilgi != null && frameState != 0) {
bankaBilgileriDoldur();
}
}
private void initListener() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
bankaBilgileriSetEnable();
}
});
jButtonEkle.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
ekleClicked();
}
});
((JSpinner.DefaultEditor) spinner.getEditor()).getTextField()
.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
((JSpinner.DefaultEditor) spinner.getEditor())
.getTextField().setEditable(true);
((JSpinner.DefaultEditor) spinner.getEditor())
.getTextField().selectAll();
}
});
spinner.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
((JSpinner.DefaultEditor) spinner.getEditor()).getTextField()
.setEditable(false);
}
});
spinner.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
char keyChar = e.getKeyChar();
if ((keyChar >= '0' && keyChar <= '9') || keyChar == '.') {
return;
}
e.consume();
}
});
jButtonKaydet.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
kaydetClicked();
}
});
jButtonIptal.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
bankaBilgileriSetEnable();
}
});
cTablePosVadeBilgileri
.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
tableSilClicked();
}
});
jTextFieldTekCekim.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent arg0) {
try {
if (jTextFieldTekCekim.getText().trim().equals(""))
return;
robot = new Robot();
if (PriceControl.validate(jTextFieldTekCekim.getText())) {
return;
} else {
robot.keyPress(KeyEvent.VK_BACK_SPACE);
robot.keyRelease(KeyEvent.VK_BACK_SPACE);
}
} catch (AWTException e) {
e.printStackTrace();
}
}
});
jTextFieldKomisyon.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent arg0) {
try {
if (jTextFieldKomisyon.getText().trim().equals(""))
return;
robot = new Robot();
if (PriceControl.validate(jTextFieldKomisyon.getText())) {
return;
} else {
robot.keyPress(KeyEvent.VK_BACK_SPACE);
robot.keyRelease(KeyEvent.VK_BACK_SPACE);
}
} catch (AWTException e) {
e.printStackTrace();
}
}
});
}
protected void tableSilClicked() {
bankaPosVadeBilgileri = (BankaPOSVadeBilgileri) cTablePosVadeBilgileri
.getSelectedObject();
if (frameState == 0) {
if (cTablePosVadeBilgileri.getModel()
.getColumnName(cTablePosVadeBilgileri.getSelectedColumn())
.equals(" ")) {
posVadeBilgileriListesi.remove(cTablePosVadeBilgileri
.getSelectedRow());
boolean check = HibernateManager.getInstance().delete(
bankaPosVadeBilgileri);
if (check)
AutoClosingMessageDialog.showAutoClosingMessageDialog(
"Vade bilgisi sistemden silinmiştir.", 2);
}
} else {
if (cTablePosVadeBilgileri.getModel()
.getColumnName(cTablePosVadeBilgileri.getSelectedColumn())
.equals(" ")) {
posVadeBilgileriListesi.remove(cTablePosVadeBilgileri
.getSelectedRow());
boolean check = HibernateManager.getInstance()
.deleteEntityObject(bankaPosGuncellemeBilgi,
"bankaPosVadeBilgileri", bankaPosVadeBilgileri);
if (check)
AutoClosingMessageDialog
.showAutoClosingMessageDialog(
"Vade bilgisi sistemden silinmiştir. Banka bilgisi güncellenmiştir.",
2);
}
}
cTablePosVadeBilgileri.setObjects(posVadeBilgileriListesi);
}
protected void ekleClicked() {
if (jTextFieldKomisyon.getText().trim().equals("")) {
Utils.showMessage("Lütfen komisyon bilgisi giriniz.");
return;
}
if (vadeSayisiControl()) {
Utils.showMessage("Vade bilgisi sistemde bulunmaktadır.");
return;
}
BankaPOSVadeBilgileri pvb = new BankaPOSVadeBilgileri();
pvb.setSystemName(HibernateManager.getInstance().getSystemName());
try {
pvb.setKomisyon(jTextFieldKomisyon.getDouble());
} catch (ParseException e) {
e.printStackTrace();
}
pvb.setVadeSayisi((int) spinner.getValue());
posVadeBilgileriListesi.add(pvb);
cTablePosVadeBilgileri.setObjects(posVadeBilgileriListesi);
}
private boolean vadeSayisiControl() {
for (int i = 0; i < posVadeBilgileriListesi.size(); i++) {
if ((int) spinner.getValue() == posVadeBilgileriListesi.get(i)
.getVadeSayisi())
return true;
}
return false;
}
protected void bankaBilgileriSetEnable() {
PSAPOSBilgileriEkrani.getInstance(1).setEnabled(true);
instance.dispose();
}
protected void kaydetClicked() {
if (cTextFieldBankaAdi.getText().trim().equals("")
|| jTextFieldTekCekim.getText().trim().equals("")) {
Utils.showMessage("Lütfen zorunlu(*) alanları doldurunuz.");
return;
}
BankaPOSBilgileri ps;
if (frameState == 0) {
ps = (BankaPOSBilgileri) HibernateManager.getInstance()
.getObjectWithUniqueColumn(BankaPOSBilgileri.class,
"bankaAd", cTextFieldBankaAdi.getText());
if (ps != null) {
Utils.showMessage("Banka adı mevcuttur, tekrar giriniz!");
return;
}
ps = new BankaPOSBilgileri();
} else {
ps = bankaPosGuncellemeBilgi;
if (bankaBilgileriControl()) {
AutoClosingMessageDialog
.showAutoClosingMessageDialog(
"Banka ile ilgili güncellenecek bilgi bulunmamaktadır.",
2);
return;
}
}
ps.setSystemName(HibernateManager.getInstance().getSystemName());
ps.setBankaAd(cTextFieldBankaAdi.getText().toUpperCase());
try {
ps.setTekCekimKomisyon(jTextFieldTekCekim.getDouble());
} catch (ParseException e) {
e.printStackTrace();
}
ps.setBankaPosVadeBilgileri(posVadeBilgileriListesi);
if (frameState == 0) {
boolean check = HibernateManager.getInstance().save(ps);
if (check) {
AutoClosingMessageDialog.showAutoClosingMessageDialog(
"Banka bilgileri sisteme eklenmiştir.", 2);
bankaBilgileriSetEnable();
}
} else {
boolean check = HibernateManager.getInstance().update(ps);
if (check) {
AutoClosingMessageDialog.showAutoClosingMessageDialog(
"Banka bilgileri gücellenmiştir..", 2);
}
}
}
@SuppressWarnings("unchecked")
private boolean bankaBilgileriControl() {
if (cTextFieldBankaAdi.getText().trim()
.equals(bankaPosGuncellemeBilgi.getBankaAd())
&& Double.parseDouble(jTextFieldTekCekim.getText().trim()) == bankaPosGuncellemeBilgi
.getTekCekimKomisyon()) {
List<POSVadeBilgileri> pvbListesi = (List<POSVadeBilgileri>) HibernateManager
.getInstance().getEntitysList(bankaPosGuncellemeBilgi,
"bankaPosVadeBilgileri");
if (pvbListesi.size() != posVadeBilgileriListesi.size()) {
return false;
}
if (pvbListesi.size() == posVadeBilgileriListesi.size()) {
for (int i = 0; i < posVadeBilgileriListesi.size(); i++) {
if (pvbListesi.get(i).getVadeSayisi() == posVadeBilgileriListesi
.get(i).getVadeSayisi()
&& pvbListesi.get(i).getKomisyon() == posVadeBilgileriListesi
.get(i).getKomisyon()) {
return true;
}
}
}
}
return false;
}
}