1 package org.paneris.bibliomania.metasearch.bob;
2
3 import java.io.File;
4 import java.io.FileNotFoundException;
5 import java.io.IOException;
6 import java.util.Enumeration;
7
8 import org.melati.poem.transaction.ToTidyList;
9 import org.melati.util.UTF8URLEncoder;
10 import org.paneris.bibliomania.BookStocking;
11 import org.paneris.bibliomania.metasearch.BOLAndBOBBackendBase;
12 import org.paneris.bibliomania.metasearch.BookPageBase;
13 import org.paneris.bibliomania.metasearch.BookStockingFactory;
14
15 import com.sleepycat.db.DatabaseException;
16
17 public class Backend extends BOLAndBOBBackendBase {
18
19 public static final String url = "http://bookshop.blackwell.co.uk";
20
21 public Backend(File dbHome, int isbnOfPrdidCacheSize)
22 throws FileNotFoundException, DatabaseException {
23 super(dbHome, "bob_isbnAndImageOfPrdid.db", isbnOfPrdidCacheSize, url);
24 }
25
26 public byte[] productPage_nonaffil(BookStocking stocking)
27 throws IOException {
28 return Session.content(url + stocking.getDetailurl_unsafe(), 16384, 100000);
29 }
30
31 protected BookPageBase bookPage(byte[] text) {
32 return new BookPage(text);
33 }
34
35 public String notifiedOfferedLinkHTML(BookStocking stocking) {
36 return "";
37 }
38
39 public String productURL(BookStocking stocking) {
40 return Session.urlInCurrentSession(url + stocking.getDetailurl_unsafe());
41 }
42
43 public static String searchURL(
44 String title,
45 String author,
46 String publisher,
47 String keyword) {
48 return url
49 + "/cgi-bin/BOB2"
50 + "?BV_ServiceName=BOB"
51 + "&form%25destination=%2Fbob%2Fbob_searchresults.html.tmpl"
52 + "&form%25destination_type=template"
53 + "&consumer_submit00000%25destination=%2Fbob%2Fbob_searchresults.html.tmpl"
54 + "&consumer_submit00000%25destination_type=template"
55 + "&consumer_submit00000%25save_options=0"
56 + "&consumer_submit00000%25clear_cat_name=0"
57 + "&consumer_submit00000%25check_data=1"
58 + "&form%25title="
59 + UTF8URLEncoder.encode(title)
60 + "&form%25titleOp=AND"
61 + "&form%25author="
62 + UTF8URLEncoder.encode(author)
63 + "&form%25authorOp=AND"
64 + "&form%25publisher="
65 + UTF8URLEncoder.encode(publisher)
66 + "&form%25keywords="
67 + UTF8URLEncoder.encode(keyword)
68 + "&form%25keywordsOp=AND"
69 + "&form%25keywordType=ANYWHERE"
70 + "&form%25isbn="
71 + "&form%25minPrice="
72 + "&form%25maxPrice="
73 + "&form%25fromPubDate="
74 + "&form%25toPubDate="
75 + "&consumer_submit00001%25destination=%2Fbob%2Fbob_categoryselector.html.tmpl"
76 + "&consumer_submit00001%25destination_type=template"
77 + "&consumer_submit00001%25save_options=0"
78 + "&consumer_submit00001%25clear_cat_name=1"
79 + "&consumer_submit00001%25check_data="
80 + "&form%25category="
81 + "&form%25UK_TITLES=1"
82 + "&form%25ALLAVAIL=1"
83 + "&NO_DISPLAY_RESULTS=1"
84 + "&consumer_input%25NO_DISPLAY_RESULTS=select%25integer%25NO_DISPLAY_RESULTS"
85 + "&form%25SORT_OPTION1=1"
86 + "&consumer_input%25IS_SORT1_DESC=checkbox%25integer%25IS_SORT1_DESC"
87 + "&form%25SORT_OPTION2=0"
88 + "&consumer_input%25IS_SORT2_DESC=checkbox%25integer%25IS_SORT2_DESC"
89 + "&form%25SORT_OPTION3=0"
90 + "&consumer_input%25IS_SORT3_DESC=checkbox%25integer%25IS_SORT3_DESC"
91 + "&form%25SORT_OPTION4=0"
92 + "&consumer_input%25IS_SORT4_DESC=checkbox%25integer%25IS_SORT4_DESC"
93 + "&consumer_submit00002%25destination=%2Fbob%2Fbob_searchresults.html.tmpl"
94 + "&consumer_submit00002%25destination_type=template"
95 + "&consumer_submit00002%25save_options=0"
96 + "&consumer_submit00002%25clear_cat_name=0"
97 + "&consumer_submit00002%25check_data=1"
98 + "&BV_Operation=BOB_ConsumerCriteriaReceive"
99 + "&submit%25consumer_submit00000.x=16"
100 + "&submit%25consumer_submit00000.y=16";
101 }
102
103 public Enumeration booksMatching(
104 BookStockingFactory stockings,
105 String title,
106 String author,
107 String publisher,
108 String keyword,
109 ToTidyList toTidy)
110 throws IOException {
111
112 return new SearchResults(
113 Session.content(
114 searchURL(title, author, publisher, keyword),
115 65536,
116 100000),
117 stockings);
118 }
119 }