Differenze tra le versioni di "Inserimento dati personalizzabile: Tabella basata su query"

Da wiki.maggioli.it.
Jump to navigation Jump to search
imported>Root
imported>Root
Riga 1: Riga 1:
Questo oggetto permette di visualizzare i dati letti da una query sul database, presentandoli all'utente in forma tabellare. L'utente a sua volta può scegliere uno o più righe. A questo punto è possibile estrarre i dati selezionati dall'utente ed usarli nelle successive fasi di elaborazione.
Questo oggetto permette di visualizzare i dati letti da una query sul database, presentandoli all'utente in forma tabellare. L'utente a sua volta può scegliere uno o più righe. A questo punto è possibile estrarre i dati selezionati dall'utente ed usarli nelle successive fasi di elaborazione.


== Attributi specifici ==
== Attributi specifici ==


=== design_time_query ===
=== design_time_query ===
Indica se la query deve popolare la griglia anche a design time (utile per debug della query). La query viene attivata quando sono stati specificato almeno la clausola SELECT e la clausola FROM. E' opportuno impostare il parametro ad ON solo quando si e' composta una query congruente in quanto una query incompleta genera molto probabilmente degli errori. Inoltre potrebbe essere scomodo lavorare con query attiva se questa è molto pesante. Il parametro risulta utile sola con query che risultano coerenti anche a design time. Per la query che fanno leva sul valore degli attributi a runtime molto probabilmente viene generato un errore.
Indica se la query deve popolare la griglia anche a design time (utile per debug della query). E' opportuno impostare il parametro ad ON solo quando si e' composta la query completamente in quanto una query incompleta genera molto probabilmente degli errori. Il parametro risulta utile sola con query che risultano coerenti anche a design time. Per la query che fanno leva sul valore degli attributi a runtime molto probabilmente viene generato un errore.
 
* ON: La query si attiva a design time
* OFF: La query non è attiva a design time


=== columns ===
=== columns ===
Permette di definire i dati da visualizzare nella griglia. Se non specificato viene sottintesa una colonna che mostra il valore stringa del primo oggetto selezionato dalla query. Quindi se la query contiene una select di più oggetti, quelli successivi al primo non vengono visualizzati finchè non si definiscono le colonne opportune.
Permette di definire i dati da visualizzare nalla griglia. Se non specificato, viene sottintesa una colonna che mostra il valore stringa del primo oggetto selezionato dalla query. Quindi, se la query contiene una select di più oggetti, quelli successivi non vengono visualizzati finchè non si definiscono le colonne opportune.
 
La definizione di ogni colonna segue una notazione nella forma:
 
[attributo]@[indice] as [descrizione], width=[larghezza in pixel della colonna]
 
* attributo: il nome dell'attributo che si vuole estrarre dall'eventuale oggetto complesso letto dalla select. Supponendo che nella from della query ci sia An1DACAnagrafeUnica (oggetto complesso contenente cognome, nome, ecc...) allora si può scrivere cognome. L'alias utilizzato nella query non deve essere usato in quanto non fa parte della struttura dell'oggetto letto. Se invece si vuole accedere ad un dato semplice letto dalla query, essendo questo non dotato di attributi è necessario non specificare alcun nome di attributo.
* indice: l'indice dell'oggetto (con base 0) letto dalla select a cui ci sivuole riferire. Se la select specifica, ad esempio, select a, b from An1DACAnagrafeUnica a, An1DACAnagrafeUnica b where condizione di join, per accedere al cognome della prima anagrafica si scriverà cognome@0, per il cognome della seconda anagrafica cognome@1 (ricordarsi che l'indice ha base zero!). Il default sottintende indice zero, quindi scrivere cognome@0 oppure cognome ha lo stesso effetto.
* descrizione: Una descrizione a piacere che andrà posizionata sull'header della colonna. Può contenere un qualsiasi testo purchè non includa la virgola, che viene usata come separatore tra gli attributi
* width: permette di specificare la larghezza preferita (in pixel) per la colonna. Se la colonna è unica la larghezza segue comunque la tabella. Se le colonne sono multiple la larghezza viene calcolata in proporzione relativamente alla larghezza della tabella. E' possibile specificare una larghezza negativa, nel qual caso questa viene considerata assoluta e non ridimensionabile dall'utente. Se la colonna è unica oppure se tutte le colonne hanno larghezza negativa allora interviene nuovamente la proporzione in funzione della larghezza della tabella.
 
In funzione del tipo di dato che si vuole estrarre e dell'aspetto che si vuole dare alla colonna sono possibili varie combinazioni dei suddetti attributi: cognome as Cognome del richiedente, cognome@3 as Cognome, @2 as Numero di scarpe e via dicendo.
 
=== select ===
Permette di specificare quali dati fare leggere alla query. Essendo la query scritta in HQL non è possibile specificare cose del tipo "*", ma è necessario indicare chiaramente cosa si vuole caricare. E' possibile specificare una classe java mappata sul database (esempio: An1DACAnagrafeUnica che è mappato sulla tabella an1_anagrafe_unica) oppure i singoli campi di una classe (esempio: cognome e nome dell'anagrafica unica). Nel primo caso la query torna 1 (uno) singolo oggetto complesso contenente tutti i dati della tabella (cognome, nome ecc...) nel secondo caso la query torna tanti oggetti semplici.
 
E' possibile anche mischiare oggetti semplici e complessi nella select, in funzione delle necessità. Ad ogni modo è importante capire che ogni oggetto indicato nella select ha un indice progressivo: il primo ha indice 0, il secondo ha indice 1 e via dicendo. Se il primo oggetto è un oggetto complesso, questo avrà indice 0 ed una moltitudine di attributi (cognome, nome ecc...) tutti appartenenti all'oggetto con indice 0.
 
=== from ===
Indica la sorgente dei dati. E' possibile definire join con le regole di HQL.
 
=== where ===
Indica la condizione di filtraggio dei dati. Segue le regole di HQL.
 
=== group_by ===
Raggruppamento secondo le regole di HQL.
 
=== having ===
Having secondo le regole di HQL.
 
=== order_by ===
Ordinamento secondo le regole di HQL.
 
=== selection_type ===
Indica alla tabella le possibilità di selezione offerte all'utente.
 
* SINGLE: permette di selezionare una sola riga
* SINGLE_INTERVAL: permette di selezionare più righe ma in un blocco unico
* MULTIPLE_INTERVAL= permette di selezionare blocchi disgiunti o singole righe sparse
 
=== cell_count ===
Permette di estrarre i valori dalla cella di una griglia. Specificando un numero di dati, compaiono successivamente nuovi campi chiamati progressivamente cell_1_text, cell_2_text ecc...
In questi campi è possibile specificare l'indice della colonna dalla quale si vuole estrarre il dato. Questa modalità quindi lavora con i dati che sono visualizzati in una colonna (anche se questa ha larghezza zero e di fatto invisibile). Vedere successivo esempio.


=== row_data_count ===
select [NULL]
E' simile al cell_count ma questo parametro permette di lavorare sui dati specificati nella select piuttosto che quelli messi a video tramite le colonne (non sempre c'è equivalenza). Anche in questo caso specificando un numero di dati compariranno nuovi parametri di input row_data_1_index, row_data_2_index ecc...
from [NULL]
Inoltre compariranno anche dei campi di output row_1_long, row_1_double, row_1_date, row_1_string e via dicendo per tutti gli indici che si sono selezionati. Questi campi permettono di estrarre il sottostante dato letto dalla query effettuando una conversione automatica in funzione del campo che si utilizza per l'output. Non tutti i dati letti dal database sono convertibili in tutti i tipi elencati, soprattutto se si leggono oggetti complessi. Vedere successivo esempio.
where [NULL]
group_by [NULL]
having [NULL]
order_by [NULL]
selection_type [STRING] SINGLE
cell_count [LONG] 0
row_data_count [LONG] 1
row_data_1_index [LONG] 0
row_1_long
row_1_double
row_1_date
row_1_string


