Odak modu

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. 

Background Pattern
Birlikte öğrenelim

Sektörde en çok aranan yazılım becerilerini kazan

Yapay zeka desteği, birebir mentörlük saatleri, canlı dersler ve senin için özel hazırlanmış içeriklerle eksiklerini tamamla, düzenli geri bildirimler al ve öğrenme sürecini en verimli hale getir.

Yunus Emre Kabakcı

Patika+ mezunu

Patika+ Fullstack Web Development Bootcamp mezunumuz Yunus Emre,

3 ay içinde Katar’dan aldığı teklif ile, global bir şirket olan Pavo Group’da işe başladı!


“İçerik zenginliği, mentor desteği, ileriye dönük bir network sağlaması ve dünyada en çok tercih edilen frameworkler üzerinden bir eğitim veriyor olması Patika+’ı tercih etmemin temel sebepleri oldu!“

Yorumlar

Yorum yapabilmek için derse kayıt olmalısın!