gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Doterani primeri sortiranja
[spa2-materijali.git] / sortiranje / knjige / Biblioteka.java
index b057472..a4e543e 100644 (file)
@@ -1,14 +1,13 @@
-/**
- * Resenje zadatka sort1 sa vezbi
- */
 import java.util.Arrays;
 
+import org.svetovid.Svetovid;
 import org.svetovid.io.SvetovidReader;
 import org.svetovid.io.SvetovidWriter;
 
 // Klasa koja opisuje jednu knjigu
 class Knjiga implements Comparable<Knjiga> {
 
+    // Osobine jednom kreirane knjige se ne mogu menjati
     private final int id;
     private final String naslov;
     private final String autor;
@@ -19,23 +18,7 @@ class Knjiga implements Comparable<Knjiga> {
         this.autor = autor;
     }
 
-    public String toString() {
-        return id + " " + autor + ": " + naslov;
-    }
-
-    public int compareTo(Knjiga that) {
-        // najjednostavnija verzija: knjige uredjene po "id" broju
-        //return this.id - that.id;
-
-        // autor-naslov
-        int rez = this.autor.compareTo(that.autor);
-        if (rez == 0) {
-            rez = this.naslov.compareTo(that.naslov);
-        }
-        return rez;
-    }
-
-    public String getNaslov(){
+    public String getNaslov() {
         return naslov;
     }
 
@@ -46,6 +29,32 @@ class Knjiga implements Comparable<Knjiga> {
     public int getId() {
         return id;
     }
+
+    public String toString() {
+
+        // Tekstualna reprezentacija knjige oblika:
+        // 9785 J.R.R. Tolkien: The Lord of the Rings
+        return id + " " + autor + ": " + naslov;
+
+    }
+
+    public int compareTo(Knjiga that) {
+
+        // Najjednostavnije poredjenje je po "id" broju
+        // return this.id - that.id;
+
+        // No mi ovde poredimo prvo po autoru
+        int rezultat = this.autor.compareTo(that.autor);
+
+        // A potom po naslovu, ako je sutor isti
+        if (rezultat == 0) {
+            rezultat = this.naslov.compareTo(that.naslov);
+        }
+
+        // Vracamo rezultat poredjenja
+        return rezultat;
+
+    }
 }
 
 // Glavni program
@@ -57,7 +66,9 @@ public class Biblioteka {
         String fajl = Svetovid.in.readLine("Unesite ime fajla sa knjigama:");
         Knjiga[] niz = ucitajKnjige(fajl);
 
+        // Dalje radimo samo ako smo uspeli da ucitamo knjige
         if (niz != null) {
+
             // Stampanje ucitanog niza
             Svetovid.out.println();
             Svetovid.out.println("Nesortirani niz:");
@@ -75,8 +86,9 @@ public class Biblioteka {
 
             // Ispis knjiga u fajl
             String izlazni = Svetovid.in.readLine("Unesite ime fajla za ispis:");
-            snimiKnjige(niz,izlazni);
+            snimiKnjige(niz, izlazni);
 
+        // Prijavljujemo gresku ako nismo uspeli da ucitamo niz
         } else {
             System.err.println("Greska pri ucitavanju niza, kraj rada");
         }
@@ -90,8 +102,8 @@ public class Biblioteka {
             return null;
         }
 
-        // Ako mozemo, napravimo precicu 'in' da ne bi morali da
-        // svaki put kuvamo 'Svetovid.in(fajl)'
+        // Ako mozemo, napravimo precicu 'in' da ne bismo morali
+        // svaki put da kucamo 'Svetovid.in(fajl)'
         SvetovidReader in = Svetovid.in(fajl);
 
         // Koliko ima knjiga u fajlu?
@@ -116,6 +128,9 @@ public class Biblioteka {
 
         }
 
+        // Zatvorimo fajl
+        Svetovid.closeIn(fajl);
+
         // Vratimo ucitani niz
         return rez;
 
@@ -128,27 +143,28 @@ public class Biblioteka {
     }
 
     public static void snimiKnjige(Knjiga[] niz, String ime) {
+
+        // Ako ne mozemo da otvorimo fajl, vracamo se u glavni program
         if (!Svetovid.testOut(ime)) {
-            // ne mozemo da snimimo, vracamo se
-            System.err.println("Nemoguce snimanje u fajl");
+            System.err.println("Snimanje u fajl nije moguce!");
             return;
         }
 
-        // napravimo precicu 'out' da ne bi morali da
-        // svaki put pisemo 'Svetovid.out(ime)'
+        // Napravimo precicu 'out' da ne bismo morali
+        // svaki put da kucamo 'Svetovid.out(ime)'
         SvetovidWriter out = Svetovid.out(ime);
 
-        // pisemo broj knjiga, kao u originalu
+        // Upisemo ukupan broj knjiga, kao u originalnom fajlu
         out.println(niz.length);
 
-        // za svaku knjigu ispisujemo podatke
+        // Za svaku knjigu upisemo redom sve podatke
         for (Knjiga knjiga : niz) {
             out.println(knjiga.getId());
             out.println(knjiga.getNaslov());
             out.println(knjiga.getAutor());
         }
 
-        // zatvorimo izlaz
+        // Zatvorimo izlaz
         out.close();
 
     }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner