1 package org.paneris.bibliomania.loadtest; 2 3 import java.io.FileOutputStream; 4 import java.io.ObjectOutputStream; 5 import java.io.Serializable; 6 import java.util.Enumeration; 7 import java.util.Vector; 8 9 import org.melati.poem.AccessToken; 10 import org.melati.poem.Persistent; 11 import org.melati.poem.PoemTask; 12 import org.melati.poem.util.EnumUtils; 13 import org.melati.util.UnexpectedExceptionException; 14 import org.paneris.bibliomania.BibliomaniaDatabase; 15 import org.paneris.bibliomania.Book; 16 import org.paneris.bibliomania.Chapter; 17 import org.paneris.bibliomania.Unit; 18 19 public class ExtractTree implements Serializable { 20 21 private static final long serialVersionUID = 847223626240878960L; 22 23 public DiscreteDistribution books = new DiscreteDistribution(); 24 public int searchsectiongroup; 25 26 public void readDB() { 27 final BibliomaniaDatabase bib = new BibliomaniaDatabase(false); 28 bib.connect("bibliomania", "org.melati.poem.dbms.Postgresql", 29 "jdbc:postgresql:bibliomania", "postgres", "*",8); 30 bib.inSession( 31 AccessToken.root, 32 new PoemTask() { 33 @SuppressWarnings("unchecked") 34 public void run() { 35 try { 36 searchsectiongroup = 37 bib.getSearchSectionGroup().troid().intValue(); 38 39 dobooks: for (Enumeration<Unit> e = bib.getBookTable().selection(); 40 e.hasMoreElements();) { 41 Book book = (Book)e.nextElement(); 42 43 Vector<Chapter> chapters = EnumUtils.vectorOf(book.getChapters()); 44 if (chapters.size() > 0) { 45 ChapterDesc[] chapterDescs = new ChapterDesc[chapters.size()]; 46 for (int i = 0; i < chapterDescs.length; ++i) { 47 Chapter chapter = (Chapter)chapters.elementAt(i); 48 int p = chapter.totalPages(); 49 if (p == 0) continue dobooks; 50 chapterDescs[i] = new ChapterDesc(chapter.troid().intValue(), 51 chapter.totalPages()); 52 } 53 54 books.add( 55 new BookDesc( 56 book.getSection().getGroupTroid().intValue(), 57 book.getSectionTroid().intValue(), 58 book.getAuthorTroid().intValue(), 59 book.troid().intValue(), 60 chapterDescs)); 61 } 62 } 63 } 64 catch (Exception e) { 65 throw new UnexpectedExceptionException(e); 66 } 67 } 68 }); 69 } 70 71 public static void main(String[] args) throws Exception { 72 ExtractTree t = new ExtractTree(); 73 t.readDB(); 74 ObjectOutputStream o = 75 new ObjectOutputStream(new FileOutputStream("books.ser")); 76 o.writeObject(t); 77 o.close(); 78 } 79 }