== Attributi di base ==
== Attributi di base ==
Per una spiegazione dei rimanenti attributi riferirsi alla pagina [[Inserimento dati personalizzabile: Attributi base degli oggetti]]
Per una spiegazione dei rimanenti attributi riferirsi alla pagina [[Inserimento dati personalizzabile: Attributi base degli oggetti]]
== Estrazione dei dati ==
Data la natura del componente, potenzialmente l'utente può selezionare più righe. Considerando che ogni colonna viene estratta su un attributo di workflow dedicato, in caso di selezione righe multiple i dati estratti saranno molteplici quindi deve essere usato un dato tipo array. Se si è sicuri che l'utente può selezionare al più una riga è possibile utilizzare anche un attributo di tipo scalare. E' necessario porre attenzione nall'uso degli scalari perchè si potrebbero generare situazioni in cui entra in azione il meccanismo di conversione automatica tra array e scalari producendo errori oppure risultati inconsistenti.
== Esempio ==
La query specificata è:
select a, u
from An1DACAnagrafeUnica a, UtrDACUtentiuoli u
where a.dataFin is null and u.pkid = a.idUtenteUpd
order by a.cognome, a.nome
Questa query estrae tutte le anagrafiche uniche correnti assieme all'utente che le ha inserite oppure modificate l'ultima volta.
definendo le colonne:
cognome as Cognome (questo solo per specificare la maiuscola, ricordarsi che HQL e' case sensitive!)
nome as Nome
descrizione@1 as Utente
Si indica alla tabella che vogliamo vedere l'attributo cognome e nome del primo oggetto (@0 è implicito) e la descrizione dell'utente (che è l'oggetto con indice 1)
Volendo estrarre cognome e nome si puo' definire
cell_count = 2
cell_1_index = 0
cell_2_index = 1
In questo modo viene estratto un array di stringhe dalla colonna 0 contenente tutti i cognome, ed un array di stringhe dalla colonna 1 contenente tutti i nomi. Si noti che pur essendo due colonne distinte, queste afferiscono sempre all'oggetto con indice 0.
Supponiamo di voler estrarre il pkid dell'anagrafica selezionata. Possiamo procedere in due modi:
* definire una colonna "pkid", magari con larghezza 0 per nasconderla all'utente e poi estrarre il valore cella tramite cell_count.
* utilizzare row_data_count (ad esempio impostandolo ad 1), specificando nell'indice che compare l'indice dell'oggetto anagrafica (nell'esempio 0). Il sistema non è in grado di estrarre oggetti complessi in quanto il meccanismo di comunicazione sottostante volutamente non li gestisce. Ma nel caso in cui si selezioni un oggetto complesso preso dal database, il sistema è abbastanza "furbo" da estrarne il pkid.

Versione delle 13:27, 15 lug 2013

Questo oggetto permette di visualizzare i dati letti da una query sul database, presentandoli all'utente in forma tabellare. L'utente a sua volta può scegliere uno o più righe. A questo punto è possibile estrarre i dati selezionati dall'utente ed usarli nelle successive fasi di elaborazione.

Attributi specifici

design_time_query

Indica se la query deve popolare la griglia anche a design time (utile per debug della query). E' opportuno impostare il parametro ad ON solo quando si e' composta la query completamente in quanto una query incompleta genera molto probabilmente degli errori. Il parametro risulta utile sola con query che risultano coerenti anche a design time. Per la query che fanno leva sul valore degli attributi a runtime molto probabilmente viene generato un errore.

columns

Permette di definire i dati da visualizzare nalla griglia. Se non specificato, viene sottintesa una colonna che mostra il valore stringa del primo oggetto selezionato dalla query. Quindi, se la query contiene una select di più oggetti, quelli successivi non vengono visualizzati finchè non si definiscono le colonne opportune.

select [NULL] from [NULL] where [NULL] group_by [NULL] having [NULL] order_by [NULL] selection_type [STRING] SINGLE cell_count [LONG] 0 row_data_count [LONG] 1 row_data_1_index [LONG] 0 row_1_long row_1_double row_1_date row_1_string

Attributi di base

Per una spiegazione dei rimanenti attributi riferirsi alla pagina Inserimento dati personalizzabile: Attributi base degli oggetti