Focus mode

Araç Kiralama Projesi

Markaların Yönetilmesi

Yeni bir butona tıklandığında artık yeni bir marka ekleyeceğimiz bir ekran oluşturulması gerekiyor. Bunun için Swing UI kullanarak "BrandView" adında bir ekran oluşturulmalıdır. Bu ekran, kullanıcıdan marka bilgilerini girmesini isteyecek.

BrandView sınıfının constructor'ında, gelen Brand nesnesini kullanarak ya güncelleme ya da kaydetme işlemini gerçekleştirecek şekilde tasarladık. Eğer içi dolu bir Brand nesnesi yollarsak güncelleme işlemi yapacak, içi boş bir Brand nesnesi yollarsak kaydetme işlemi yapacak.

BrandDao sınıfında save için bir metot oluşturulur. Bu metot içerisinde SQL sorgusu yer alır tablodan girilen değerleri Insert Into komutuyla veritabanına ekler.

public boolean save(Brand brand) {
  String query = "INSERT INTO public.brand (brand_name) VALUES (?)";
  try {
    PreparedStatement pr = this.con.prepareStatement(query);
    pr.setString(1, brand.getName());
    return pr.executeUpdate() != -1;
  } catch (SQLException e) {
    e.printStackTrace();
  }
  return true;
}

Şimdi, BrandView içerisine marka eklemek için bir JLabel, bir JTextField ve bir JButton ekledik. Bu elemanlar sayesinde kullanıcı marka adını girebilecek ve "Kaydet" butonuna tıkladığında işlem gerçekleştirilecek.

BrandView sınıfında Save işlemi için bir method oluşturulur. Bu method, kullanıcının girdiği marka adını alıp veritabanına eklemek için gerekli SQL sorgusunu çalıştıracak. Eğer işlem başarılıysa "Done" mesajını, başarısızsa bir hata mesajını ekrana yazdırıp bilgi verecek.

boolean result;
if (this.brand == null) {
  Brand obj = new Brand(fld_brand_name.getText());
  result = this.brandManager.save(obj);
} else {
  this.brand.setName(fld_brand_name.getText());
  result = this.brandManager.update(this.brand);
}

if (result) {
  Helper.showMsg("done");
  dispose();
} else {
  Helper.showMsg("error");
}

Controller sınıfında, Brand nesnesinin içerisinde bir ID varsa Save işlemi yapamayacağımızı kontrol edilir. Ayrıca, BrandView içerisindeki "Kaydet" butonuna tıklandığında yapılan işlemleri kontrol etmek için gerekli kodları eklenmiştir.

public boolean save(Brand brand) {
  if (brand.getId() != 0) {
    Helper.showMsg("error");
  }
  return this.brandDao.save(brand);
}

Brand Manager sınıfında, Save ve Update işlemleri için gerekli metodları oluşturulur. Bu metodlar, Brand nesnesini alarak veritabanına eklemeyi veya güncellemeyi gerçekleştirir.

BrandView sınıfında, güncelleme işlemi için bir "Güncelle" butonu eklenir. Bu butona tıklandığında, seçili olan Brand'in ID'sini alarak veritabanında güncelleme işlemini gerçekleştirecek kodları eklenmiştir.

public boolean update(Brand brand) {
  String query = "UPDATE public.brand SET brand_name = ? WHERE brand_id = ?";
  try {
    PreparedStatement pr = this.con.prepareStatement(query);
    pr.setString(1, brand.getName());
    pr.setInt(2, brand.getId());
    return pr.executeUpdate() != -1;
  } catch (SQLException e) {
    e.printStackTrace();
  }
  return true;
}

Brand Manager sınıfında, GetByID metodunu oluşturulur. Bu metod, verilen bir ID'ye göre veritabanından ilgili Brand'i çekiyor. Bu metod sayesinde güncelleme işlemi için gerekli olan veriler elde ediliyor.

public Brand getById(int id) {
  return this.brandDao.getById(id);
}

Son olarak, BrandView sınıfında Load metodunu oluşturulur. Bu metod, Brand tablosundaki verileri güncellemek için kullanılıyor. Her defasında tabloyu temizleyip, veritabanındaki güncel verileri tekrar ekleyerek tabloyu güncellenir. Ayrıca, BrandView penceresinin kapatılması durumunda bu Load metodunu tetiklemek için gerekli kodlar eklenmiştir.

 public void loadBrandTable() {
    Object[] col_brand = {"Marka ID", "Marka Adı"};
    ArrayList<Object[]> brandList = this.brandManager.getForTable(col_brand.length);
    this.createTable(this.tmdl_brand, this.tbl_brand, col_brand, brandList);
  }

Bu güncellemelerle, kullanıcı artık BrandView aracılığıyla yeni marka ekleyebilecek, var olan markaları güncelleyebilecek ve Brand tablosundaki güncel verileri görebilecek. 

Comments

You need to enroll in the course to be able to comment!