Skip to content

Latest commit

 

History

History
44 lines (32 loc) · 1.63 KB

README.md

File metadata and controls

44 lines (32 loc) · 1.63 KB

Mailing System

A little Mailing client-server system, fully developed on Java!

GUI

Not really good looking ( I'm bad on "frontending" :( )

Client

Client View

Server

Server View

Architecture

The entire application is divided in 3 modules: client/, server/ and common/. The code inside the first two is structured following the Model View Controller(MVC) design pattern.

In client/,

  • Model: contains the Mail list of the currently logged in user, recovered from the server
  • Controller(s): handles the different GUIs (show current mail list, write new mail, show a single mail)

In server/:

  • Model (Mailboxes.java): handles the Mailboxes of the various users.
  • Controller (ServerLogController.java): to handle the incoming connections and the interaction with the Logging view

The common/ module contains what must be known either to the client and the server:

  • Mail: how a mail is composed
  • Request: how a request is composed
  • Response: how a response is composed

Most important classes

  • Requester: the only class which is responsible to interact with the server, by forging properly formatted Requests and handling the Responses. The multithreaded aspect is handled by using the concurrent module offered by JavaFX (ScheduledService, Service and Task).
  • Mailboxes: holds the core of the server side application, particularly enforcing encapsulation by hiding the Mailbox.java class

Pattern Used

  • Model View Controller (MVC)
  • Observer-Observable
  • Singleton

Technologies used

  • JavaFX
  • OpenCSV
  • SceneBuilder