Focus mode

Araç Kiralama Projesi

Veri Filtreleme

Bu konuda modeller üzerinde filtreleme işlemi ve arama fonksiyonu ile ilgili detayları ele alacağız. Kod parçalarını inceleyerek bu işlemleri nasıl gerçekleştirebileceğimizi göreceğiz.

Filtreleme İşlemi

“loadModelFilter” fonksiyonu, araçların tipi, vites türü, yakıt türü ve marka gibi filtreleme seçeneklerini içeren JComboBox bileşenlerini günceller. Her bir filtre için, ilgili JComboBox'e önceden tanımlanmış değerler set edilir ve herhangi bir seçili öğe olmaması sağlanır (setSelectedItem(null)). Ayrıca, marka filtreleme seçenekleri için başka bir fonksiyon olan loadModelFilterBrand çağrılır.

loadModelFilterBrand fonksiyonu ise marka seçeneklerini içeren bir JComboBox'i günceller. Bu fonksiyon, bir döngü kullanarak marka yöneticisinden (brandManager) tüm marka nesnelerini çeker ve her birini bir ComboItem nesnesi olarak oluşturup JComboBox'e ekler. Son olarak, JComboBox'te herhangi bir öğe seçili değilmiş gibi ayarlanır (setSelectedItem(null)). Bu şekilde, kullanıcılar araç filtreleme seçeneklerini güncelleyebilir ve istedikleri kriterlere göre araçları filtreleyebilirler.

public void loadModelFilter() {
    this.cmb_s_model_type.setModel(new DefaultComboBoxModel<>(Model.Type.values()));
    this.cmb_s_model_type.setSelectedItem(null);
    this.cmb_s_model_gear.setModel(new DefaultComboBoxModel<>(Model.Gear.values()));
    this.cmb_s_model_gear.setSelectedItem(null);
    this.cmb_s_model_fuel.setModel(new DefaultComboBoxModel<>(Model.Fuel.values()));
    this.cmb_s_model_fuel.setSelectedItem(null);
    loadModelFilterBrand();
  }

public void loadModelFilterBrand() {
    this.cmb_s_model_brand.removeAllItems();
    for (Brand obj : brandManager.findAll()) {
      this.cmb_s_model_brand.addItem(new ComboItem(obj.getId(), obj.getName()));
    }
    this.cmb_s_model_brand.setSelectedItem(null);
  }

Arama İşlevselliği

Arama işlemi için bir "Search" butonu eklendi. Bu butona tıklandığında, belirtilen filtrelerle veritabanından modelleri çekilmektedir. Aynı zamanda "Cancel" butonu ile seçili filtreleri temizlenebilir.

Bu butona tıklandığında gerçekleşen olayları tanımlayan bir ActionListener çalışmaktadır. ActionListener, butona tıklandığında çağrılan bir lambda ifadesini içerir. Bu ifade, arama işlemini gerçekleştirir. İlk olarak, marka seçeneklerini içeren bir JComboBox'ten seçilen markayı (cmb_s_model_brand) alır ve bu seçilen markanın bir anahtar değerini (brandId) belirler. 

Ardından, ModelManager sınıfının searchForTable fonksiyonunu kullanarak, marka ID'si, yakıt türü, vites türü ve araç tipi gibi filtreleme kriterlerine göre bir dizi Model nesnesi alır. Daha sonra, bu modelleri içeren bir liste oluşturarak, ModelManager'ın getForTable fonksiyonunu kullanır ve bu listeyi tablo için uygun bir şekilde düzenlenmiş bir nesne listesine dönüştürür. Son olarak, loadModelTable fonksiyonunu kullanarak bu nesne listesini bir tabloya yükler, böylece kullanıcılar arama sonuçlarını görebilirler.

this.btn_search_model.addActionListener(e -> {
      ComboItem selectedBrand = (ComboItem) this.cmb_s_model_brand.getSelectedItem();
      int brandId = 0;
      if (selectedBrand != null) {
        brandId = selectedBrand.getKey();
      }
      ArrayList<Model> modelListBySearch = this.modelManager.searchForTable(
          brandId,
          (Model.Fuel) cmb_s_model_fuel.getSelectedItem(),
          (Model.Gear) cmb_s_model_gear.getSelectedItem(),
          (Model.Type) cmb_s_model_type.getSelectedItem()
      );

      ArrayList<Object[]> modelRowListBySearch = this.modelManager.getForTable(this.col_model.length, modelListBySearch);
      loadModelTable(modelRowListBySearch);
    });

Bu şekilde, ComboBox'lar ve CheckBox'lar kullanıcı tarafından seçildiğinde, filtreleme işlemi yapabilir ve ardından "Search" butonuna tıklayarak belirtilen kriterlere göre modelleri listeleyebiliriz. Ayrıca, "Cancel" butonu ile seçili filtreleri temizleyip tüm modelleri görüntülenebilir.

Comments

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