oql
Class Oql_SelectExpr

java.lang.Object
  |
  +--oql.Oql_Query
        |
        +--oql.Oql_SelectExpr
Direct Known Subclasses:
Oql_SimpleQuery

public class Oql_SelectExpr
extends Oql_Query
implements java.lang.Cloneable

rappresenta le Query di tipo Select .
Le clausole select e from sono obbligatorie mentre le altre, (Where , Group by e Order by), sono opzionali.


Field Summary
 boolean distinct
          indica l'eventuale presenza della clausola distinct
protected  java.util.Vector fromClause
          e' un vettore in cui vengono memorizzate tutte le classi presenti nella clausola from, cioe` le classi di cui viene fatto il join.
 GroupBy groupByClause
          rappresenta la clausola group by che permette il raggruppamento dei risultati della query.
 java.util.TreeMap iterators
          contiene le corrispondenze tra nomi di classe ed iteratori.
 java.util.HashMap names
          e` un campo di tipo HashMap impiegato allo scopo di raccogliere tutti i nomi che compaiono nella query
 java.util.Vector orderByClause
          e` un campo di tipo collezione che specifica i criteri di ordinamento.
 java.util.Vector selectClause
          e' un vettore in cui vengono memorizzati gli attributi di proiezione, qualli presenti nella clausola select
 Oql_Query whereClause
          e' un campo che permette la rappresentazione dei predicati di selezione
 
Fields inherited from class oql.Oql_Query
columnN, level, lineN, parN, selectQueryN
 
Constructor Summary
Oql_SelectExpr()
          crea un'istanza completamente vuota
Oql_SelectExpr(java.util.Vector sc, java.util.Vector fc, boolean d)
          crea un'istanza contenente l'insieme di attributi di proiezione e l'insieme di classi presenti nella clausola from.
Oql_SelectExpr(java.util.Vector sc, java.util.Vector fc, boolean d, int l, int c, int p)
          crea un'istanza fornendo gli attributi della clausola select, le classi della claudola from, indicando la presenza dell' operatore distinct .
 
Method Summary
 void addClass(FromElement frEle)
          metodo per l'inserimento di un elemento nella clausola from.
 void addSelPred(Oql_Query pred)
          routine per l'aggiunta di un nuovo predicato di selezione.
 java.util.Vector getClasses()
          restituisce in un vettore di oggett FromElement i nomi delle classi sorgenti coinvolte nella query.
 java.util.Vector getClassIterators(java.lang.String cName)
          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.
 java.util.Vector getFromClause()
          restituisce tutti gli elementi presenti nella FromClause.
 java.lang.String getIterator(java.lang.String cName, int pos)
          restituisce l'i-esimo iteratore associato ad un certo nome.
 java.lang.String getType()
          ritorna il tipo di elemento OQL rappresentato dall'oggetto (fornisce cioe` il nome della classe)
 boolean hasProjection()
          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,
 boolean hasStar()
          ruotine per la verifica della presenza dell'operatore '*' come attributo di proiezione .
 java.lang.String selectIterator(java.lang.String it, java.util.HashSet ins)
          routine per la scelta dell'iteratore.
Tenendo in considerazione gli iteratori gia` impiegati nella Query ne viene creato uno nuovo.
 java.lang.String toString()
          stampa in una stringa il contenuto dell'oggetto
 TransOutput translateQuery(java.lang.String lc, MappingTable mt, Oql_SimpleQuery lq)
          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.
 
Methods inherited from class oql.Oql_Query
addIterator, addPar, clona, getAttrName, getLink, getRefName, isBasic, isDefault, isNull, traslErr
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

distinct

public boolean distinct
indica l'eventuale presenza della clausola distinct

selectClause

public java.util.Vector selectClause
e' un vettore in cui vengono memorizzati gli attributi di proiezione, qualli presenti nella clausola select

fromClause

protected java.util.Vector fromClause
e' un vettore in cui vengono memorizzate tutte le classi presenti nella clausola from, cioe` le classi di cui viene fatto il join. Gli elementi di questo vettore sono isatnze della classe FromElement.

whereClause

public Oql_Query whereClause
e' un campo che permette la rappresentazione dei predicati di selezione

groupByClause

public GroupBy groupByClause
rappresenta la clausola group by che permette il raggruppamento dei risultati della query. Questa proprieta` e` un vettore che indica l'insieme di partizioni da realizzare

orderByClause

public java.util.Vector orderByClause
e` un campo di tipo collezione che specifica i criteri di ordinamento. Gli elementi di questo vettore devono essere istanze della classe oql.Sort.

names

public java.util.HashMap names
e` un campo di tipo HashMap impiegato allo scopo di raccogliere tutti i nomi che compaiono nella query

iterators

public java.util.TreeMap iterators
contiene le corrispondenze tra nomi di classe ed iteratori. In particolare il campo key del TreeMap e` una stringa contenente il nome a cui sono associati gli iteratori ed il campo value e` costituito da un Vector contenente la lista di iteratori associati a quel nome.
Constructor Detail

Oql_SelectExpr

public Oql_SelectExpr(java.util.Vector sc,
                      java.util.Vector fc,
                      boolean d)
