Questo metodo fornisce un vettore di attributi da aggiungere a
quelli della query per poter rendere joineable la SourceClass in
ogni Base Extension passata come parametro
e' una variabile globale che contiene i riferimenti a tutti
gli oggetti presenti nella classe, cioe' a tutte le classi
virtuali della Gerarchia Estensionale cui appartengono
descrive la regola di Mapping AND.
Questa regola prevede la sostituzione di un attributo della classe
globale con un insieme di attributi locali che, opportunamente
ricomposti, forniscono la rappresentazione fornita dal Mediatore.
indica il tipo di attributo all'interno dello schema.
Questo campo puo` essere usato in fase di
query transformation per decidere il tipo di comportamento da
adottare.
genera un'istanza della classe inizializzandone i campi
Se uno dei vettori rappresentanti gli attributi o le classi
locali dovesse essere un campo null, viene creato un vettore vuoto
Questo metodo fornisce un vettore di elementi di tipo PEClassJoin
che contiene i join necessari per ricostruire una determinata Base Extension
passata come parametro.
ricevendo come parametro una struttura dati rappresentante la
basic query crea un'istanza della classe caratterizzata
dall'avere un piano di accesso ed un insieme di subquery che
rappresentano le interrogazioni in cui la query viene tradotta
e che dovranno essere eseguite sulle sorgenti.
Routine per la verifica del tipo di Identificatore
Se l'identificatore e` una parola chiave della sintassi OQL
ne viene restituito il tipo altrimenti viene ritornato il
valore corrispondente al parametro passato.
Questo metodo fornisce l'insieme di classi da interrogare ottimizzato
rispetto ad una determinata BaseExtension ed una BasicQuery
i cui attributi sono passati come parametro
questa routine aggiunge agli attributi di proiezione della query
passata quelly inidcati nel campo join.
Il metodo serve per completare le query ottenute dal processo di
trasformazione inserendo gli attributi necessari per fare il join con
le altri classi della base extension.
permette all'utente la formulazione del testo della query globale.
Questa versione del metodo si limita a prendere in ingresso
il testo della query e memorizzarlo nel campo glQuText.
le istanze della classe rappresentano gli attributi di default, cioe`
quelli hanno un valore di costante e quindi ugule a tutti gli oggetti
della classe.
e` un vettore contenente istanze della classe TransEle.
I suoi elementi rappresentano l'insieme di trasformazioni che possono
corrispondere ad uno stesso elemento presente nella Query.
e' un vettore di elementi di tipo SourceClass che contiene le classi
appartenenti alla stessa classe globale e che sono estensionalmente
equivalenti a quella attuale
questa versione per la generazione del piano di esecuzione si limita
a controllare che la query passata come parametro rientri nel
sottoinsieme delle Basic Query, cioe` nell'insieme delle
query che non richiedono alcuna decomposizione e per le quali la
definizione del piano e` estremamente semplificata:
- l'insieme delle subquery e` costituito dalla query stessa
- il piano invoca il metodo per l'esecuzione della query
metodo per la definizione del piano di accesso.
Questa versione del metodo sfrutta la conoscenza estensionale
In questa fase occorre individuare le sorgenti interessanti per
l'interrogazione ed indicare un piano per accedere alle stesse.
routine per l'esecuzione della Query.
Produce in uscita una rappresentazione dei dati generati dalla Basic
Query ed ottenuti apllicando il piano plan alle sottoquery
subQueries.
genera un'istanza della classe inizializzandone il campo
virtualClasses con le classi virtuali passate come parametro,
se il vettore passato e' un campo null allora viene creato
un vettore vuoto
Questo metodo fornisce un oggetto di tipo SourceClass contenente
una classe locale appartenente all'insieme di classi della base
extension in questione meno l'insieme di classi passato come secondo
parametro e joineable con quella passata come primo
e` un vettore contenente gli elementi che devono essere inseriti
nella clausola from della local query per realizzare eventuali
join espliciti .
Gli oggetti contenuti nel vettore sono istanze della classe
FromElement.
restituisce in una stringa il nome associato all'oggetto.
Nel caso in cui l'oggetto non abbia un campo name, o
comunque un attributo con lo stesso significato, il metodo ritorna
una stringa vuota "".
restituisce in un vettore di stringhe gli iteratori associati ad un
certo nome di classe.
Si osserva che l'ordine con cui vengono restituiti le stringhe e`
importante, deve essere infatti rispettato l'ordine in cui le classi
sono inserite nella fromClause.
restituisce la lista di tutti gli attributi locali associati
ad un attributo globale passato come parametro; in pratica
restituisce la colonna associata all'attributo globale.
Questo metodo fornisce l'oggetto di tipo JoinMap riguardante le due
classi passate come parametri; se queste classi non sono joineable in
questa base extension, dovrebbe essere ritornato un valore null
se l'oggetto rappresenta un campo usato come foreingkey in una
relazione allora questo metodo restituisce il nome il nome del
corrispondente attributo nella classe referenziata.
restituisce in una stringa il tipo di sorgente.
Tra i valori che puo` assumere questo parametro ci sono ad esempio:
- relational
- object
return stringa contenente il tipo di sorgente.
Rappresenta la descrizione della singola classe globale.
Gli oggetti di questa classe quindi contengono un riferimento alla
MappingTable, ExtesionalHierarchy e BaseExtensio
associate alla classe globale.
E` una variabile globale che contiene i riferimenti a tutti gli oggetti
presenti nella classe, cioe` a tutte le classi globali dello schema.
Questa struttura dati e` costituita da un oggetto di tipo
TreeMap in cui il campo key indica il nome della
Classe globale ed il campo value e` un puntatore al
corrispondente oggetto di tipo MappingTable.
indica il nome dell'iteratore usato nella basic query globale che porta
alla generazione della query locale la cui struttura viene
rappresentata in questa oggetto.
e` l'oggetto che rappresenta la proprieta` presente nella query globale,
cioe` l'elemento che e` stato trasformato.
Questo campo deve essere un oggetto di tipo Oql_Query.
questo metodo analizza gli attributi di proiezione ritornando false
se non ve ne sono o se sono tutti oggetti di tipo Oql_Basic,
cioe` valori di default,
restituisce true se l'oggetto rappresenta un valore di default, cioe`
una costante.
Il metodo, sostanzialmente, ritorna "true" quando e` invocato da un
oggetto specializzazione di Oql_Basic.
restituisce true se l'oggetto rappresenta un valore "nullo".
Il metodo, sostanzialmente, ritorna "true" quando e` invocato da un
oggetto istanza di Oql_Nil.
restituisce un booleano che assume valore "true" se il tipo di
rappresentazione restituita corrisponde ad un dato semistrutturato.
Sostanzialmente vieneritornato valore "true" se il campo
elements ha dimensione maggiore di 1.
e` l'iteratore con cui, nella query, ci si riferisce alla collezione
di elementi.
Se la collezione non ha iteratore allora questo campo deve essere
inizializzato come un oggetto di tipo Oql_Identifier col
campo name uguale alla stringa vuota "".
Questo metodo indica se la classe passata come primo parametro
e' joineable con almeno una tra quelle presenti nel secondo
parametro attraverso almeno un attributo tra quelli del
terzo parametro
questa classe generalizza gli elementi della mappingTable, cioe`
le entry della tabella che descrivono il tipo di mapping tra attributo
globale e rappresentazione locale.
e` un vettore contenente gli elementi che dovranno andare a sostituire
quello trasformato.
Gli oggetti contenuti nel vettore sono specializzazioni della classe
Oql_Query.
costituisce la descrizione della singola mapping table.
la MappingTable, come suggerisce il nome stesso, e` una struttura
tabellare che deve svolgere due funzioni:
1) descrizione della classe globale.
Deve cioe' riportare il nome e tipo di tutti gli attributi presenti
nella classe globale.
2) descrizione delle regole di mapping.
Deve cioe' contenere, per ogni classe locale, le regole necessarie per
trasformare una query globale in un insieme di query locali.
rappresentazione delle classi globali.
Questa struttura dati e` costituita da un oggetto di tipo
TreeMap in cui il campo key indica il nome della
MappingTable ed il campo value e` un puntatore al
corrispondente oggetto di tipo MappingTable.
vale "" se l'identificatore e' semplice altrimenti corrisponde al nome
della classe su cui mappa.
Questo attributo e` molto importante in fase di trasformazione percio`
in tale contesto e` fondamentale osservare il comportamento descritto
definisce le funzioni aggregate cioe`:
COUNT conta il numero di elementi di una collezione
SUM valuta la somma su di un insieme di ele menti
MIN restituisce il valore minimo su di un insieme di ele menti
MAX restituisce il valore massimo su di un insieme di ele menti
AVG viene stimato il valore medio
questa classe generalizza i tipi base previsti nella grammatica OQL,
cioe` i valori boolean true e false , le Stringhe
i Float i Long e l'elemento Nil.
il costruttore genera un'istanza della classe assegnando alla
variabile value valore true o false ed indicando il numero di
riga colonna in cui compare l'elemento.
mediante questa classe astratta vengono rappresentati i qualificatori
esistenziale ed universale che permettono la verifica del soddisfacimento
di una condizione su di un insieme di oggetti.
crea un'istanza inizializzando i due operandi e specificando il numero di
riga, colonna in cui compare l'elemento nella Query. viene anche indicato il
numero di parentesi entro cui l'elemento e` racchiuso.
il costruttore genera un'istanza della classe assegnando alla
variabile value il valore della costante ed indicando il numero di
riga colonna in cui compare l'elemento.
il costruttore genera un'istanza della classe assegnando alla
variabile value il valore della costante ed indicando il numero di
riga colonna in cui compare l'elemento.
crea un'istanza assegnando l'identificatore, la struttura ed inizializzando
il numero di riga, colonna e di parentesi relative all'elemento nella
Query.
il costruttore genera un'istanza della classe assegnando alla
variabile value il valore della costante ed indicando il numero di
riga colonna in cui compare l'elemento.
crea un'istanza fornendo le query che rappresentano gli insieme ed il
tipo di operazione. inoltre vengono inizializzati il numero di riga,
colonna eed il numero di parentesi.
questa classe specializza la classe parser per consentire
l'analisi di query Oql fornite in vari formati, ad esempio file di testo
o stringhe.
Questa classe permette la generazione della struttura dati corrispondente
alla query fornita e l'esecuzione di controlli per la verifica del tipo di
interrogazione.
questa classe rappresenta un passo per ricostruire la risposta ad una
Query, piu' dettagliatamente indica se tra due BaseExtension
deve essere fatta una semplice unione delle entita' oppure un outer join
questa classe generalizza il concetto di piano di esecuzione per una query,
deve ci\`e inidcare l'insieme di operazioni lementari che devono essere
eseguite al fine di ottenere un risposta dalla collezione di dati
interrogata
il quantificatore serve per indicare quanti degli elementi di
un insieme devono soddidfare il confronto.
Perche` il quantificatore abbia senso occorre che il secondo
operando rappresenti un insieme di elementi.
Il quantificatore assume i valori : "any", "some", "all".
campo usato nella fase di query transformation.
Nel caso in cui si stia gestendo un attributo appartenente all
foreinkey di un database relazionale occorre sapere il nome
usato localmente e quello presente nella classe referenziata (possono
essere diversi), tale informazione e` contenuta in questo campo.
le istanze della classe rappresentano gli attributi semplici, cioe`
quelli che mappano su un dominio rappresentato da un tipo base e che
hanno un mapping diretto con un attributo globale.
Questo metodo indica se sono presenti nel secondo vettore passato tutti
gli oggetti contenuti nel primo limitatamente ai loro sottoinsiemi
determinati dall'intersezione con il terzo vettore
restituisce la rappresentazione dell'elemento di mapping.
Tale rappresentazione dipende dal tipo di contesto in cui l'elemento e`
inserito ed eventualmente da una condizione che permette di
discriminare tra diverse alternative (e` necessario per elementi in
OR.
questo metodo restituisce al chiamante una rappresenatzione
dell'oggetto stesso.
Tale rappresentazone, contenuta in un oggetto istanza della classe
TranOutput, sara` sostanzialmente un Oql_Identifier.
questo metodo restituisce al chiamante una rappresenatzione
dell'oggetto stesso.
Tale rappresentazone, contenuta in un oggetto istanza della classe
TransOutput, sara` sostanzialmente un Oql_Nil.
questo metodo restituisce al chiamante una rappresenatzione
dell'oggetto stesso.
Tale rappresentazone, contenuta in un oggetto istanza della classe
TransOutput, sara` caratterizzata dall'avere nel mappingField i
nomi degli attributi locali nel cui campo refAttr e` specificata
ia foreing key.
questo metodo restituisce al chiamante una rappresenatzione
dell'oggetto stesso.
Tale rappresentazone, contenuta in un oggetto istanza della classe
TransOutput, sara` sostanzialmente un insieme di oggetti di tipo
Oql_Identifier.
questo metodo restituisce al chiamante una rappresenatzione
dell'oggetto stesso.
Tale rappresentazone, contenuta in un oggetto istanza della classe
TransOutput, sara` sostanzialmente un Oql_Basic.
routine di traduzione.
Questo metodo esamina lo statement Oql da cui e` stato invocato
fornendo le indicazioni necessarie a trasformarlo, in modo che possa
essere inserito in una LocalQuery.
routine per la trasformazione dell'interrogazione.
Questo metodo, ricevendo come parametro la MappingTable
relativa ad una classe globale, il nome di una delle classi locali,
produce in uscita un vettore contenente le query locali rivolte
alla sorgente indicata.
descrive la regola di Mapping OR.
Questa regola prevede la sostituzione di un attributo della classe
globale con uno scelto tra un insieme di possibili candidati nella
classe locale.
questa classe rapresenta le query che possono essere associate ad una
singola query locale.
Occorre ricordare che per sorgenti semistrutturate e` possibile che una
query locale sia in realta` costituita da un insieme di interrogazioni
con rappresentazioni alternative, in modo cioe` da supportare le possibili
rappresentazioni di uno stesso dato.
e` un vettore contenente gli elementi che devono essere inseriti
tra le condizioni di join della local query per realizzare eventuali
join espliciti .
Gli oggetti contenuti nel vettore sono istanze della classe
Oql_Comparison.