Possiedo un'applicazione Java che scarica informazioni (entità) dal nostro server. Io uso un thread di download per scaricare i dati.Flusso Java Gestione e flusso applicazioni
Il flusso del processo di download è il seguente:
- Login - L'entità utente viene scaricato
- Sulla base l'impresa utilizzatrice, scaricare una lista di entità 'Comunità' e Display in discesa
- sulla base comunitaria discesa selezione, download e show 'Org Tree' in una JTree
- sulla base di selezione del nodo, entità scaricare Categoria e la visualizzazione in discesa
- sulla base Categoria Selecti on, scaricare Categoria entità e display secondario in discesa
- Sulla base di selezione Sub Categoria scaricare un grande insieme di dati e salvarlo
Il download avviene in un thread in modo l'interfaccia grafica non fa 'congelare'. Mi consente anche di aggiornare una barra di avanzamento.
Ho bisogno di aiuto per gestire questo processo. Il problema principale è quando scarico dati di entità. Devo trovare un modo per attendere che il thread finisca prima di tentare di ottenere l'entità e passare al passaggio successivo nel flusso di app.
Finora ho utilizzato una finestra di dialogo modale per controllare il flusso. Comincio il thread, faccio apparire una modale e poi getta la modale quando il thread è finito. Il modale/thread sono Observer/Observable il thread fa un set modificato quando è finito e la finestra di dialogo dispone. La visualizzazione di una modale interrompe efficacemente il flusso dell'applicazione in modo che possa attendere il completamento del download.
Ho anche provato a spostare tutto il flusso di lavoro su Observers. Tutte le GUI rilevanti nel processo sono osservatori. Ogni metodo di aggiornamento attende il completamento del download e quindi chiama la prossima parte della GUI che esegue il download.
Finora ho trovato questi due metodi che producono codice difficile da seguire. Mi piacerebbe 'centralizzare' questo flusso di lavoro in modo che altri sviluppatori non si tirino indietro quando cercano di seguirlo.
La mia domanda è: avete suggerimenti/esempi in cui un flusso di lavoro come questo può essere gestito in un modo che produce codice che è facile da seguire?
So che "easy" è un termine relativo e so che entrambe le mie opzioni funzionano già, ma vorrei ottenere alcune idee da altri programmatori mentre ho ancora tempo per cambiarlo.
Grazie mille.
Link aggiornato per puntare alla versione corrente di Java. – jzd