1 package org.paneris.bibliomania; 2 3 import java.util.Enumeration; 4 5 import org.melati.poem.AccessToken; 6 import org.melati.poem.PoemTask; 7 import org.melati.util.UnexpectedExceptionException; 8 import org.paneris.bibliomania.generated.BookStockingBase; 9 10 import org.apache.oro.text.regex.MalformedPatternException; 11 import org.apache.oro.text.regex.Perl5Compiler; 12 import org.apache.oro.text.regex.Perl5Matcher; 13 import org.apache.oro.text.regex.Perl5Pattern; 14 15 public class BookStocking extends BookStockingBase { 16 public BibliomaniaDatabase getBibliomaniaDatabase () { 17 return (BibliomaniaDatabase)getDatabase(); 18 } 19 20 public BookStocking() {} 21 22 public String getNotifyOfferedLinkHTML() { 23 return getShop().backend.notifiedOfferedLinkHTML(this); 24 } 25 26 public String getProductURL() { 27 return getShop().backend.productURL(this); 28 } 29 30 private static Perl5Pattern numberPattern; 31 32 static { 33 try { 34 numberPattern = (Perl5Pattern)(new Perl5Compiler()).compile( 35 "([0-9]*\\.)[0-9]+", 36 Perl5Compiler.DEFAULT_MASK); 37 } 38 catch (MalformedPatternException e) { 39 throw new UnexpectedExceptionException(e); 40 } 41 } 42 43 public void setPrice_unsafe(String price) { 44 super.setPrice_unsafe(price); 45 if (price == null) 46 pricenumber = null; 47 else { 48 Perl5Matcher matcher = new Perl5Matcher(); 49 if (matcher.contains(price, numberPattern)) { 50 try { 51 float p = Float.parseFloat(matcher.getMatch().toString()); 52 pricenumber = new Integer((int)(p * 100)); 53 } 54 catch (Exception e) { 55 pricenumber = null; 56 } 57 } 58 } 59 } 60 61 public void setFormat_unsafe(String format) { 62 super.setFormat_unsafe(format); 63 if (format == null) 64 setFormatcode_unsafe(null); 65 else if (troid() != null) { 66 BookFormat code = getBibliomaniaDatabase().getBookFormatTable(). 67 formatOfDescription(format); 68 setFormatcode_unsafe(code == null ? null : code.troid()); 69 } 70 } 71 72 public void dump(java.io.PrintStream o) { 73 o.println("id: `" + id + "'\n" + 74 "shop: `" + shop + "'\n" + 75 "book: `" + book + "'\n" + 76 "title: `" + title + "'\n" + 77 "author: `" + author + "'\n" + 78 "vendorproductid: `" + vendorproductid + "'\n" + 79 "isbn: `" + isbn + "'\n" + 80 "deliveryinfo: `" + deliveryinfo + "'\n" + 81 "price: `" + price + "'\n" + 82 "pricenumber: `" + pricenumber + "'\n" + 83 "format: `" + format + "'\n" + 84 "publisher: `" + publisher + "'\n" + 85 "publicationyear: `" + publicationyear + "'\n" + 86 "detailurl: `" + detailurl + "'\n" + 87 "thumbnailurl: `" + thumbnailurl + "'"); 88 } 89 90 public static void main(String args[]) { 91 final BibliomaniaDatabase bib = new BibliomaniaDatabase(); 92 bib.connect("bibliomania","org.melati.poem.dbms.Postgresql", 93 "jdbc:postgresql:bibliomania", "postgres", "*",8); 94 95 bib.inSession( 96 AccessToken.root, 97 new PoemTask() { 98 public void run() { 99 for (Enumeration e = bib.getBookStockingTable().selection(); 100 e.hasMoreElements();) { 101 BookStocking s = (BookStocking)e.nextElement(); 102 s.setFormat(s.getFormat_unsafe()); 103 } 104 } 105 }); 106 } 107 }