crea un'istanza contenente l'insieme di attributi di proiezione e l'insieme di classi presenti nella clausola from. Viene anche specificata la presenza o meno dell' operatore distinct
Parameters:
sc - vettore contenente gli attributi di proiezione
fc - vettore contenente elementi di tipo FromElemet che descrivono le classi poste in join
d - indica la presenza (valore true) della clausola distinct

Oql_SelectExpr

public Oql_SelectExpr(java.util.Vector sc,
                      java.util.Vector fc,
                      boolean d,
                      int l,
                      int c,
                      int p)
crea un'istanza fornendo gli attributi della clausola select, le classi della claudola from, indicando la presenza dell' operatore distinct . Inoltre vengono inidcati il numero di riga, di colonna e di parentesi.
Parameters:
sc - vettore contenente gli attributi di proiezione.
fc - vettore contenente le classi poste in join.
d - indica la presenza (valore true) della clausola distinct
l - indica il numero di riga
c - indica il numero di colonna
p - indica il numero di parentesi

Oql_SelectExpr

public Oql_SelectExpr()
crea un'istanza completamente vuota
Method Detail

getClasses

public java.util.Vector getClasses()
                            throws java.lang.Exception
restituisce in un vettore di oggett FromElement i nomi delle classi sorgenti coinvolte nella query. Per classi sorgenti si intendono le classi presenti nello schema escludendo eventuali sottoquery.
Returns:
restituisce un vettore contenente le classi.

getFromClause

public java.util.Vector getFromClause()
restituisce tutti gli elementi presenti nella FromClause.
Returns:
restituisce un vettore contenente gli elementi (oggetti di tipo FromElement) contenuti nella clausola from

addClass

public void addClass(FromElement frEle)
metodo per l'inserimento di un elemento nella clausola from.
L'elemento che viene inserito deve essere di tipo FromElement.
Parameters:
element - e` l'oggetto di tipo FromElement che viene aggiunto alla clausola.

hasStar

public boolean hasStar()
ruotine per la verifica della presenza dell'operatore '*' come attributo di proiezione .
Returns:
restituisce true se '*' e` presente, false altrimenti

getClassIterators

public java.util.Vector getClassIterators(java.lang.String cName)
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.
Parameters:
cName - stringa contenente il nome della classe.
Returns:
restituisce gli iteratori associati alla classe e le eccezioni sono gestite restituendo:
- Vettore null se la classe globale non esiste.
- Stringa vuota "" se la classe e` presente in un campo senza iteratore.

getIterator

public java.lang.String getIterator(java.lang.String cName,
                                    int pos)
restituisce l'i-esimo iteratore associato ad un certo nome.
Parameters:
name - stringa contenente il nome della classe
pos - intero che indica quale iteratore vogliamo(la numerazione va da 0,per il primo iteratore, al numero massiomo -1
Returns:
restituisce:
- una stringa contenente il nome dell'iteratore se ne esistono almeno pos associati a name.
- una stringa vuota, "", se pos e` maggiore del numero di iteratori effettivamente usati per quel cName o se non esiste name nel campo iterators.

addSelPred

public void addSelPred(Oql_Query pred)
routine per l'aggiunta di un nuovo predicato di selezione. Il predicato viene passato come parametro e deve essere aggiunto in and a quelli gia` presenti.

translateQuery

public TransOutput translateQuery(java.lang.String lc,
                                  MappingTable mt,
                                  Oql_SimpleQuery lq)
                           throws java.lang.Exception
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. Occorre osservare che la trasformazione viene effettuata soltanto su query semplici (BasicQuery), pertanto il metodo ritorna un messaggio di errore nel caso in cui si cerchi di trasformare una query di altro tipo.
Parameters:
lc - e` una stringa contenente il nome completo della classe locale dove per completo si intende nella notazione "source_name.class_name"
mt - e` la Mapping Table contenente le informazioni relative alla classe locale
lq - e` la struttura contenente la query locale, cioe` il target della trasformazione.
Returns:
restituisce un oggetto di tipo TransOutput contenente gli elementi necessari alla fase di trasformazione
Overrides:
translateQuery in class Oql_Query

selectIterator

public java.lang.String selectIterator(java.lang.String it,
                                       java.util.HashSet ins)
routine per la scelta dell'iteratore.
Tenendo in considerazione gli iteratori gia` impiegati nella Query ne viene creato uno nuovo. Tale creazione tiene conto di un'eventuale preferenza e di una lista di nomi che non possono essere impiegati. Se il nome scelto non compare nella lista di quelli non impiegabili e non e` un iteratore gia` usato allora il metodo restituisce il nome stesso, altrimenti crea una stringa che rispetti le condizioni indicate.
Parameters:
it - e` il nome che si vorrebbe assgnare all'iteratore. Se e' la stringa vuota o un oggetto null, non viene considerato
ins - e` l'insieme dei nomi che non possono essere utilizzati
Returns:
restituisce una stringa contenete l'iteratore

hasProjection

public boolean hasProjection()
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,

toString

public java.lang.String toString()
stampa in una stringa il contenuto dell'oggetto
Overrides:
toString in class Oql_Query

getType

public java.lang.String getType()
ritorna il tipo di elemento OQL rappresentato dall'oggetto (fornisce cioe` il nome della classe)
Overrides:
getType in class Oql_Query