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 >
Text File  |  2001-03-02  |  5KB  |  183 lines

  1. package progetto2;
  2.  
  3. import com.odi.*;
  4. import com.odi.util.*;
  5. import com.odi.util.query.*;
  6. import java.util.*;
  7.  
  8. final public class Top
  9. {
  10.   public static Database db=null;
  11.  
  12.   public static void main(String argv[]) throws java.io.IOException
  13.   {
  14.     String dbName="dbColl.odb";
  15.     ObjectStore.initialize(null, null);
  16.     try{
  17.     db = createDatabase(dbName);
  18.          readDatabase(db);
  19.          queryDatabase(db);
  20.          queryParDatabase(db,argv[0]);
  21.          db.close();
  22.        }
  23.     catch(Exception e){
  24.         System.out.println(e);
  25.     }
  26.     finally{
  27.         ObjectStore.shutdown(true);
  28.     }
  29.   }
  30.  
  31. static Database createDatabase(String dbName)
  32.   {
  33.    try{
  34.        db = Database.open(dbName,  ObjectStore.OPEN_UPDATE);
  35.       }
  36.       catch (DatabaseNotFoundException e){
  37.       db = Database.create(dbName,ObjectStore.ALL_READ | ObjectStore.ALL_WRITE);
  38.  
  39.       Transaction t = Transaction.begin(ObjectStore.UPDATE);
  40.  
  41.       Universita u = new Universita();
  42.  
  43.       OSTreeSet pub = new OSTreeSet(db);
  44.       OSTreeSet tit = new OSTreeSet(db);
  45.  
  46.       Candidato gio = new Candidato ("GRRGNN69R48D969D","Giovanna","Guerrini",1969,
  47.         "Genova","guerrini@disi.unige.it",u,pub,null,tit);
  48.  
  49.       Conferenza ecoop = new Conferenza("ECOOP", "AITO", "Springer", 10);
  50.       Conferenza time = new Conferenza("TIME", "FLAIRS", "IEEE", 8);
  51.  
  52.  
  53.       Rivista tkde = new Rivista("TKDE", "IEEE", 10);
  54.       Rivista tapos = new Rivista("TAPOS", "Wiley", 9);
  55.  
  56.       Libro p1 = new Libro("UTET","Basi di dati", 1997, 3);
  57.  
  58.       PubblConferenza p2 = new PubblConferenza(ecoop,null,
  59.                              "Objects with Multiple Most Specific Classes", 1995, 1);
  60.  
  61.       PubblConferenza p3 = new PubblConferenza(ecoop,null,
  62.                              "Deductive Object Databases", 1994, 2);
  63.  
  64.       PubblConferenza p4 = new PubblConferenza(time,null,
  65.                              "A Temporal Data Model with Multiple Granularities", 1999, 3);
  66.  
  67.  
  68.       PubblRivista p5 = new PubblRivista(24, 5, tkde,null,
  69.                              "Navigational Access in Temporal Object Databases", 1998, 2);
  70.  
  71.  
  72.       PubblRivista p6 = new PubblRivista(1, 1, tapos,p3,
  73.                              "Towards Deductive Object Databases", 1995, 2);
  74.  
  75.       p3.versEstesa = p6;
  76.  
  77.       gio.pubblicazioni.add(p1);
  78.       gio.pubblicazioni.add(p2);
  79.       gio.pubblicazioni.add(p3);
  80.       gio.pubblicazioni.add(p4);
  81.       gio.pubblicazioni.add(p5);
  82.       gio.pubblicazioni.add(p6);
  83.  
  84.         gio.inserisciTitolo(true,"Scienze dell'Informazione", 1993, u, 110);
  85.         gio.inserisciTitolo(false,"Informatica", 1998, u, 0);
  86.  
  87.       gio.updateExtents(db,true);
  88.  
  89.    t.commit();
  90.    }
  91.  
  92.  
  93.    return db;
  94.   }
  95.  
  96.  
  97. static void readDatabase(Database db)
  98.   {
  99.    Transaction tr = Transaction.begin(ObjectStore.READONLY);
  100.  
  101.    OSTreeSet pubbli = (OSTreeSet)Pubblicazione.Ext.getExtents(db);
  102.    Iterator iters = pubbli.iterator();
  103.  
  104.    if (!iters.hasNext())
  105.         System.out.println("Non ci sono pubblicazioni");
  106.       while (iters.hasNext()) {
  107.    Pubblicazione p = (Pubblicazione)iters.next();
  108.    System.out.print(p.titolo);
  109.    System.out.println(" -- il punteggio e': " + p.punteggio());
  110.    }
  111.  
  112.    OSTreeSet candidati = (OSTreeSet)Candidato.Ext.getExtents(db);
  113.    Iterator iter = candidati.iterator();
  114.  
  115.    if (!iter.hasNext())
  116.         System.out.println("Non ci sono candidati");
  117.       while (iter.hasNext()) {
  118.    Candidato c= (Candidato)iter.next();
  119.    System.out.println(c.nome);
  120.    System.out.println("Il punteggio titoli e' " + c.punteggioTitoli());
  121.    System.out.println("Il punteggio pubblicazioni per il 98-2000 e' " + c.punteggioPubbli(1998,2000));
  122.    System.out.println("Le pubblicazioni a nome singolo sono: " + c.numPubbliSingole());
  123.    }
  124.  
  125.  
  126.    tr.commit();
  127.  
  128.    //db.close();
  129.   }
  130.  
  131. static void queryDatabase(Database db)
  132.   {
  133.    Transaction tr = Transaction.begin(ObjectStore.READONLY);
  134.  
  135.    Query q1 = new Query (Pubblicazione.class,"punteggio() > 5");
  136.    OSTreeSet tuttePubbli = (OSTreeSet)Pubblicazione.Ext.getExtents(db);
  137.    Collection ok = q1.select(tuttePubbli);
  138.  
  139.    Iterator iter = ok.iterator();
  140.  
  141.    if (!iter.hasNext())
  142.         System.out.println("Non ci sono pubblicazioni ok");
  143.       while (iter.hasNext()) {
  144.    Pubblicazione p = (Pubblicazione)iter.next();
  145.    System.out.println(p.titolo);
  146.    }
  147.  
  148.    tr.commit();
  149.  
  150.    //db.close();
  151.   }
  152.  
  153.  
  154. static void queryParDatabase(Database db, String par1)
  155.   {
  156.    Transaction tr = Transaction.begin(ObjectStore.READONLY);
  157.  
  158.    FreeVariables vars = new FreeVariables();
  159.    vars.put("a",String.class);
  160.    Query q2 = new Query (Candidato.class,"indirizzo == a && punteggioPubbli(1900,2000) > 20",vars);
  161.  
  162.    FreeVariableBindings binds = new FreeVariableBindings();
  163.    binds.put("a",par1);
  164.    OSTreeSet tuttiCandidati = (OSTreeSet)Candidato.Ext.getExtents(db);
  165.    Collection ok = q2.select(tuttiCandidati,binds);
  166.  
  167.    Iterator iter = ok.iterator();
  168.  
  169.    if (!iter.hasNext())
  170.         System.out.println("Non ci sono candidati ok");
  171.       while (iter.hasNext()) {
  172.    Candidato c = (Candidato)iter.next();
  173.    System.out.println(c.nome + "-" + c.punteggioPubbli(1900,2000));
  174.    }
  175.  
  176.    tr.commit();
  177.  
  178.    //db.close();
  179.   }
  180.  
  181.  
  182. }
  183.