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.
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 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/
19 import javax
.swing
.event
.*;
20 import javax
.swing
.table
.*;
22 import java
.awt
.event
.*;
23 import java
.util
.Vector
;
26 public class serc
extends JFrame
{
27 Fetcher
[] f
= new Fetcher
[6];
28 Parser
[] p
= new Parser
[6];
29 ResultSet rSet0
, rSet1
;
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
;
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()));
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);
77 panel
.setLayout(grid
);
83 JPanel panel1
= new JPanel();
84 panel1
.setLayout(new GridLayout(1,2));
88 JPanel panel2
= new JPanel();
89 panel2
.setLayout(new GridLayout(1,2));
94 hb
.add(Box
.createHorizontalStrut(25));
97 urlTm
= new AbstractTableModel() {
98 public String
getColumnName(int col
) {
101 return columnNamesUrl
[col
].toString();
103 public boolean isCellEditable(int row
, int col
){
106 public int getRowCount() {
109 return r
.urlsSe1
.size()*2;
111 public int getColumnCount() {
112 return columnNamesUrl
.length
;
114 public Object
getValueAt(int row
, int col
) {
116 case 0: if(row
%2 == 0)
117 return r
.urlsSe1
.get(row
/2).getRelevantUrl().getHost() + r
.urlsSe1
.get(row
/2).getRelevantUrl().getFile();
120 case 1: if(row
%2 == 0)
121 return rSet0
.results
.indexOf(r
.urlsSe1
.get(row
/2));
123 return rSet1
.results
.indexOf(r
.urlsSe2
.get(row
/2));
127 public void setValueAt(Object value
, int row
, int col
) {
130 fileTm
= new AbstractTableModel() {
131 public String
getColumnName(int col
) {
134 return columnNamesFile
[col
].toString();
136 public boolean isCellEditable(int row
, int col
){
139 public int getRowCount() {
142 return r
.files
.size();
144 public int getColumnCount() {
145 return columnNamesFile
.length
;
147 public Object
getValueAt(int row
, int col
) {
149 case 0: if(row
%2 == 0)
150 return Resolver
.getFilename(r
.files
.get(row
));
153 case 1: return r
.files
.get(row
).getHost();
157 public void setValueAt(Object value
, int row
, int col
) {
160 domainTm
= new AbstractTableModel() {
161 public String
getColumnName(int col
) {
164 return columnNamesDomain
[col
].toString();
166 public boolean isCellEditable(int row
, int col
){
169 public int getRowCount() {
172 return r
.domains
.size();
174 public int getColumnCount() {
175 return columnNamesDomain
.length
;
177 public Object
getValueAt(int row
, int col
) {
179 case 0: if(row
%2 == 0)
180 return r
.domains
.get(row
).getHost();
183 case 1: return r
.domains
.get(row
).getPath() + "?" + r
.domains
.get(row
).getQuery();
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));
200 vb
.add(Box
.createVerticalStrut(20));
202 vb
.add(Box
.createVerticalStrut(20));
204 vb
.add(Box
.createVerticalStrut(20));
206 vb
.add(new JScrollPane(urlTable
));
207 vb
.add(Box
.createVerticalStrut(20));
209 vb
.add(new JScrollPane(fileTable
));
210 vb
.add(Box
.createVerticalStrut(20));
212 vb
.add(new JScrollPane(domainTable
));
213 vb
.add(Box
.createVerticalStrut(20));
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();
228 System
.out
.println("Choose different SearchEngines!");
229 proceeding
.setText("Choose different SearchEngines!");
230 proceeding
.updateUI();
231 proceeding
.updateUI();
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
250 // rSet1.addAll(p[i+1].extractData(Fetcher.searchEngines[i], f[i+1].getPage(Fetcher.searchEngines[i], query, number, false)));
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
259 // rSet1.addAll(p[i+1].extractData(Fetcher.searchEngines[i], f[i+1].getPage(Fetcher.searchEngines[i], query, number, false)));
265 f
[0] = new Fetcher();
268 f
[1] = new Fetcher();
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
) {