import EDU.neu.ccs.demeter.dj.*; //import EDU.neu.ccs.demeter.dj.ClassGraph; import DuVisitor; import Node; import HardLink; import SoftLink; import java.util.*; public class Directory extends Node { Directory() { listIterator = new Vector(); setSize(11); } Directory(String name) { setName(name); setSize(11); listIterator = new Vector(); } int GetTotalSize(String option) { // Commented out the next 2 lines to introduce DJ. /* Accept(du); return (du.getSize()); */ Strategy sg = new Strategy("from Directory to {SoftLink, File}"); TraversalGraph tg = TraversalGraph.compute(OS.cg, sg); DuVisitor v = new DuVisitor(option); tg.traverse(this, v); return (v.getSize()); } /* void Accept(DuVisitor du) { for (int i = 0; i < listIterator.size(); i++) { Node n = (Node) listIterator.elementAt(i); n.Accept(du); } du.before(this); } */ Directory Mkdir(String name) { // add some checking for path and to check if directory // already exists. if (hasWritePermissions()) { Directory dir = new Directory(name); listIterator.addElement(dir); return (dir); } else { System.out.println("You don't have write permissions"); return (null); } } void CreateFile(String name) { // if (hasWritePermissions()) // { File f = new File(name); listIterator.addElement(f); // } // else // System.out.println("You don't have write permissions"); } void CreateHardLink(String name , Node linkTo) { HardLink l = new HardLink(name); listIterator.addElement(linkTo); } void CreateSoftLink(String name , Node linkTo) { SoftLink l = new SoftLink(name,linkTo); listIterator.addElement(l); } void List() { for (int i = 0; i < listIterator.size(); i++) { Node n = (Node) listIterator.elementAt(i); System.out.print(" " + n.getName()); } } void moveFile(String f1, String name) { for (int i = 0; i < listIterator.size(); i++) { Node n = (Node) listIterator.elementAt(i); if (n.getName().equals(f1)) { n.setName(name); listIterator.setElementAt(n,i); return; } } } public boolean hasWritePermissions() { return(true); } Vector listIterator; }