Apache POI è una libreria per Java per la manipolazione dei file di MS Office.

Oggi vediamo un esempio su come creare un file Excel.

Se usate Maven, aggiungete questo al vostro pom.xml:

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.16</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.15</version>
            <type>jar</type>
        </dependency>

Commandline è una delle tante librerie per Java per il parsing della riga di comando.

E' abbastanza semplice da usare, anche se al momento non rientra tra le mie preferite.

Vediamo un esempio in cui impostiamo due opzioni:

  • nome, di tipo stringa
  • vebosità, di tipo booleano

L'esempio è basico, e sul sito ci stanno diversi esempi avanzati.

Mustache è uno dei template engine più conosciuti ed usati.

Disponibile per tantissimi linguaggi, oggi vediamo come usarlo in Java; lo useremo in un progetto console, visualizzando dei dati "statici" giusto per vedere un esempio base.

Se usiamo Maven, possiamo installarlo così:

        <dependency>
            <groupId>com.github.spullara.mustache.java</groupId>
            <artifactId>compiler</artifactId>
            <version>0.9.5</version>
        </dependency>

Vogliamo riempire una ComboBox in JavaFX con oggetti custom: come possiamo fare?

Adesso lo vediamo, partendo proprio dall'oggetto custom:

public class Author {

    private String id;
    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return name;
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Author)) {
            return false;
        }
        Author a = (Author) obj;
        return this.name.equals(a.toString());
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 59 * hash + (this.name != null ? this.name.hashCode() : 0);
        return hash;
    }

Nulla di trascendentale.

Tra le varie librerie Apache Commons, ne troviamo una apposita per il parsing degli argomenti da riga di comando: Apache Commons CLI!

Oggi vediamo un esempio del suo utilizzo.

Se usate Maven potete installare la libreria in questo modo:

        <dependency>
            <groupId>commons-cli</groupId>
            <artifactId>commons-cli</artifactId>
            <version>1.4</version>
        </dependency>

Per eseguire il parsing della riga di comando in Java abbiamo diverse librerie.

Oggi vediamo JCommander!

Volendo è possibile usarlo anche con Groovy e Kotlin.

Inoltre ha tantissime opzioni e metodi utili.

Noi vedremo un esempio basico per partire.

Se usate Maven, aggiungete questa dipendenza:

<dependency>
   <groupId>com.beust</groupId>
   <artifactId>jcommander</artifactId>
   <version>1.72</version>
</dependency>

In questo articolo avevamo visto come riempire una TableView da database in JavaFX.

Qui vediamo come impostare ordinamento a filtro; in pratica potremmo ordinare la tabella cliccando sull'intestazione, ed eseguire ricerche attraverso una casella di testo.

Da dove prendiamo i dati, in questo caso, non è importante; quindi tralascerò come riempire la lista.

Allora, lo scenario è questo: avviamo una operazione che visualizza un loading dialog, esegue determinate operazioni, chiude il loading dialog, ed eventualmente aggiorna un componente grafico (ad esempio una TableView).

Siamo in ambito JavaFX, che segue gli stessi principi di Swing, ma in maniera un pò diversa.

Parliamo del classico dialog che deve essere visualizzato quando eseguiamo operazioni per le quali l'utente deve aspettare.

Creare un loading dialog in JavaFX è piuttosto semplice.

Lo scopo del codice che vedremo oggi nasce da una esigenza reale: mettere un watermark, corrispondente al nome del file, su tante immagini risiedenti tutte nella stessa cartella.

Facendolo in Java ci ho messo relativamente poco tempo.

Nel programma non è prevista una gui; il path viene dato tramite riga di comando.

Voi, ovviamente, fate tutte le modifiche che volete / vi servono.