Coder Social home page Coder Social logo

barattomanager's People

Contributors

hali-d avatar maicolantali avatar shubho10 avatar

Watchers

 avatar  avatar

barattomanager's Issues

ChangeLog

🔄 Changelog

  • Rimosse le classe Configurator e Viewer. Rimpiazzate dalla classe User con l'aggiunta dell'attributo isConfigurator
  • SHA-512 delle password utenti. Sicurezza
  • AppConfigurator non utilizza più una inner clan per essere singleton. Classe utilizzata solo per lettura di dati non serve essere thread-safe
  • Nuova classe MessageDialogDisplay per gestire i JOptionPane

📑 Docs

Documentazione di parti molto complesse del progetto.

♻️ MVC: ActionListener Annotation

  • ActionListenerFor --> Annotazione da utilizzare solo sopra dei metodi. Questa annotazione richiede un parametro: sourceField che rappresenta il Field (private o private final) della classe dove verrà aggiunta l'actionListener runtime.
  • ActionListenerInstaller --> Classe responsabile di trovare i tutti i metodi di una classe con l'annotazione ActionListenerFor, questo viene fatto attraverso l'analisi di classe, e successivamente invoca il metodo addActionListener sul filed dichiarato nell'annotazione attraverso un InvocationHandler e un Proxy.newProxyInstance(...).
  • ActionListenerLinked --> Annotazione da utilizzare sopra i campi in moda da "marcare" quell campo

MVC-Annotations

Codice duplicato in action

Alcune action hanno codice duplicato dovuto alla natura simile dei comandi. Non è applicare il template pattern perchè c'è un interfaccia di mezzo.

"Wrong input" error message missing

image

Quando io inserisco un numero maggiore di 23 come ora, l'errore viene visualizzato qua(guarda la foto) ma l'applicazione non mi da alcun messaggio di errore e non mi aggiunge neanche il luogo;
questo discorso non vale per i minuti perché nonostante io inserisca minuti maggiori di 59, il luogo di incontro viene aggiunto.
Esempio se io scrivo 12:90 e 15:80, vengono aggiunti gli orari da 12:00 alle 15:30

ToDo ~ Ideas ~ Problems

Problemi

  • Persistenza dei meet. Se i meet subiscono un update i dati non sono persistenti. Questo è un problema sia per i Trade che per le statistiche del configuratore
  • #43
  • Persistenza dei trade I trade quando sono hanno articoli in stato CLOSE_OFFERT non devono essere cancellati/aggiornati servono per le statistiche del configuratore + È coretto che i trade che su cui non viene fatta nessun azione (quindi scadono) vengano cancellati? problema legato alle statistiche
  • ‼️ Verifica degli articoli. Alcuni articoli dell'utente che ha fatto il login sono presenti nello store.
  • ‼️ History ha smesso di funzionare
  • Store no background update Verificare se è iscritto all'evento, se si, identificare il problema
  • #45
  • #44
  • Sistemare UI Trade
  • Azione accetta
  • Azione accetta e riprogramma
  • UIs configuratore
  • List meet vuota, mostrare errore
  • Tree si chiude quando i daemon fanno update
  • Jmenu, a volte, non riconoscono i nodi
  • Verificare che gli articoli che possono essere scambiati non abbiano già trade in corso.
  • 5️⃣ I manager sono classi singleton, quindi non possono essere distrutte, come facciamo l'update?
  • 5️⃣ Se esistono già delle impostazioni, e il configuratore ne carica di nuove tramite JSON, cosa succede?

Refactoring

  • CancelOffer.java
  • Implementare la nuova factory come gestore eventi in tutte le UI
  • SelectMeetDatePanel classe duplicata.
  • Tree estrarre un metodo per generare i log.
  • Invertire atrributo bool del Meet

Altro

  • #40
  • Problema legato ai daemon thread. Se i dati vengono aggiornati da uno dei due tread e l'utente sta lavorando su quell'articolo cosa succede?

Bassa priorità

  • Astrazione dei bottoni del configuratore + fix try/catch
  • Assert
  • Nome articolo può essere vuoto
  • Vengono mostrati i campi non obbligatori, nelle offerte cancellate (anche se non compilati)
  • Username, fare un .trim()
  • Quando viene creato un meet la prima cosa che viene controllata è l'orario e poi i campi. Meglio fare il contrario
  • Aggiunta di filtri durante la creazione dei meet. Non è più possibile creare meet vuoti.

Seconda parte

  • home configuratore, load json dividere

MeetTree

Rimuovere evento selezione nodo

1 ~ MVC

Applicare il pattern MVC a tutti il progetto

Trade, gestione domanda/risposta

la UI deve capire chi è il creatore dello scambio in modo tale che posso mostrare un qualcosa di differente. Oltre al fatto che serve implementare un controllo sulle operazione di accetta. il creatore NON può accettare la sua offerta da solo. Quindi serve un sistema che capisca in che punto si trovi e quale dei due attori coinvolti deve rispondere.

ToDo

  • Aggiungere alla classe Trade i parametro log (guardare classe Article stessa implementazione di log)
  • Definire getter e setter per log

  • Dentro il package di Trade (com.barattOManager.model.trade) creare una nuova classe chiamata Answer
  • Aggiungere a questa classe un attributo chiamato waitingUserAnswer,
  • Definire un costruttore
  • Definire getter per questo attributo
  • Aggiungere la nuova classe ad Article

Event Factory

  • EventFactory (Singleton)
    • ArticleEvent
      • RepaintEvent
    • CategoryEvent
    • ...
EventFactory.getInstace().getArtcileEvent() {
    return RepaintEventHandler
}
EventFactory.getInstace().getArtcileEvent().add(Store)
EventFactory.getInstace().getArtcileEvent().add(Dashboard)
public void saveArticleMapChange() {
    try {
        objectMapper.writeValue(articleFile, articleMap);
    } catch (IOException e) {
        e.printStackTrace();
    }

    EventFactory.getInstace().getArtcileEvent().fire()
}

Meet Daemon ~ Meet duplicati

  • Creare attributo (+ json property): alreadyUpdated [bool]
  • definire metodo get: isAlreaderUpdated()
  • Nel demone che fa l'update dei meet inserire in nuovo filer.
  • Test
.filter(meet -> !meet.isAlreadyUpdated()))

2 ~ GRASP

Controller

  • com.barattoManager.ui.mvc.configurator.categoryEditor
  • com.barattoManager.ui.mvc.configurator.homepage
  • com.barattoManager.ui.mvc.configurator.meetEditor
  • com.barattoManager.ui.mvc.tree

3 ~ SOLID

Open-Closed Principle (OCP)

  • com.barattoManager.ui.mvc.dialogs.select.selectArticle
  • com.barattoManager.ui.mvc.dialogs.select.selectCategory
  • com.barattoManager.ui.mvc.dialogs.select.selectMeet

Abstraction of Managers

Abstract the Manager class

  • Create an abstract Class: Manager
  • Abstraction of common tree attributes (File)
  • Implement common methods in the Manager super-class
  • Define the abstract methods of Manager super-class

⚠️ Use logic of abstract methods in the common methods

Abstraction of the tree classes

Abstract the Tree Classes

  • Create an abstract Class: Tree
  • Abstraction of common tree attributes (icons, rootNode, Error)
  • Implement common methods in the Tree super-class
  • Define the abstract methods of Tree super-class
  • Implement the abstract Tree super-class in the CategoryTree
  • Implement the abstract Tree super-class in the MeetTree
  • Implement the abstract Tree super-class in the ArticleTree

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.