Skip to content

elc117/aplicacao-2024b-joselitosn

Repository files navigation

User Story

Como um usuário, eu quero agendar notificações para datas e horários futuros, para que eu possa receber lembretes ou informações importantes no momento apropriado, através de diferentes plataformas de notificação, como e-mail e notificações push no celular.

Classes

Singleton

classDiagram
    class DatabaseManager {
        -DatabaseManager instance
        -DatabaseProvider provider
        -Connection connection
        -EventManager events
        
        -DatabaseManager(provider)
        +getInstance()
        +getInstance(provider)
        +getConnection()
        +closeConnection()
    }
    
    class LogManager {
        -LogManager instance
        -Logger logger
        
        -LogManager(logger)
        +getInstance()
        +getInstance(logger)
        +getLogger()
        +log(message)
    }
Loading

Builder

classDiagram
    class DatabaseProvider {
        #String url
        #Properties properties
        
        #DatabaseProvider(Builder builder)
        +getConnection() Connection
        +closeConnection()
    }
    
    class Builder {
        #String url
        #Properties properties
        
        url(url) Builder
        database(database) Builder
        username(username) Builder
        password(password) Builder
        build() DatabaseProvider
    }
    
    class SQLiteProvider {
         -SQLiteProvider(builder)
         +toString()
    }
    
    class MySQLProvider {
        -MySQLProvider(builder)
        +toString()
    }
    
    DatabaseProvider --o Builder : possui
    DatabaseProvider <|-- SQLiteProvider : Herança
    DatabaseProvider <|-- MySQLProvider : Herança
Loading

Chain of Responsibility

classDiagram
    class NotificationHandler {
        -NotificationHandler nextHandler
        
        +setNextHandler(nextHandler)
        +handle(notification)
    }
    
    class SMTPNotification {
        -String destination
        
        +SMTPNotification(destination)
        +handle(notification)
    }

    class NtfyNotification {
        -String destination
        -String topic

        +NtfyNotification(destination, topic)
        +handle(notification)
    }
    
    NotificationHandler <|-- SMTPNotification : Herança
    NotificationHandler <|-- NtfyNotification : Herança
Loading

Observer

classDiagram
    class EventListener {
        <<interface>>
        update(eventType, message)
    }
    
    class EventManager {
        -Map < String, List < EventListener >> listeners
        
        +EventManager(String... operations)
        +subscribe(eventType, listener)
        +unsubscribe(eventType, listener)
        +notify(eventType, message)
        +getListeners() Map < String, List < EventListener >>
    }
    
    class LogEventListener {
        -Logger logger
        
        +LogEventListener(logger)
        +update(eventType, message)
    }
    
    EventListener <-- LogEventListener : estende
    EventManager "1" --o "0..*" LogEventListener : possui
Loading

Facade

classDiagram
    class DatabaseManager {
        -DatabaseManager instance
        -DatabaseProvider provider
        -Connection connection
        -EventManager events

        -DatabaseManager(provider)
        +getInstance()
        +getInstance(provider)
        +getConnection()
        +closeConnection()
    }

    class LogManager {
        -LogManager instance
        -Logger logger
        
        -LogManager(logger)
        +getInstance()
        +getInstance(logger)
        +getLogger()
        +log(message)
    }
Loading

Outros

classDiagram
    class App {
        +main(String[] args)
        +createTables(connection)
    }
    
    class NotificationScheduleGUI {
        -JTextField titleField
        -JTextArea messageArea
        -JSpinner dateTimeSpinner
        
        +NotificationScheduleGUI()
    }
Loading

Diagramas de Sequência

Builder

sequenceDiagram
    participant Main
    participant DatabaseManager
    participant SQLiteProvider.Builder
    participant SQLiteProvider

    Main->>+DatabaseManager: getInstance()
    DatabaseManager->>+SQLiteProvider.Builder: new SQLiteProvider.Builder()
    SQLiteProvider.Builder-->>-DatabaseManager: builder
    DatabaseManager->>+SQLiteProvider.Builder: url(url)
    SQLiteProvider.Builder-->>-DatabaseManager: builder
    DatabaseManager->>+SQLiteProvider.Builder: build()
    SQLiteProvider.Builder->>+SQLiteProvider: new SQLiteProvider(this)
    SQLiteProvider-->>-SQLiteProvider.Builder: provider
    SQLiteProvider.Builder-->>-DatabaseManager: provider
    DatabaseManager->>+DatabaseManager: getInstance(provider)
    DatabaseManager-->>-Main: instance
Loading

Observer

sequenceDiagram
    participant Main
    participant DatabaseManager
    participant EventManager
    participant LogEventListener
    participant LogManager

    Main->>+DatabaseManager: getInstance()
    DatabaseManager->>+EventManager: new EventManager("connect","disconnect")
    EventManager-->>-DatabaseManager: events
    DatabaseManager-->>-Main: instance

    Main->>+LogManager: getInstance()
    LogManager-->>-Main: logManager
    Main->>+LogManager: getLogger()
    LogManager-->>-Main: logger
    Main->>+LogEventListener: new LogEventListener(logger)
    LogEventListener-->>-Main: logEventListener
    Main->>+DatabaseManager: registerSubscriber(logEventListener)
    DatabaseManager->>EventManager: subscribe("connect", logEventListener)
    DatabaseManager->>EventManager: subscribe("disconnect", logEventListener)

    Main-->+DatabaseManager: getConnection()
    DatabaseManager->>EventManager: notify("connect","Conectado ao banco")
    DatabaseManager->>-Main: connection
Loading

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages