CMSC 335 PROJECT 1,2 AND 3

CMSC 335 PROJECT 1,2 AND 3
Design and implement a basic File Transfer Protocol (FTP) command line tool. When executed, the tool will display a simple “ftp> “ prompt in the console where the user can enter commands to upload (put) and download (get) files from a remote server. The ftp4j library will be used to implement the actual protocol and file transfers. A remote FTP site and credentials will be provided for the project
The following classes or interfaces are provided as a starting point for the project:
• FTPBuilder.java: Provides methods for setting FTP related values and building an FTPClient instance or FTP URL.
• JobState.java: An enumeration of the possible transfer job states.
• TransferEngine.java: An interface defining a transfer engine that can manage multiple transfer jobs and perform the transfers. Different implementations may perform the transfers differently.
• TransferJob.java: An abstract base class providing basic transfer functionality including common fields and state management.
You must implement the following classes:
• ConsoleFtpApp.java: The main class of the application which will have the main() method and the core logic to prompt the user and process the user input.
• PutJob.java: A subclass of TransferJob that performs an FTP upload of a file to the remote host.
• GetJob.java: A subclass of TransferJob that performs and FTP download of a file from the remote host.
• SingleThreadedTransferEngine.java: An implementation of TransferEngine that performs all operations in a single thread (i.e. the same thread as the caller). Therefore operations like addJob(…) will block while the job is added and executed
The application must support the following commands at the prompt. You can assume that the user input will be valid (i.e. the user will provide the correct command names and number of arguments).
• connect : Sets the remote credentials and remote host and port to use for all connections. Starts the transfer engine.
• put : Puts (uploads) the file with the given name in the current directory to the remote host. The implementation does not have to support spaces in filenames.
• get : Gets (downloads) the file with the given name into the current directory from the remote host. The implementation does not have to support spaces in filenames.
• jobs: Lists all jobs in the transfer engine and the status of the job.
• exit: Stops the transfer engine and cleanly exits the application.
• help: Displays these commands
Be sure to read through the provided classes and interfaces carefully as they provide code and documentation that will be useful when implementing the application. Future projects in this class will reuse the core parts of this project (e.g. the transfer engine and jobs) so implement them correctly, cleanly, and with proper documentation in order to save time later. Ask questions in the online classroom on via email if you are struggling with any part of the assignment
A remote FTP site will be available for testing and host and authentication information will be provided to you. You may connect to the FTP server using a separate FTP client (such as Finder OSX or Explorer on Windows) to verify your transfers. The files on the FTP server may be periodically cleaned out and are visible to all other students so use common sense when choosing files to transfer during testing
The ftp4j library can be downloaded from http://www.sauronsoftware.it/projects/ftp4j/download.php. The ftp4j-1.7.2.jar file must be added as a library dependency to your project in your IDE. This may be the first time you are using a third party library in an assignment so be sure to leave extra time to familiarize yourself with the library and how to use it. The documentation for ftp4j (including JavaDocs) can be found at http://www.sauronsoftware.it/projects/ftp4j/manual.php. Note that other than aborting a transfer (which you are not implementing in this assignment), the ftp4j library is not thread-safe so a single FTPClient object should only ever be accessed in a single thread. You should therefore design your solution to have one FTPClient instance used by the UI thread and then one instance per transfer job
Refer to the example output for details on prompts, input, and output.
All code must be properly documented with JavaDoc style class, method, and field comments and inline code comments. All code must be properly formatted and indented for readability. Java style guidelines and conventions must be used for class, method, field, and variable naming
Deliverables
Demonstrate that your code compiles and runs without issue using the command
line JDK tools (i.e. javac and java). You can use screen captures to demonstrate this
functionality in a Word document. Be sure to include enough cases to verify
functionality and to represent adequate testing of the application.
The Word document must also include a “Lessons Learned” section in which you
provide lessons learned while developing the application including (but not limited
to):
• What was the most challenging part?
• What are the limitations of the current implementation?
• What improvements or new features could be added?
• How might you add features like remote file deletion and directory listing?
• How could the assignment be improved?
• What are the key lessons learned that you would take into future
assignments?
Your completed assignment should consist of all the “.java” implementation files and
the “.doc(x)” documentation file. Do not include the ftp4j “.jar” library file or any
“.class” compile files. Do not copy and paste your Java code into the Word document.
Submit these files to your project 1 assignment area no later than the due date listed
in the syllabus.
CMSC 335 Project 2
Design and implement a basic File Transfer Protocol (FTP) graphical user interface tool. When executed, the tool will display a UI where the user can upload (put) and download (get) files from a remote server. The ftp4j library will be used to implement the actual protocol and file transfers. A remote FTP site and credentials will be provided for the project
This project reuses classes implemented in Project 1. You should be able to use the classes with little to no modification. The classes (and related parent classes) to be reused are:
• PutJob.java: A subclass of TransferJob that performs an FTP upload of a file to
the remote host.
• GetJob.java: A subclass of TransferJob that performs and FTP download of a
file from the remote host.
• SingleThreadedTransferEngine.java: An implementation of TransferEngine
that performs all operations in a single thread (i.e. the same thread as the
caller). Therefore operations like addJob(…) will block while the job is added
and executed
The UI must contain the following features:
• A host text field: For entering the remote host name.
• A port text field: For entering the remote port number.
• A username text field: For entering the user name for remote authentication.
• A password password input field: For entering the password for remote
authentication.
• A connect button: Creates the FTPBuilder using the host, port, username, and
password. Starts the transfer engine. Creates an FTPClient to be used by the
main UI thread.
• A put button: Transfers the selected local file to the remote site. If not file is
selected in the local file list, this button does nothing.
• A get button: Transfers the selected remote file to the local site. If not file is
selected in the remote file list, this button does nothing.
• A console text area: A non-editable text area for displaying user feedback and
job status information.
• A refresh button: Refreshes the local file list, remote file list, and appends the
status of all jobs to the console text area.
• A local file list: Displays the files in the current local directory (i.e. the
directory the application was launched in).
A remote file list: Displays the files in the remote directory (i.e. the default
home directory on the remote FTP server).
Refer to the example screenshot for a suggested layout. You may use the NetBeans
UI Builder for this project.
The general functionality is the same as with project 1. A user can upload and
download files but rather than with the console prompt, the user can use a simple
UI. You do not need to implement directory browsing so the local file list will always
be for the current directory and the remote file list will always be for the default
home directory of the user (refer to FTPClient.currentDirectory()).
Future projects in this class will reuse the core parts of this project (e.g. the transfer
engine, jobs, and UI) so implement them correctly, cleanly, and with proper
documentation in order to save time later. Ask questions in the online classroom on
via email if you are struggling with any part of the assignment.
Refer to Project 1 for information on the ftp4j library and the FTP site information
for testing will be provided to you.
All code must be properly documented with JavaDoc style class, method, and field
comments and inline code comments. All code must be properly formatted and
indented for readability. Java style guidelines and conventions must be used for
class, method, field, and variable naming.
Deliverables
Demonstrate that your code compiles and runs without issue using the command
line JDK tools (i.e. javac and java). You can use screen captures to demonstrate this
functionality in a Word document. Be sure to include enough cases to verify
functionality and to represent adequate testing of the application.
The Word document must also include a “Lessons Learned” section in which you
provide lessons learned while developing the application including (but not limited
to):
• What was the most challenging part?
• What are the limitations of the current implementation?
• What improvements or new features could be added?
• How might you add features like remote file deletion and directory listing?
• How could the assignment be improved?
• What are the key lessons learned that you would take into future
assignments?
Your completed assignment should consist of all the “.java” implementation files and
the “.doc(x)” documentation file. Do not include the ftp4j “.jar” library file or any
“.class” compile files. Do not copy and paste your Java code into the Word document.
Submit these files to your project 2 assignment area no later than the due date listed
in the syllabus.
Grading
Refer to the “Assignment Rubric” in the online classroom for a breakdown of the
grading areas and point distributions.
Example Program Execution
The following is an example execution of the application. Note that the remote host
will be different and the file names and directories may be different
CMSC 335 Project 3
Design and implement a basic File Transfer Protocol (FTP) graphical user interface tool. When executed, the tool will display a UI where the user can upload (put) and download (get) files from a remote server. The ftp4j library will be used to implement the actual protocol and file transfers. A remote FTP site and credentials will be provided for the project
This project reuses classes implemented in Project 2. You should be able to use the
classes with little to no modification. The classes (and related parent classes) to be
reused are:
• PutJob.java: A subclass of TransferJob that performs an FTP upload of a file to
the remote host.
• GetJob.java: A subclass of TransferJob that performs and FTP download of a
file from the remote host
Two new classes will be introduced:
• MultiThreadedTransferEngine.java: An implementation of TransferEngine
that performs all operations in separate threads. Each addJob(…) operation
will create and start a new job for the thread. The class must be thread-safe;
that is, adding a job or getting the list of jobs while jobs are executing in
separate threads are all possible operations. The engine must keep track of
the jobs and threads so it can properly block when stop() is called if there are
active transfer jobs.
• JobTableModel.java: An implementation of
javax.swing.table.AbstractTableModel that has a single constructor that takes
a Collection of TransferJobs. The table model can be set on a Swing JTable to
display 4 columns of job related data: source, destination, progress, and error
message
The UI must contain the following additional features; that is, features beyond those
already supported in project 2:
• A jobs table: For displaying the added jobs and the transfer progress. The
jobs will no longer be displayed in the console text area. The table must have
4 columns defined by the JobTableModel described previously.
• A refresh timer: For refreshing the jobs in the job table. The timer must fire
every 5 seconds and update/replace the model on the jobs table. Be sure to
use the Swing Timer so it can operate safely on the UI.
• A refresh button: Refreshes the local file list and remote file list. The refresh
no longer appends the status of all jobs to the console text area because the
jobs are now listed in the table.
Refer to the example screenshot for a suggested layout. You may use the NetBeans UI Builder for this project
The general functionality is the same as with project 2. A user can upload and download files using a simple UI but the UI will not block while a transfer is in progress and multiple transfers can be in progress simultaneously. You do not need to implement directory browsing so the local file list will always be for the current directory and the remote file list will always be for the default home directory of the user (refer to FTPClient.currentDirectory()).
Future projects in this class will reuse the core parts of this project (e.g. the transfer engine, jobs, and UI) so implement them correctly, cleanly, and with proper documentation in order to save time later. Ask questions in the online classroom on via email if you are struggling with any part of the assignment.
Refer to Project 1 for information on the ftp4j library and the FTP site information for testing will be provided to you
All code must be properly documented with JavaDoc style class, method, and field comments and inline code comments. All code must be properly formatted and indented for readability. Java style guidelines and conventions must be used for class, method, field, and variable naming
Demonstrate that your code compiles and runs without issue using the command line JDK tools (i.e. javac and java). You can use screen captures to demonstrate this functionality in a Word document. Be sure to include enough cases to verify functionality and to represent adequate testing of the application
The Word document must also include a “Lessons Learned” section in which you
provide lessons learned while developing the application including (but not limited
to):
• What was the most challenging part?
• What are the limitations of the current implementation?
• What improvements or new features could be added?
• How might you add features like remote file deletion and directory listing?
• How could the assignment be improved?
• What are the key lessons learned that you would take into future
assignments?
Your completed assignment should consist of all the “.java” implementation files and the “.doc(x)” documentation file. Do not include the ftp4j “.jar” library file or any “.class” compile files. Do not copy and paste your Java code into the Word document. Submit these files to your project 2 assignment area no later than the due date listed in the syllabus
[contact-form-7 id=”232″ title=”Contact form 1″]

Order This Solution

Ask your homework question

 

INDIVIDUAL APPROACH:
Chat with every writer who applies to your request, and view their skills and portfolio. Make the choice that’s right for you.
MANAGE YOUR ORDER:
Monitor progress and see any changes made. Have full control over every phase of the process.
COMMUNICATE:
Ask your writer questions and provide your ideas about your paper. Produce the exact result that you want.
ENJOY THE OUTCOME:
Get everything done on time with high quality. Writing papers is much simpler with us.

Ask your homework question

 

© 2017 theacademicessays. All Rights Reserved. Design & Developed by theacademicessays.
Loading...