14 Mayıs 2015 Perşembe

Mvc Spring + Sıralama - Refactoring (Düzenleme)

       S.a. Arkadaşlar,
       Son yazımızda farklı alanlarda sıralama işlemleri yapmıştık. Fakat bunu uzun uzun if else ile yapmıştık, fakat aynı yazımızda bunun da başka bir yönteme göre kısalttığımızı söylemiş, ilerleyen yazılarda yine düzenlemeler yapabileceğimizi söylemiştik. Bugün yine küçük bir değişiklik ile kodu daha da kısalttık. Şimdi kod kısmında ne demek istediğimizi daha iyi anlatacağız.



       Öncelikle list adlı metodumuzdaki orderList'imizi düzenliyoruz.
        orderList.clear();
orderList.add("name");
orderList.add("surname");
orderList.add("phone");

   Buradaki düzenlemeye göre .jsp sayfasındaki sıralama , sıralama a-z ve sıralama 0-9 yazıları yerine artık yukarıdaki gibi ifadeler çıkacaktır. Şimdi de order metodumuzdaki değişikliğe bir göz atalım.

        if(orderReverse == false){
// orderShape parametresiniyazıyı göstermek amaciyla yazdık
orderShape = "DUZ";
// eger orderReserve false ise bize alfabetik sıralama yapıyor
//order değişkenini yukarıdan alıyoruz. .jsp sayfasından tıklanan link
//hangisi ise değer order'a atanır ve ona göre sıralama yapılır.
String vericek = "SELECT id,name,surname,phone
                                            FROM user ORDER BY  " + order + "";
rs = st.executeQuery(vericek);
// Burada ise değerimizi true yapıyoruz. Çünkü tıkladığımızda
// ters sıralama yapabilsin
orderReverse = true;
  }

 else{
 orderShape = "TERS";
System.out.print("45");
// eger orderReserve false ise bize alfabetik sıralama yapiyor
//aynı işlem order'in tersi için de yapılıyor
String vericek = "SELECT id,name,surname,phone
                                            FROM user ORDER BY  " + order + " DESC";
rs = st.executeQuery(vericek);
// Burada ise değerimizi true yapıyoruz. Çünkü tıkladığımızda
// ters sıralama yapabilsin
orderReverse = false;
   }

     Daha önceki yazımızdan hatırlarsanız bu kod oldukça uzundu, fakat o kod bile "copy-paste" yapıp her link için ayrı bir metod oluşturmaktan daha iyiydi, fakat daha sonra böyle bir şey aklımıza geldi. Kodumuzu tekrar gözden geçirip bu haline çevirdik. Bu kod if(orderReverse == false/true) ifadesi yerine jsp sayfasından order değişkenini çektiğimiz gibi çekip, if else blokunu tamamen kaldırabiliriz. Bu işlem 2li bir ifade olduğu için böyle bir şey yapmadık. Ama istenirse bu da yapılabilir. Yani linkimiz /list/order/name/true | false gibi değer alabilir. Şuan için sadece list/order/name | surname | phone kısmı mevcuttur. Şimdi ekran çıktılarımızı ve daha sonra projemizin linkini paylaşıp yazımızı bitirelim.

Resim-1
      Burası ilk açılış ekranımızdır. Önceki yazıda hatırladığınız üzere sırala vb ifadeler yer almaktaydı.

Resim-2
        name linkine tıkladığımızda karşımıza çıkan ekran. Çıktı olarak geçen yazımız ile fark yoktur fakat kodumuzu gözden geçirip geliştirdik. Şuanki hali ile name-alfabetik sıralama mevcuttur. Fakat her hangi bir linke tıklarsak bu sefer ters işlem yapmış olacağız

Resim-3
       phoneTers linkine tıklayarak telefon numaralarını küçükten büyüğe sıraladık. Şimdilik yazımızı burada bitiriyoruz. İyi çalışmalar.
        
          Proje Linki

Hiç yorum yok:

Yorum Gönder