Team 1 - rsanchez-wsu/jfiles GitHub Wiki

Team Members

Jon Joyce (Team Leader)

Email: [email protected] GitHub: joyceje Slack: joyceje

Michael Omlor (The Scribe)

Email: [email protected] GitHub: w030mao Slack: omlor.6

Sam Willoughby (The Freaking New Guy)

Email: [email protected] GitHub: Swilloughby-github Slack: samuelwilloughby

Josh Cunningham (Bus Fodder)

Email: [email protected] GitHub: cunningham124 Slack: cunningham124

Pages

Team 1

  1. Methods
  2. JFilesServer 1. sendFile 1. getFile
  3. JFiles Client 1. fileCommand 1. fileSendCommand 1. getFileName
  4. Checksum Guide
  5. Networking Guide
  6. Network Utilities
  7. Package SocketManager
  8. Test Plans
  9. File Transfer
  10. Checksum Test
  11. Thread Management Test
  12. Remote Objects
  13. RMI Overview
  14. Implementing a Remote Interface
  15. Parameter Passing in Remote Method Invocation
  16. Locating Remote Objects
  17. Remote Server-Client Program

Information


**Note to next team**        
This branch has a lot of features that will definitely need to be tested more to find any issues. We started off by adding a lot of things and ended up not having enough time to test it all thoroughly. A good place to start will be reading through our code and then possibly setting up some test plans to make sure it is all working how it should be. We have listed some ideas for possible features that could be added below. Also, feel free to shoot an email to us if you are unsure of anything we have added.

**Ideas for what's next** 
* Retool of the custom packets: It is not currently integrated well.
* Be able to run the checksums on packets: This would increase the time for handling request by not rejecting the whole file. 
* Encryption: 
* Be able to send more than just text file: Currently it is hard coded to only sent text files.
* Make a request to pull from another clients computers: So the server doesn't have to store all the files.
* Version control for the files: To prevent any over writing or unwanted deletion.

**Networking**
* Encrypting Files
* TCP Connection
* Indicating when sending take and finishing
* statefull vs stateless

**Client**
* User Manual
* Needs to Cache files
* Makes a persistent Database
* Packaged program to be usable
* Create a help command to list possible commands to issue to the server


**Server**
* Login
* Account privilege
* Being able to Parse XML File
* Gathering Local File System information
* Store Files
* Set File permissions
* Should Indicate if file has an issue

**GUI Interface**
* Window Manipulation (and continue to be usable)
* Home Directory
* Drag and drop files
* Back button
* Navigation Bar
* File Information
* Icons
* Search function

**Documentation**
* Create a template so documentation has a consistent format
* Broad overview summary of what the program does
* Parameters and return values for methods
* Make documentation clear and concise with proper grammar
* Create categories
* Create references in documentation to other documents (links)
* Class documents (with references to methods' documentation contained inside that class)
* Pictures/Screenshots?
* Make sure documentation describes HOW as well as WHY for methods
* diagramming for overall project (UML)
* Signatures and an Audit Log for when it was last modified
* Documenting common errors

**Error Handling**
* Server - Error
   * Connection Error -inform the user
      * Auto reconnect
      * Stop attempting to reconnect and prompt user
   * Server Malfunction
      * Not attempt to reconnect and inform the admin. 
   * How a server handles a client error
   * Saving state when an error handles
   * Auto roll back?

* Client - Error
   * GUI - how this will interact with our system 
   * How to handle all logging messages
   * What info will be sent to the Server

**Testing Plan**
* Being able to simulate transfers
* Simulate short and long term usage
* Standardize each test
* Limit testing
* Every time a method gets added modify test plan. 
* Each test plan should based on class. 


**Things to test**
*Transmission
   * Send improper file.
   * Send file and cancel
   * Receive a proper file.
   * Receive an improper file. 
   * Receive and have cancel transmission. 
* GUI
   * GUI common interactions
   * GUI attempt to break it. 
   * Sending proper files. 
* Logs
* Server
* Client

* Last thing to attempt is to break the program