EzTransferClient

Un mio cliente mi ha chiesto di sviluppare una semplice applicazione desktop standalone da fornire ai suoi clienti come parte di una estensione ez-publish che ha sviluppato
Lo scopo di questa applicazione è quello di scaricare automaticamente i file forniti dall’installazione di ez-publish per consentire flussi di lavoro esterni

Ho sviluppato questa applicazione in Java per garantire la portabilità
Ho usato AWT come libreria grafica, GSON per la (de)serializzazione di richieste e apache-commons per gestire la comunicazione vera e propria

Come al solito utilizzando le librerie appropriate il lavoro diventa abbastanza semplice
La prima installazione dell’app richiede all’utente di immettere le credenziali corrette per l’autenticazione con il server
Fatto questo il rerstante flusso di lavoro era:
Interrogazione dell’endpoint remoto per ottenere un elenco di elementi
Recupera URL di ogni articolo e avviare il download
Renderizza ogni download di articolo con una barra di avanzamento aggiungendoli a un JPanel
Inizia download in un thread dedicato e fornisce un feedback all’utente utilizzando una progressbar
Quando il download è terminato rimuovere la progressbar e dare un feedback all’utente
Se il contenuto è zippato decomprimerlo

Una prima versione comprendeva anche controlli per ogni elemento scaricabile per consentire all’utente di avviare fermare mettere in pausa il processo di download, ma siamo giunti alla conclusione che in questo scenario specifico ci serviva il minimo di interattività possibile, così ho rimosso quei controlli e siamo passati ad un approccio di polling completamente automatico

L’autenticazione è ottenuta mediante un POST
Le richieste successive sono gestite attraverso i cookies
Se l’autenticazione non riesce, viene automaticamente rinnovata provando almeno MAX_FAILED_LOGIN_ATTEMPTS volte prima di avvisare l’utente che le credenziali non sono valide

Tutto sommato una applicazione semplice ma efficace

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


*