package monitor.core;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JTextField;
import toolkit.List;
import change.DiskSpaceChangeEvent;
import change.DiskSpaceChangeEventSource;
import change.DiskSpaceListener;
// observado, gerador, produtor
public class MonitorEngine implements DiskSpaceChangeEventSource {
private long freeSpace = 0;
private final String path;
private List<DiskSpaceListener> ouvintes
= new List<DiskSpaceListener>();
@Override
public void addDiskSpaceListener(DiskSpaceListener l) {
ouvintes.append(l);
}
@Override
public void removeDiskSpaceListener(DiskSpaceListener l) {
// ouvintes.remove(l);
}
public MonitorEngine(final String path) {
this.path = path;
}
public long getFreeSpace() {
return freeSpace;
}
public String getPath() {
return path;
}
public void inicia() {
final File dir = new File(getPath());
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
System.out.println("tic");
if (dir.getFreeSpace() != freeSpace) {
freeSpace = dir.getFreeSpace();
System.out.println("new free space " + freeSpace);
for (int i = 0; i < ouvintes.length(); i++) {
DiskSpaceListener ouvinte = ouvintes.get(i);
ouvinte.onDiskSpaceChange(new DiskSpaceChangeEvent(freeSpace));
}
}
Thread.sleep(1000);
} catch (Exception e) {
System.err.println(e);
}
}
}
}).start();
}
}