Advertisement
desdemona

klasa

Feb 25th, 2013
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.02 KB | None | 0 0
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package ls_in_java;
  6.  
  7. import java.io.File;
  8. import java.io.Serializable;
  9. import java.text.DateFormat;
  10. import java.text.SimpleDateFormat;
  11. import java.util.Date;
  12. import java.util.HashSet;
  13. import java.util.Iterator;
  14. import java.util.Objects;
  15. import java.util.Set;
  16. import java.util.TreeSet;
  17. /**
  18.  *
  19.  * @author Dominika
  20.  */
  21. public class Plikofolder  implements Comparable<Plikofolder>, Serializable{
  22.    
  23.     private enum Pczyf { PLIK, FOLDER };
  24.     private String nazwa;
  25.     private Pczyf plikczyfolder;
  26.     private Date data;
  27.     private transient File plik;
  28.     private long rozmiar;
  29.     private Set<Plikofolder> lista;
  30.     //zawartosc folderu
  31.    
  32.    
  33.     public String getNazwa() {
  34.         return nazwa;
  35.     }
  36.  
  37.     public void setNazwa(String nazwa) {
  38.         this.nazwa = nazwa;
  39.     }
  40.  
  41.     public long getRozmiar() {
  42.         return rozmiar;
  43.     }
  44.    
  45.     Plikofolder(String sciezka, boolean sort)
  46.     {
  47.         this.plik=new File(sciezka);
  48.         this.nazwa = this.plik.getName();
  49.        
  50.         if(this.plik.isDirectory())
  51.         {
  52.             this.plikczyfolder = Pczyf.FOLDER;
  53.         }
  54.         else
  55.         {
  56.             this.plikczyfolder=Pczyf.PLIK;
  57.             this.rozmiar=this.plik.length();
  58.         }
  59.        
  60.         this.data= new Date(this.plik.lastModified());
  61.        
  62.         if(sort == true)
  63.         {
  64.             lista=new TreeSet<>();
  65.         }
  66.         else
  67.         {
  68.             lista = new HashSet<>();
  69.         }
  70.        
  71.         if (this.plikczyfolder.equals(Pczyf.FOLDER))
  72.         {
  73.             //ładuj co w tym folderze siedzi
  74.             czytajFolder(sort);
  75.         }
  76.     }
  77.    
  78.     private void czytajFolder(boolean sort)
  79.     {
  80.         File pliki[] = this.plik.listFiles();
  81.         //zczytaj pliki do tabelki
  82.        
  83.         for (File x : pliki)
  84.         {
  85.             this.lista.add(new Plikofolder(x.getAbsolutePath(), sort));
  86.         }
  87.         //po co ten sort tu jest?
  88.  
  89.         if(this.plik.isDirectory())
  90.         {
  91.             this.rozmiar = this.lista.size();
  92.         }
  93.  
  94.         this.plik = null;
  95.     }
  96.    
  97.    
  98.     @Override
  99.     public int compareTo(Plikofolder x)
  100.     {
  101.         if(this.equals(x))
  102.             return 0;
  103.        
  104.         if(this.rozmiar == x.rozmiar)
  105.             return this.nazwa.compareTo(x.nazwa);
  106.         else
  107.             return Long.valueOf(this.rozmiar).compareTo(x.rozmiar);
  108.         // takie same rozmiary, cisnij po nazwach.
  109.     }
  110.    
  111.    @Override
  112.     public boolean equals(Object x)
  113.     {
  114.         //czy to ten sam obiekt? a kto to wie?
  115.         //nie mozna wejsc dwa razy do tej samej rzeki i inne opowiesci filozoficzne..
  116.         if(x == null)
  117.             return false;
  118.        
  119.         if(this.getClass() != x.getClass())
  120.             return false;
  121.        
  122.          if(this == x)
  123.              return true;
  124.  
  125.  
  126.         // Plikofolder porownywany = (Plikofolder)x;
  127.         // jezeli sa tej samej klasy to rzutujemy na ObiektKP
  128.         //return (nazwa.equals(porownywany.nazwa) && rozmiar == porownywany.rozmiar);
  129.         //porownujemy nazwe i rozmiar
  130.         return false;
  131.     }
  132.  
  133.     @Override
  134.     // haszowanie, wygenerowane. i nie za bardzo rozumiem
  135.     // po co one tej javie jest ale wierze ze ma to sens
  136.     public int hashCode() {
  137.         int hash = 7;
  138.         hash = 43 * hash + Objects.hashCode(this.nazwa);
  139.         hash = 43 * hash + (int) (this.rozmiar ^ (this.rozmiar >>> 32));
  140.         return hash;
  141.     }
  142.    
  143.     @Override
  144.     public String toString()
  145.     {
  146.         String wynik = nazwa + " ";
  147.        
  148.         if (this.plikczyfolder == Pczyf.FOLDER)
  149.             wynik += "Folder ";
  150.         else
  151.             wynik += "Plik ";
  152.        
  153.         return (wynik + rozmiar + " " + formatujDate());
  154.         // rozmiar i data ostatniej modyfikacji
  155.     }
  156.    
  157.    
  158.     public void print(int przerwa) // wyswietlenie zawartosci kolekcji
  159.     {
  160.         //przerwa to poziom zaglebienia w drzewie
  161.         Iterator it = lista.iterator();
  162.  
  163.         if(lista.size() > 0)
  164.         {
  165.             dodajSpacje(przerwa);
  166.             System.out.println("POCZATEK FOLDERU");
  167.         }
  168.  
  169.         while(it.hasNext())
  170.         {
  171.             dodajSpacje(przerwa);
  172.             Plikofolder file = (Plikofolder)it.next();
  173.             System.out.println(file.toString());
  174.  
  175.             if(file.plikczyfolder == Pczyf.FOLDER)
  176.                 file.print(przerwa+1);
  177.         }
  178.  
  179.         if(lista.size() > 0)
  180.         {
  181.             dodajSpacje(przerwa);
  182.             System.out.println("KONIEC FOLDERU");
  183.             //koniec folderu
  184.         }
  185.     }
  186.        
  187.             private void dodajSpacje(int przerwa)
  188.     {
  189.         for(int i = 0;i < przerwa; i++)
  190.             System.out.print(" ");
  191.     }
  192.  
  193.     private String formatujDate() // przeksztalcenie daty na odpowiedni format
  194.     {
  195.         DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  196.         return formatter.format(this.data);
  197.  
  198.     }
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement