diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..c6caaf4 Binary files /dev/null and b/.DS_Store differ diff --git a/.idea/JavaFileManager.iml b/.idea/JavaFileManager.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/.idea/JavaFileManager.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 3f507c9..29fac82 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -7,6 +7,7 @@ + diff --git a/.idea/misc.xml b/.idea/misc.xml index accd629..132404b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/HelpForFileManager b/HelpForFileManager new file mode 100644 index 0000000..2bf2a5d --- /dev/null +++ b/HelpForFileManager @@ -0,0 +1,87 @@ +# Help for File Manager + + +## Class Descriptions +- **FileManager**: asdf + +-**FileOperator**: asdf + +-**Console**: Prompts user for String. Saves entered String to a variable. Makes String lowercase and trims whitespace. Returns formatted String + +## Commands in FileManager class +-list: +-info: +-mkdir: +-rename: +-copy: +-move: +-delete: +-quit: + +## Commands in FileOperator class + +## Commands in Console class + + + +This is a very simple file management _shell_, it shows how to manipulate files using java standard library calls. +Available commands: +- `list` a folder +- `info` on on a file +- `mkdir` make a new folder +- `rename` a file +- `copy`, `move`, `delete` files +- `quit` the file manager shell + +There are three classes in this app: *FileManager*, *FileOperator* and *Console* in `src/main/java`. +Each class a different reason for being. +There is a simple file hierarchy for manual testing in the _test_ folder. +You can use the _test_ folder for doing simple file manipulations. + +## Your task... + +You should create a page of documentation in the [Help for FileManager](FileManager.md) file describing how you use +each of the commands the program provides. +You can use [Mastering Markdown](https://guides.github.com/features/mastering-markdown/) to learn more about what +markdown is and how you use it to write markdown files. +There is also info at [Wikipedia : Markdown](https://en.wikipedia.org/wiki/Markdown). + +Write a short summary of what each command does and how it is used. +Give a real example of what the user would see using each command. +Edit the [Help for FileManager](FileManager.md) file with your explanatory text. + +## Things to consider + +Why are the manipulation commands, the things that affect files and folders, in a different class than +the _file manager_ itself? + +Why is all the input and output factored out into a separate class? + +Why is Copy/Move in the same method? What about the two operations are so much the same? +How would you separate them? Would it make it more understandable or less to separate them? + +What would you have to do to: + +- add the idea of a _current folder_? +- how would you add a _change folder_ command? +- how would you add a command to display the contents of a file? +- how would you change _list_ to show the difference between files and folders? +- how could you clean up some of the code by using an _enum_ instead of strings for the commands? +- how would you use the _FileOperator_ class to test the _FileOperator_ class? + +How would you test this code? +How are the testing methods different for each class? +Which class cannot be easily tested wit unit tests? + +Does the code, as is, have any obvious bugs? +How would find out? + +Why is the Console passed as a parameter to the two constructors? + +## Summary + +This code is meant for you to read and consider how you might do some of these things. +You can, of course, attempt any of the suggested changes that you'd like. +You need not do so, though, yet, it might be a good activity to do after you've spent some +time working on other labs, so that your changes are nice and clean and concise. + diff --git a/HelpForFileManager.md b/HelpForFileManager.md new file mode 100644 index 0000000..9b22bb6 --- /dev/null +++ b/HelpForFileManager.md @@ -0,0 +1,37 @@ +# Help for File Manager + + +## Class Descriptions +- **FileManager**: Prompts user for a command. Processes the command if the command is valid. +- **FileOperator**: Used to create FileOperator object. Methods are commands used for file management. +- **Console**: Used to create Console object that prompts user for String, saves the entered String to a variable, makes the String lowercase, trims whitespace, and returns the formatted String. + +## Commands in FileManager class + +Create object of type FileOperator by passing in a Console object.\ +`FileOperator myFileOperator = new FileOperator(myConsole);` + +- *list*: Prompts user to enter folder path. Checks whether path exists and is a directory. Returns string of file names if the folder is not empty.\ +`myFileOperator.list("Desktop/Projects/);` + +- *info*: Prompts user for file/folder path. Returns name, absolute path, relative path, and size of file/folder.\ +`myFileOperator.info(Desktop/Projects/myFile.txt");` + +- *mkdir*: Prompts user for new folder path. Makes sure a folder with same name does not already exist. Makes sure folder name is appropriate. Creates new folder.\ +`myFileOperator.mkdir(Desktop/Projects/myNewFolder");` + +- *rename*: Prompts user for path of file/folder to rename. Renames file/folder if it exists.\ +`myFileOperator.rename(myFile.txt,myRenamedFile.txt);` + +- *copy*: Prompts user for file/folder to copy. Copies that file/folder if it exists.\ +`myFileOperator.copy("Desktop/Projects/myFile.txt");` + +- *move*:Prompts user for path of file/folder to copy and move and destination path. Moves the file/folder.\ +`myFileOperator.move("Desktop/Projects/myFile.txt,Desktop/");` + +- *delete*:Prompts user for path of file/folder they want to delete. Checks if file/folder exists and then deletes file/folder.\ +`myFileOperator.delete("Desktop/Projects/myRenamedFile.txt");` + +- *quit*: Ends program.\ +`myFileOperator.quit();` + diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000..7b0d367 Binary files /dev/null and b/src/.DS_Store differ diff --git a/src/main/.DS_Store b/src/main/.DS_Store new file mode 100644 index 0000000..55c1fcb Binary files /dev/null and b/src/main/.DS_Store differ diff --git a/src/main/java/FileOperator.java b/src/main/java/FileOperator.java index 4148e8e..2970958 100644 --- a/src/main/java/FileOperator.java +++ b/src/main/java/FileOperator.java @@ -26,8 +26,8 @@ public void list(String path){ if(path1.exists() && path1.isDirectory()){ String[] lista = path1.list(); if(lista.length == 0){ - cons.sendMessage("Folder is empty."); - } else { + cons.sendMessage("Folder is empty."); } + else { for (String s : lista) { cons.sendMessage(s); } diff --git a/src/main/java/String.java b/src/main/java/String.java new file mode 100644 index 0000000..a5a1178 --- /dev/null +++ b/src/main/java/String.java @@ -0,0 +1,2 @@ +public class String { +} diff --git a/test/.DS_Store b/test/.DS_Store new file mode 100644 index 0000000..f0d5639 Binary files /dev/null and b/test/.DS_Store differ