nothing...
[serc.git] / serc.java
blobcc882e305d5f90f5dd5a53f2df9f80f7e571b42d
1 /** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2 * Copyright 2008 Ledermueller Achim
4 * serc is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/
18 import javax.swing.*;
19 import javax.swing.event.*;
20 import javax.swing.table.*;
21 import java.awt.*;
22 import java.awt.event.*;
23 import java.util.Vector;
24 import java.util.*;
26 public class serc extends JFrame {
27 Fetcher[] f = new Fetcher[6];
28 Parser[] p = new Parser[6];
29 ResultSet rSet0, rSet1;
30 Resolver r;
32 JButton go = new JButton("Go!");
33 JLabel sE1 = new JLabel( "Suchmaschine 1 ", JLabel.RIGHT);
34 JLabel sE2 = new JLabel( "Suchmaschine 2 ", JLabel.RIGHT);
35 JLabel query = new JLabel( "Query ", JLabel.RIGHT);
36 JComboBox sET1 = new JComboBox(new String[]{"scholar.google.com", "scientificcommons.org", "oaister.org", "scirus.com", "E-LIS" });
37 JComboBox sET2 = new JComboBox(new String[]{"scholar.google.com", "scientificcommons.org", "oaister.org", "scirus.com", "E-LIS" });
38 //JTextField queryT = new JTextField("information retrieval yates practical");
39 JTextField queryT = new JTextField("LOV domain");
40 JComboBox number = new JComboBox(new String[]{"30","60", "90"});
42 JTable urlTable, fileTable, domainTable;
43 JLabel sameUri = new JLabel("Same URI", JLabel.CENTER);
44 JLabel sameFile = new JLabel("Same File", JLabel.CENTER);
45 JLabel sameDomain = new JLabel("Same Domain", JLabel.CENTER);
46 JLabel proceeding = new JLabel(" - ", JLabel.CENTER);
49 String[] columnNamesUrl={"URI","Rank"};
50 String[] columnNamesFile={"File","Host"};
51 String[] columnNamesDomain={"Host","Path"};
53 AbstractTableModel urlTm, fileTm, domainTm;
55 public serc(){
57 go.addActionListener(new ActionListener(){
58 public void actionPerformed(ActionEvent e){
59 System.out.println("1: " + sET1.getSelectedIndex());
60 System.out.println("2: " + sET2.getSelectedIndex());
61 System.out.println("3: " + queryT.getText());
62 go(sET1.getSelectedIndex(), sET2.getSelectedIndex(), queryT.getText(), Integer.parseInt(number.getSelectedItem().toString()));
65 });
67 sE1.setLabelFor(sET1);
68 sE2.setLabelFor(sET2);
69 query.setLabelFor(queryT);
71 Box vb = Box.createVerticalBox();
72 Box hb = Box.createHorizontalBox();
74 JPanel panel = new JPanel();
75 GridLayout grid = new GridLayout(1,4);
76 grid.setHgap(50);
77 panel.setLayout(grid);
78 panel.add(query);
79 panel.add(queryT);
80 panel.add(number);
81 panel.add(go);
83 JPanel panel1 = new JPanel();
84 panel1.setLayout(new GridLayout(1,2));
85 panel1.add(sE1);
86 panel1.add(sET1);
88 JPanel panel2 = new JPanel();
89 panel2.setLayout(new GridLayout(1,2));
90 panel2.add(sE2);
91 panel2.add(sET2);
93 hb.add(panel1);
94 hb.add(Box.createHorizontalStrut(25));
95 hb.add(panel2);
97 urlTm = new AbstractTableModel() {
98 public String getColumnName(int col) {
99 if(col<0||col>1)
100 return"";
101 return columnNamesUrl[col].toString();
103 public boolean isCellEditable(int row , int col){
104 return false;
106 public int getRowCount() {
107 if(r == null)
108 return 0;
109 return r.urlsSe1.size()*2;
111 public int getColumnCount() {
112 return columnNamesUrl.length;
114 public Object getValueAt(int row, int col) {
115 switch(col){
116 case 0: if(row%2 == 0)
117 return r.urlsSe1.get(row/2).getRelevantUrl().getHost() + r.urlsSe1.get(row/2).getRelevantUrl().getFile();
118 else
119 return"";
120 case 1: if(row%2 == 0)
121 return rSet0.results.indexOf(r.urlsSe1.get(row/2));
122 else
123 return rSet1.results.indexOf(r.urlsSe2.get(row/2));
124 default: return"";
127 public void setValueAt(Object value, int row, int col) {
130 fileTm = new AbstractTableModel() {
131 public String getColumnName(int col) {
132 if(col<0||col>1)
133 return"";
134 return columnNamesFile[col].toString();
136 public boolean isCellEditable(int row , int col){
137 return false;
139 public int getRowCount() {
140 if(r == null)
141 return 0;
142 return r.files.size();
144 public int getColumnCount() {
145 return columnNamesFile.length;
147 public Object getValueAt(int row, int col) {
148 switch(col){
149 case 0: if(row%2 == 0)
150 return Resolver.getFilename(r.files.get(row));
151 else
152 return "";
153 case 1: return r.files.get(row).getHost();
154 default: return"";
157 public void setValueAt(Object value, int row, int col) {
160 domainTm = new AbstractTableModel() {
161 public String getColumnName(int col) {
162 if(col<0||col>1)
163 return"";
164 return columnNamesDomain[col].toString();
166 public boolean isCellEditable(int row , int col){
167 return false;
169 public int getRowCount() {
170 if(r == null)
171 return 0;
172 return r.domains.size();
174 public int getColumnCount() {
175 return columnNamesDomain.length;
177 public Object getValueAt(int row, int col) {
178 switch(col){
179 case 0: if(row%2 == 0)
180 return r.domains.get(row).getHost();
181 else
182 return "";
183 case 1: return r.domains.get(row).getPath() + "?" + r.domains.get(row).getQuery();
184 default: return"";
187 public void setValueAt(Object value, int row, int col) {
191 urlTable = new JTable(urlTm);
192 fileTable = new JTable(fileTm);
193 domainTable = new JTable(domainTm);
194 urlTable.setPreferredScrollableViewportSize(new Dimension(500, 250));
195 fileTable.setPreferredScrollableViewportSize(new Dimension(500, 250));
196 domainTable.setPreferredScrollableViewportSize(new Dimension(500, 180));
198 vb.add(Box.createVerticalStrut(20));
199 vb.add(panel);
200 vb.add(Box.createVerticalStrut(20));
201 vb.add(hb);
202 vb.add(Box.createVerticalStrut(20));
203 vb.add(proceeding);
204 vb.add(Box.createVerticalStrut(20));
205 vb.add(sameUri);
206 vb.add(new JScrollPane(urlTable));
207 vb.add(Box.createVerticalStrut(20));
208 vb.add(sameFile);
209 vb.add(new JScrollPane(fileTable));
210 vb.add(Box.createVerticalStrut(20));
211 vb.add(sameDomain);
212 vb.add(new JScrollPane(domainTable));
213 vb.add(Box.createVerticalStrut(20));
215 setContentPane(vb);
216 pack();
217 setVisible(true);
218 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
221 private void go(int sg0, int sg1, String query, int number) {
222 System.out.println("Proceeding!");
223 proceeding.setText("Proceeding!");
224 proceeding.updateUI();
225 proceeding.updateUI();
227 if(sg0 == sg1) {
228 System.out.println("Choose different SearchEngines!");
229 proceeding.setText("Choose different SearchEngines!");
230 proceeding.updateUI();
231 proceeding.updateUI();
232 return;
235 //if(Fetcher.searchEngines[sg0].equals("all") || Fetcher.searchEngines[sg1].equals("all")) {
236 // f[0] = new Fetcher(); p[0] = new Parser();
237 // f[1] = new Fetcher(); p[1] = new Parser();
238 // f[2] = new Fetcher(); p[2] = new Parser();
239 // f[3] = new Fetcher(); p[3] = new Parser();
240 // f[4] = new Fetcher(); p[4] = new Parser();
241 // f[5] = new Fetcher(); p[5] = new Parser();
243 // if(!Fetcher.searchEngines[sg0].equals("all")) {
244 // rSet0 = p[0].extractData(Fetcher.searchEngines[sg0], f[0].getPage(Fetcher.searchEngines[sg0], query, number, false));
245 // rSet1 = new ResultSet();
247 // for(int i=0; i<Fetcher.searchEngines.length; i++) {
248 // if(i == sg0 || Fetcher.searchEngines[i].equals("all") || i == 4) //4 == eprints.eclis ELIS, very slow
249 // continue;
250 // rSet1.addAll(p[i+1].extractData(Fetcher.searchEngines[i], f[i+1].getPage(Fetcher.searchEngines[i], query, number, false)));
251 // }
252 // }else {
253 // rSet0 = p[0].extractData(Fetcher.searchEngines[sg1], f[0].getPage(Fetcher.searchEngines[sg1], query, number, false));
254 // rSet1 = new ResultSet();
256 // for(int i=0; i<Fetcher.searchEngines.length; i++) {
257 // if(i == sg1 || Fetcher.searchEngines[i].equals("all") || i == 4) //4 == eprints.eclis ELIS, very slow
258 // continue;
259 // rSet1.addAll(p[i+1].extractData(Fetcher.searchEngines[i], f[i+1].getPage(Fetcher.searchEngines[i], query, number, false)));
260 // }
261 // }
263 //} else {
265 f[0] = new Fetcher();
266 p[0] = new Parser();
268 f[1] = new Fetcher();
269 p[1] = new Parser();
271 r = new Resolver();
273 rSet0 = p[0].extractData(Fetcher.searchEngines[sg0], f[0].getPage(Fetcher.searchEngines[sg0], query, number, false));
274 Result.counter = 0; // Reset rank-counter
275 rSet1 = p[1].extractData(Fetcher.searchEngines[sg1], f[1].getPage(Fetcher.searchEngines[sg1], query, number, false));
277 r.compare(rSet0, rSet1);
281 System.out.println("Done!");
282 proceeding.setText("Done!");
283 proceeding.updateUI();
285 urlTm.fireTableDataChanged();
286 domainTm.fireTableDataChanged();
287 fileTm.fireTableDataChanged();
291 public static void main(String[] args) {
292 new serc();