Advertisement
spiny94

Untitled

Sep 8th, 2015
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.26 KB | None | 0 0
  1. package files;
  2.  
  3. import java.util.Collection;
  4. import java.util.Map;
  5. import java.util.TreeMap;
  6.  
  7.  
  8. public class Computer {
  9.  
  10.     Map dischi = new TreeMap();
  11.     private char next = 'C';
  12.    
  13.     public void add(HardDisk hd) {
  14.         hd.id = next;
  15.         next ++;
  16.         dischi.put(new Character(hd.id),hd);
  17.     }
  18.  
  19.     public Collection elencoDischi() {
  20.         return dischi.values();
  21.     }
  22.  
  23.     public HardDisk getDisk(char c) {
  24.         return (HardDisk)dischi.get(new Character(c));
  25.     }
  26. }
  27. package files;
  28.  
  29.  
  30. public class File {
  31.  
  32.     private long size;
  33.     private String name;
  34.  
  35.     public File(String name, long size) {
  36.         this.size = size;
  37.         this.name = name;
  38.     }
  39.  
  40.     public String getName() {
  41.         return name;
  42.     }
  43.  
  44.     public long getSize() {
  45.         return size;
  46.     }
  47.    
  48.     public String toString(){
  49.         return name + " (" + size + ")";
  50.     }
  51. }
  52. package files;
  53.  
  54. import java.util.ArrayList;
  55. import java.util.Collection;
  56. import java.util.Comparator;
  57. import java.util.Collections;
  58. import java.util.Iterator;
  59. import java.util.List;
  60. import java.util.Map;
  61. import java.util.StringTokenizer;
  62. import java.util.TreeMap;
  63.  
  64.  
  65. public class Folder {
  66.  
  67.     private Map folders = new TreeMap();
  68.     private Map files = new TreeMap();
  69.     private String name;
  70.     private Folder father;
  71.    
  72.     public Folder(String name) {
  73.         this.name = name;
  74.     }
  75.  
  76.     public void addFolder(Folder folder)
  77.             throws FolderAlreadyExisting {
  78.         if(folders.get(folder.name)!=null){
  79.             throw new FolderAlreadyExisting();
  80.         }
  81.         folders.put(folder.name,folder);
  82.         folder.father = this;
  83.     }
  84.  
  85.     public Object getFather() {
  86.         return father;
  87.     }
  88.  
  89.     public Folder getSubFolder(String name) {
  90. //      return (Folder)folders.get(name);
  91.         StringTokenizer st=new StringTokenizer(name,"/");
  92.         return getFolder(st);
  93.     }
  94.  
  95.     public void addFile(File file)
  96.                 throws FileAlreadyExisting {
  97.         addFile(file,false);
  98.     }
  99.  
  100.     public void addFile(File file, boolean forzaSostituzione)
  101.                 throws FileAlreadyExisting {
  102.         if(!forzaSostituzione && files.get(file.getName())!=null){
  103.             throw new FileAlreadyExisting();
  104.         }
  105.         files.put(file.getName(),file);
  106.     }
  107.  
  108.     public Collection elencoAlfabeticoFile() {
  109.         return files.values();
  110.     }
  111.  
  112.     long getSize(){
  113.         long size =5 * HardDisk.KB;
  114.         Iterator it = folders.values().iterator();
  115.         while(it.hasNext()){
  116.             size += ((Folder)it.next()).getSize();
  117.         }
  118.         Iterator fit = files.values().iterator();
  119.         while(fit.hasNext()){
  120.             size += ((File)fit.next()).getSize();
  121.         }
  122.         return size;
  123.     }
  124.  
  125.     public File getFile(String fileName) {
  126.         return (File)files.get(fileName);
  127.     }
  128.  
  129.     public Collection elencoSizeFile() {
  130.         List lista = new ArrayList(files.values());
  131.         Collections.sort(lista,
  132.             new Comparator(){
  133.                 public int compare(Object o1,Object o2){
  134.                     return (int)(((File)o1).getSize() - ((File)o2).getSize());
  135.                 }
  136.             });
  137.         return lista;
  138.     }
  139.    
  140.     Folder getFolder(StringTokenizer st){
  141.         if(!st.hasMoreTokens()){
  142.             return this;
  143.         }
  144.         Folder f = (Folder)folders.get(st.nextToken());
  145.         if(f!=null){
  146.             return f.getFolder(st);
  147.         }
  148.         return null;
  149.     }
  150. }
  151. package files;
  152. import java.awt.*;
  153. import java.awt.event.ActionEvent;
  154. import java.awt.event.ActionListener;
  155. import java.util.Collection;
  156.  
  157. import javax.swing.*;
  158. import javax.swing.event.ListSelectionEvent;
  159. import javax.swing.event.ListSelectionListener;
  160.  
  161.  
  162.  
  163.  
  164. public class FsGui extends JFrame
  165. implements ActionListener, ListSelectionListener {
  166.  
  167.   public static void main(String[] args){
  168.     FsGui f = new FsGui();
  169.    
  170.   }
  171.  
  172.   public JButton btAddDisk;
  173.   public JTextField diskSize;
  174.   public JComboBox diskUnit;
  175.   public JList diskList;
  176.  
  177.   public JTextField selDiskId;
  178.   public JTextField selDiskAvailable;
  179.   public JTextField selDiskSize;
  180.   public JButton btFormat;
  181.  
  182.   Computer computer = new Computer();
  183.  
  184.   public FsGui(){
  185.     super("File system");
  186.  
  187.     Container c = this.getContentPane();
  188.    
  189.     c.setLayout(new GridLayout(2,1));
  190.    
  191.     JPanel p1 = new JPanel();
  192.     c.add(p1);
  193.     //Container p1=c;
  194.    
  195.     p1.add(new JLabel("Size"));
  196.     p1.add(diskSize = new JTextField(10));
  197.     p1.add(diskUnit = new JComboBox(new String[]{"B","KB","MB","GB"}));
  198.     p1.add(btAddDisk = new JButton("Add disk"));   
  199.     p1.add(new JScrollPane(diskList = new JList()));
  200.     diskList.setVisibleRowCount(3);
  201.    
  202.     btAddDisk.addActionListener(this);
  203.     diskList.addListSelectionListener(this);
  204.    
  205.     JPanel p2 = new JPanel();
  206.     p2.add(new JLabel("Id:"));
  207.     p2.add(selDiskId = new JTextField(3));
  208.     p2.add(new JLabel("Size:"));
  209.     p2.add(selDiskSize = new JTextField(15));
  210.     p2.add(new JLabel("Avail:"));
  211.     p2.add(selDiskAvailable = new JTextField(15));
  212.     p2.add(btFormat = new JButton("Format"));
  213.     c.add(p2);
  214.    
  215.     btFormat.addActionListener(this);
  216.    
  217.     this.setSize(600,300);
  218.     this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  219.     this.setVisible(true);
  220.    
  221.   }
  222.  
  223.   public void actionPerformed(ActionEvent evt) {
  224.    
  225.     if(evt.getActionCommand().equals("Add disk")){
  226.         System.out.println("Size:" + diskSize.getText() +
  227.                         " " + diskUnit.getSelectedItem());
  228.                        
  229.         String unit = (String) diskUnit.getSelectedItem();
  230.         long multiplier=1;
  231.         if(unit.equals("KB")) multiplier = HardDisk.KB;
  232.         if(unit.equals("MB")) multiplier = HardDisk.MB;
  233.         if(unit.equals("GB")) multiplier = HardDisk.GB;
  234.  
  235.  
  236.         HardDisk hd = new HardDisk(Long.parseLong(diskSize.getText())*multiplier);
  237.    
  238.    
  239.         computer.add(hd);
  240.         updateDisks();
  241.     }
  242.     if(evt.getActionCommand().equals("Format")){
  243.         HardDisk hd = (HardDisk)diskList.getSelectedValue();
  244.         hd.format();
  245.         valueChanged(null);
  246.     }
  247.   }
  248.  
  249.   private void updateDisks() {
  250.     Collection disks = computer.elencoDischi();
  251.    
  252.     diskList.setListData(disks.toArray());
  253.   }
  254.  
  255.   public void valueChanged(ListSelectionEvent evt) {
  256.     HardDisk hd = (HardDisk)diskList.getSelectedValue();
  257.     if(hd==null){
  258.         selDiskId.setText("-");
  259.         selDiskSize.setText("");
  260.         selDiskAvailable.setText("");
  261.     }else{
  262.         selDiskId.setText(Character.toString(hd.getId()));
  263.         selDiskSize.setText(""+hd.getSize());
  264.         selDiskAvailable.setText(""+hd.getAvailable());
  265.     }
  266.   }
  267.  
  268.  
  269.  
  270. }package files;
  271.  
  272. import java.util.StringTokenizer;
  273.  
  274.  
  275. public class HardDisk {
  276.     public final static long KB=1024;
  277.     public final static long MB=1024*KB;
  278.     public final static long GB=1024*MB;
  279.  
  280.     private long size;
  281.     char id;
  282.     private Folder root;
  283.    
  284.     public HardDisk(long size) {
  285.         this.size=size;
  286.     }
  287.    
  288.     public char getId() {
  289.         return id;
  290.     }
  291.     public long getSize() {
  292.         return size;
  293.     }
  294.     public long getAvailable() {
  295.         if(root!=null)
  296.             return size-root.getSize();
  297.         else
  298.             return size;
  299.     }
  300.     public void format() {
  301.         root = new Folder("");
  302.     }
  303.    
  304.     public Folder getFolder(String path) {
  305. //      StringTokenizer st=new StringTokenizer(path,"/");
  306. //      Folder current = root;
  307. //      while(st.hasMoreTokens()){
  308. //          String element = st.nextToken();
  309. //          current = current.getFolder(element);
  310. //      }
  311. //      return current;
  312. // alternativa con la funzione ricorsiva
  313.         return root.getSubFolder(path);
  314.     }
  315.     public File getFile(String path) {
  316.         StringTokenizer st=new StringTokenizer(path,"/");
  317.         Folder current = root;
  318.         while(st.hasMoreTokens()){
  319.             String element = st.nextToken();
  320.             if(st.hasMoreTokens()){ // i.e. un folder
  321.                 current = current.getSubFolder(element);
  322.             }else{
  323.                 return current.getFile(element);
  324.             }
  325.         }
  326.         return null;
  327.     }
  328.    
  329.     public String toString(){
  330.         return id + ":";
  331.     }
  332. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement