Portofino 4.0.7 rilasciato!
Postato il 28 Settembre 2012 da Alessio Stalla
Siamo orgogliosi di annunciare il rilascio dell'ultima, migliore versione di Portofino, la 4.0.7. Questa release si concentra su nuovi strumenti di amministrazione per personalizzare la mappatura da schema di database a modello di Portofino: nomi di tabelle e colonne, tipi e formattazioni, relazioni, annotazioni, ecc. - niente più modifiche manuali al portofino-model.xml!
In aggiunta, questa versione corregge svariati bug e contiene diverse migliorie, nelle performance, nelle tecnologie utilizzate e nella stabilizzazione.
Vuoi saperne di più? Continua a leggere.
Nuova sezione amministrativa: “tabelle”
Se si osserva la sezione di amministrazione, si può vedere un nuovo link sotto Connection Providers:
Una vista parziale della sezione Tabelle (in inglese)
La sezione Tabelle permette di modificare vari tipi di informazioni che Portofino utilizza per determinare come renderizzare, validare e persistere i dati sul database - sia utilizzando la pagina CRUD predefinita, sia nelle vostre pagine personalizzate. Particolarmente importante è l'abilità di personalizzare i nomi delle proprietè delle vostre entità persistenti, che userete nel vostro codice Groovy ogniqualvolta vorrete accedere programmaticamente a dati persistenti.
Accanto al nome di ogni schema, in questa sezione potete vedere se c'è uno script Liquibase ad esso associato: in quel caso comparirà l'icona a goccia di Liquibase. Cliccando su una tabella, si possono vedere e modificare i dettagli, e le informazioni relative alle colonne e alle relazioni.
La vista dettagliata di una tabella
Come si può vedere, una tabella ha un nome entità che viene usato nelle query (come esemplificato dal campo Query hql) e nel codice Groovy, per salvare o caricare un'istanza di quell'entità. Se si hanno requisiti avanzati, si può mappare una tabella su una classe Java usando Hibernate. Ed infine, quando le righe della vostra tabella sono presentate in una lista di selezione (utilizzando un selection provider), si può scegliere come mostrarle fornendo un'espressione per il nome abbreviato (in OGNL).
Si può ispezionare ciascuna colonna per vederne e modificarne i dettagli:
Si possono anche personalizzare le relazioni, sia quelle native (chiavi esterne) che quelle artificiali (i selection provider che esistono solo in Portofino e sono usati per offrire liste di selezione o campi con autocompletamento).
Scendere nel dettaglio di tutti questi aspetti è fuori dall'ambito di questo articolo; sperimenta questa nuova funzionalità e facci sapere cosa ne pensi! Ritorneremo sull'argomento se ci sarà richiesta o se verrà fuori che qualche aspetto non è sufficientemente chiaro.
Nota importante: abbiamo modificato il modo in cui è calcolato l'ordine in cui le pagine CRUD mostrano le proprietà. In precedenza, ogni CRUD aveva la responsabilità di decidere l'ordinamento in base al contenuto del proprio file configuration.xml (questo aspetto non era modificabile tramite l'interfaccia web). Ora, l'ordine è determinato dagli elementi table nel modello di Portofino, e lo si può modificare dalla nuova sezione Tabelle del pannello di amministrazione. In questo modo è sia più facilmente modificabile, sia più consistente attraverso tutta l'applicazione: se si cambia l'ordine, ogni CRUD rifletterà la modifica istantaneamente. Naturalmente, come ogni altra impostazione a carico dell'utente, l'ordine delle colonne viene preservato alla sincronizzazione tra database e modello.
Miglioramenti
Abbiamo anche implementato diversi miglioramenti:
- Sempre sulla cresta dell'onda - Groovy è stato aggiornato alla versione 1.8.8 e il Tuckey UrlRewriteFilter alla 4.0.4. Sfortunatamente, il bug di Groovy sul reload è ancora presente.
- Migliore caching - il supporto generale alle cache web è stato razionalizzato e migliorato per funzionare in maniera ottimale sia con i browser che con i proxy. In particolare, gli allegati delle pagine testuali ora vengono sempre cachati. NoCacheStreamingResolution non è più necessaria ed è stata eliminata; si può usare la semplice StreamingResolution al suo posto. Ora hai completo controllo sugli header della cache nelle tue pagine personalizzate - dai un'occhiata alla TextAction inclusa nel framework per avere un esempio.
- Miglior supporto a OpenID con l'autenticazione tramite Google (Gmail).
- Estensione facilitata delle pagine di testo, in modo da poter facilmente memorizzare il contenuto dove si preferisce (su un database, un content repository, ecc.)
Risoluzione dei bug
Ci siamo anche occupati di eliminare un po' di bachi (senza far uso di DDT). Ecco alcuni esempi:
- Fix del dispatcher: l'embedding di pagine figlie inesistenti non causa più ricorsione infinita; il parametro jsessionid negli URL non fa più fallire il dispatcher.
- Fix a persistenza e CRUD: i nomi delle chiavi esterne sono ora adeguatamente normalizzati come succede per le colonne; la ricerca e l'ordinamento nelle pagine CRUD con query complesse non falliscono più a causa del mancato utilizzo degli alias; i tipi interi vengono mappati su tipi Java in base alla precisione restituita dal database, scegliendo il tipo che meglio corrisponde e usando BigInteger come soluzione di ripiego.
- ...e altre piccole cose.
Provalo!
Ti invitiamo a provare la nuova versione e darci le tue impressioni! Ricorda che lo puoi scaricare da qui. Se hai problemi o suggerimenti, visita i nostri forum della comunità e saremo felici di risponderti! Infine, se desideri del supporto commerciale, noi offriamo diverse opzioni.