Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package files;
- import java.util.Collection;
- import java.util.Map;
- import java.util.TreeMap;
- public class Computer {
- Map dischi = new TreeMap();
- private char next = 'C';
- public void add(HardDisk hd) {
- hd.id = next;
- next ++;
- dischi.put(new Character(hd.id),hd);
- }
- public Collection elencoDischi() {
- return dischi.values();
- }
- public HardDisk getDisk(char c) {
- return (HardDisk)dischi.get(new Character(c));
- }
- }
- package files;
- public class File {
- private long size;
- private String name;
- public File(String name, long size) {
- this.size = size;
- this.name = name;
- }
- public String getName() {
- return name;
- }
- public long getSize() {
- return size;
- }
- public String toString(){
- return name + " (" + size + ")";
- }
- }
- package files;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.Comparator;
- import java.util.Collections;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import java.util.StringTokenizer;
- import java.util.TreeMap;
- public class Folder {
- private Map folders = new TreeMap();
- private Map files = new TreeMap();
- private String name;
- private Folder father;
- public Folder(String name) {
- this.name = name;
- }
- public void addFolder(Folder folder)
- throws FolderAlreadyExisting {
- if(folders.get(folder.name)!=null){
- throw new FolderAlreadyExisting();
- }
- folders.put(folder.name,folder);
- folder.father = this;
- }
- public Object getFather() {
- return father;
- }
- public Folder getSubFolder(String name) {
- // return (Folder)folders.get(name);
- StringTokenizer st=new StringTokenizer(name,"/");
- return getFolder(st);
- }
- public void addFile(File file)
- throws FileAlreadyExisting {
- addFile(file,false);
- }
- public void addFile(File file, boolean forzaSostituzione)
- throws FileAlreadyExisting {
- if(!forzaSostituzione && files.get(file.getName())!=null){
- throw new FileAlreadyExisting();
- }
- files.put(file.getName(),file);
- }
- public Collection elencoAlfabeticoFile() {
- return files.values();
- }
- long getSize(){
- long size =5 * HardDisk.KB;
- Iterator it = folders.values().iterator();
- while(it.hasNext()){
- size += ((Folder)it.next()).getSize();
- }
- Iterator fit = files.values().iterator();
- while(fit.hasNext()){
- size += ((File)fit.next()).getSize();
- }
- return size;
- }
- public File getFile(String fileName) {
- return (File)files.get(fileName);
- }
- public Collection elencoSizeFile() {
- List lista = new ArrayList(files.values());
- Collections.sort(lista,
- new Comparator(){
- public int compare(Object o1,Object o2){
- return (int)(((File)o1).getSize() - ((File)o2).getSize());
- }
- });
- return lista;
- }
- Folder getFolder(StringTokenizer st){
- if(!st.hasMoreTokens()){
- return this;
- }
- Folder f = (Folder)folders.get(st.nextToken());
- if(f!=null){
- return f.getFolder(st);
- }
- return null;
- }
- }
- package files;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.util.Collection;
- import javax.swing.*;
- import javax.swing.event.ListSelectionEvent;
- import javax.swing.event.ListSelectionListener;
- public class FsGui extends JFrame
- implements ActionListener, ListSelectionListener {
- public static void main(String[] args){
- FsGui f = new FsGui();
- }
- public JButton btAddDisk;
- public JTextField diskSize;
- public JComboBox diskUnit;
- public JList diskList;
- public JTextField selDiskId;
- public JTextField selDiskAvailable;
- public JTextField selDiskSize;
- public JButton btFormat;
- Computer computer = new Computer();
- public FsGui(){
- super("File system");
- Container c = this.getContentPane();
- c.setLayout(new GridLayout(2,1));
- JPanel p1 = new JPanel();
- c.add(p1);
- //Container p1=c;
- p1.add(new JLabel("Size"));
- p1.add(diskSize = new JTextField(10));
- p1.add(diskUnit = new JComboBox(new String[]{"B","KB","MB","GB"}));
- p1.add(btAddDisk = new JButton("Add disk"));
- p1.add(new JScrollPane(diskList = new JList()));
- diskList.setVisibleRowCount(3);
- btAddDisk.addActionListener(this);
- diskList.addListSelectionListener(this);
- JPanel p2 = new JPanel();
- p2.add(new JLabel("Id:"));
- p2.add(selDiskId = new JTextField(3));
- p2.add(new JLabel("Size:"));
- p2.add(selDiskSize = new JTextField(15));
- p2.add(new JLabel("Avail:"));
- p2.add(selDiskAvailable = new JTextField(15));
- p2.add(btFormat = new JButton("Format"));
- c.add(p2);
- btFormat.addActionListener(this);
- this.setSize(600,300);
- this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
- this.setVisible(true);
- }
- public void actionPerformed(ActionEvent evt) {
- if(evt.getActionCommand().equals("Add disk")){
- System.out.println("Size:" + diskSize.getText() +
- " " + diskUnit.getSelectedItem());
- String unit = (String) diskUnit.getSelectedItem();
- long multiplier=1;
- if(unit.equals("KB")) multiplier = HardDisk.KB;
- if(unit.equals("MB")) multiplier = HardDisk.MB;
- if(unit.equals("GB")) multiplier = HardDisk.GB;
- HardDisk hd = new HardDisk(Long.parseLong(diskSize.getText())*multiplier);
- computer.add(hd);
- updateDisks();
- }
- if(evt.getActionCommand().equals("Format")){
- HardDisk hd = (HardDisk)diskList.getSelectedValue();
- hd.format();
- valueChanged(null);
- }
- }
- private void updateDisks() {
- Collection disks = computer.elencoDischi();
- diskList.setListData(disks.toArray());
- }
- public void valueChanged(ListSelectionEvent evt) {
- HardDisk hd = (HardDisk)diskList.getSelectedValue();
- if(hd==null){
- selDiskId.setText("-");
- selDiskSize.setText("");
- selDiskAvailable.setText("");
- }else{
- selDiskId.setText(Character.toString(hd.getId()));
- selDiskSize.setText(""+hd.getSize());
- selDiskAvailable.setText(""+hd.getAvailable());
- }
- }
- }package files;
- import java.util.StringTokenizer;
- public class HardDisk {
- public final static long KB=1024;
- public final static long MB=1024*KB;
- public final static long GB=1024*MB;
- private long size;
- char id;
- private Folder root;
- public HardDisk(long size) {
- this.size=size;
- }
- public char getId() {
- return id;
- }
- public long getSize() {
- return size;
- }
- public long getAvailable() {
- if(root!=null)
- return size-root.getSize();
- else
- return size;
- }
- public void format() {
- root = new Folder("");
- }
- public Folder getFolder(String path) {
- // StringTokenizer st=new StringTokenizer(path,"/");
- // Folder current = root;
- // while(st.hasMoreTokens()){
- // String element = st.nextToken();
- // current = current.getFolder(element);
- // }
- // return current;
- // alternativa con la funzione ricorsiva
- return root.getSubFolder(path);
- }
- public File getFile(String path) {
- StringTokenizer st=new StringTokenizer(path,"/");
- Folder current = root;
- while(st.hasMoreTokens()){
- String element = st.nextToken();
- if(st.hasMoreTokens()){ // i.e. un folder
- current = current.getSubFolder(element);
- }else{
- return current.getFile(element);
- }
- }
- return null;
- }
- public String toString(){
- return id + ":";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement