home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.disi.unige.it
/
2015-02-11.ftp.disi.unige.it.tar
/
ftp.disi.unige.it
/
pub
/
.person
/
GuerriniG
/
dispense
/
corso-oodb
/
progetti-01
/
progetto2
/
oldtop.java
< prev
next >
Wrap
Text File
|
2001-03-02
|
5KB
|
183 lines
package progetto2;
import com.odi.*;
import com.odi.util.*;
import com.odi.util.query.*;
import java.util.*;
final public class Top
{
public static Database db=null;
public static void main(String argv[]) throws java.io.IOException
{
String dbName="dbColl.odb";
ObjectStore.initialize(null, null);
try{
db = createDatabase(dbName);
readDatabase(db);
queryDatabase(db);
queryParDatabase(db,argv[0]);
db.close();
}
catch(Exception e){
System.out.println(e);
}
finally{
ObjectStore.shutdown(true);
}
}
static Database createDatabase(String dbName)
{
try{
db = Database.open(dbName, ObjectStore.OPEN_UPDATE);
}
catch (DatabaseNotFoundException e){
db = Database.create(dbName,ObjectStore.ALL_READ | ObjectStore.ALL_WRITE);
Transaction t = Transaction.begin(ObjectStore.UPDATE);
Universita u = new Universita();
OSTreeSet pub = new OSTreeSet(db);
OSTreeSet tit = new OSTreeSet(db);
Candidato gio = new Candidato ("GRRGNN69R48D969D","Giovanna","Guerrini",1969,
"Genova","guerrini@disi.unige.it",u,pub,null,tit);
Conferenza ecoop = new Conferenza("ECOOP", "AITO", "Springer", 10);
Conferenza time = new Conferenza("TIME", "FLAIRS", "IEEE", 8);
Rivista tkde = new Rivista("TKDE", "IEEE", 10);
Rivista tapos = new Rivista("TAPOS", "Wiley", 9);
Libro p1 = new Libro("UTET","Basi di dati", 1997, 3);
PubblConferenza p2 = new PubblConferenza(ecoop,null,
"Objects with Multiple Most Specific Classes", 1995, 1);
PubblConferenza p3 = new PubblConferenza(ecoop,null,
"Deductive Object Databases", 1994, 2);
PubblConferenza p4 = new PubblConferenza(time,null,
"A Temporal Data Model with Multiple Granularities", 1999, 3);
PubblRivista p5 = new PubblRivista(24, 5, tkde,null,
"Navigational Access in Temporal Object Databases", 1998, 2);
PubblRivista p6 = new PubblRivista(1, 1, tapos,p3,
"Towards Deductive Object Databases", 1995, 2);
p3.versEstesa = p6;
gio.pubblicazioni.add(p1);
gio.pubblicazioni.add(p2);
gio.pubblicazioni.add(p3);
gio.pubblicazioni.add(p4);
gio.pubblicazioni.add(p5);
gio.pubblicazioni.add(p6);
gio.inserisciTitolo(true,"Scienze dell'Informazione", 1993, u, 110);
gio.inserisciTitolo(false,"Informatica", 1998, u, 0);
gio.updateExtents(db,true);
t.commit();
}
return db;
}
static void readDatabase(Database db)
{
Transaction tr = Transaction.begin(ObjectStore.READONLY);
OSTreeSet pubbli = (OSTreeSet)Pubblicazione.Ext.getExtents(db);
Iterator iters = pubbli.iterator();
if (!iters.hasNext())
System.out.println("Non ci sono pubblicazioni");
while (iters.hasNext()) {
Pubblicazione p = (Pubblicazione)iters.next();
System.out.print(p.titolo);
System.out.println(" -- il punteggio e': " + p.punteggio());
}
OSTreeSet candidati = (OSTreeSet)Candidato.Ext.getExtents(db);
Iterator iter = candidati.iterator();
if (!iter.hasNext())
System.out.println("Non ci sono candidati");
while (iter.hasNext()) {
Candidato c= (Candidato)iter.next();
System.out.println(c.nome);
System.out.println("Il punteggio titoli e' " + c.punteggioTitoli());
System.out.println("Il punteggio pubblicazioni per il 98-2000 e' " + c.punteggioPubbli(1998,2000));
System.out.println("Le pubblicazioni a nome singolo sono: " + c.numPubbliSingole());
}
tr.commit();
//db.close();
}
static void queryDatabase(Database db)
{
Transaction tr = Transaction.begin(ObjectStore.READONLY);
Query q1 = new Query (Pubblicazione.class,"punteggio() > 5");
OSTreeSet tuttePubbli = (OSTreeSet)Pubblicazione.Ext.getExtents(db);
Collection ok = q1.select(tuttePubbli);
Iterator iter = ok.iterator();
if (!iter.hasNext())
System.out.println("Non ci sono pubblicazioni ok");
while (iter.hasNext()) {
Pubblicazione p = (Pubblicazione)iter.next();
System.out.println(p.titolo);
}
tr.commit();
//db.close();
}
static void queryParDatabase(Database db, String par1)
{
Transaction tr = Transaction.begin(ObjectStore.READONLY);
FreeVariables vars = new FreeVariables();
vars.put("a",String.class);
Query q2 = new Query (Candidato.class,"indirizzo == a && punteggioPubbli(1900,2000) > 20",vars);
FreeVariableBindings binds = new FreeVariableBindings();
binds.put("a",par1);
OSTreeSet tuttiCandidati = (OSTreeSet)Candidato.Ext.getExtents(db);
Collection ok = q2.select(tuttiCandidati,binds);
Iterator iter = ok.iterator();
if (!iter.hasNext())
System.out.println("Non ci sono candidati ok");
while (iter.hasNext()) {
Candidato c = (Candidato)iter.next();
System.out.println(c.nome + "-" + c.punteggioPubbli(1900,2000));
}
tr.commit();
//db.close();
}
}