作業部屋の使い方を試しています。
パッケージ名変更
| @@ -1,510 +0,0 @@ | ||
| 1 | -/* | |
| 2 | - * Copyright (C) 2014 kgto. | |
| 3 | - * | |
| 4 | - * This library is free software; you can redistribute it and/or | |
| 5 | - * modify it under the terms of the GNU Lesser General Public | |
| 6 | - * License as published by the Free Software Foundation; either | |
| 7 | - * version 2.1 of the License, or (at your option) any later version. | |
| 8 | - * | |
| 9 | - * This library 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 GNU | |
| 12 | - * Lesser General Public License for more details. | |
| 13 | - * | |
| 14 | - * You should have received a copy of the GNU Lesser General Public | |
| 15 | - * License along with this library; if not, write to the Free Software | |
| 16 | - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | |
| 17 | - * MA 02110-1301 USA | |
| 18 | - */ | |
| 19 | -/* | |
| 20 | - * $Id$ | |
| 21 | - */ | |
| 22 | - | |
| 23 | -package Form; | |
| 24 | - | |
| 25 | -import WebScraping.SearchData; | |
| 26 | -import java.io.BufferedReader; | |
| 27 | -import java.io.BufferedWriter; | |
| 28 | -import java.io.File; | |
| 29 | -import java.io.FileInputStream; | |
| 30 | -import java.io.FileNotFoundException; | |
| 31 | -import java.io.FileOutputStream; | |
| 32 | -import java.io.IOException; | |
| 33 | -import java.io.InputStreamReader; | |
| 34 | -import java.io.OutputStreamWriter; | |
| 35 | -import java.util.ArrayList; | |
| 36 | -import java.util.logging.Level; | |
| 37 | -import java.util.logging.Logger; | |
| 38 | -import javax.xml.parsers.DocumentBuilder; | |
| 39 | -import javax.xml.parsers.DocumentBuilderFactory; | |
| 40 | -import javax.xml.parsers.ParserConfigurationException; | |
| 41 | -import javax.xml.transform.Transformer; | |
| 42 | -import javax.xml.transform.TransformerConfigurationException; | |
| 43 | -import javax.xml.transform.TransformerException; | |
| 44 | -import javax.xml.transform.TransformerFactory; | |
| 45 | -import javax.xml.transform.dom.DOMSource; | |
| 46 | -import javax.xml.transform.stream.StreamResult; | |
| 47 | -import org.w3c.dom.DOMImplementation; | |
| 48 | -import org.w3c.dom.Document; | |
| 49 | -import org.w3c.dom.Element; | |
| 50 | -import org.w3c.dom.Node; | |
| 51 | -import org.w3c.dom.NodeList; | |
| 52 | -import org.xml.sax.SAXException; | |
| 53 | - | |
| 54 | -/** | |
| 55 | - * | |
| 56 | - * @author kgto | |
| 57 | - */ | |
| 58 | -public class SearchDataRW { | |
| 59 | - | |
| 60 | - DocumentBuilder builder; | |
| 61 | - public Document document; | |
| 62 | - Element root; | |
| 63 | - | |
| 64 | - private final String splitchar = "\t"; | |
| 65 | - | |
| 66 | - private String UrlAdress; | |
| 67 | - private ArrayList slist; | |
| 68 | - | |
| 69 | - public SearchDataRW() { | |
| 70 | - try { | |
| 71 | - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); | |
| 72 | - builder = factory.newDocumentBuilder(); | |
| 73 | - | |
| 74 | - } catch (ParserConfigurationException ex) { | |
| 75 | - Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 76 | - } | |
| 77 | - } | |
| 78 | - | |
| 79 | - public void seturl(String UrlAdress) { | |
| 80 | - this.UrlAdress = UrlAdress; | |
| 81 | - } | |
| 82 | - | |
| 83 | - public void setslist(ArrayList slist) { | |
| 84 | - this.slist = slist; | |
| 85 | - } | |
| 86 | - | |
| 87 | - public String geturl() { | |
| 88 | - return UrlAdress; | |
| 89 | - } | |
| 90 | - | |
| 91 | - public ArrayList getslist() { | |
| 92 | - return slist; | |
| 93 | - } | |
| 94 | - | |
| 95 | - /** | |
| 96 | - * 保存. | |
| 97 | - * @param file | |
| 98 | - */ | |
| 99 | - public void save(File file) { | |
| 100 | - //saveCsv(file); | |
| 101 | - //saveXml(file); | |
| 102 | - | |
| 103 | - saveUrl(UrlAdress); | |
| 104 | - saveSearchList(slist); | |
| 105 | - write(file); | |
| 106 | - } | |
| 107 | - | |
| 108 | - /** | |
| 109 | - * 読込. | |
| 110 | - * @param file | |
| 111 | - */ | |
| 112 | - public void load(File file) { | |
| 113 | - //loadCsv(file); | |
| 114 | - //loadXml(file); | |
| 115 | - | |
| 116 | - read(file); | |
| 117 | - UrlAdress = loadUrl(); | |
| 118 | - slist = loadSearchList(); | |
| 119 | - } | |
| 120 | - | |
| 121 | - /* ---------------------------------------------------------------------- */ | |
| 122 | - /** | |
| 123 | - * 保存(CSV形式). | |
| 124 | - * @param file | |
| 125 | - */ | |
| 126 | - public void saveCsv(File file) { | |
| 127 | - | |
| 128 | - try { | |
| 129 | - //空のファイルを作成 | |
| 130 | - file.createNewFile(); | |
| 131 | - | |
| 132 | - FileOutputStream fileoutputstream = new FileOutputStream(file); | |
| 133 | - OutputStreamWriter outputstreamwriter = new OutputStreamWriter(fileoutputstream, "UTF-8"); | |
| 134 | - BufferedWriter bufferedwriter = new BufferedWriter(outputstreamwriter); | |
| 135 | - | |
| 136 | - // URL | |
| 137 | - bufferedwriter.write(UrlAdress); | |
| 138 | - bufferedwriter.write("\n"); | |
| 139 | - // 検索情報 | |
| 140 | - for (Object slist1 : slist) { | |
| 141 | - SearchData sdat = (SearchData) slist1; | |
| 142 | - StringBuilder str = new StringBuilder(); | |
| 143 | - str.append(sdat.getitem()).append(splitchar); | |
| 144 | - str.append(sdat.getHtmltag()).append(splitchar); | |
| 145 | - str.append(sdat.getHtmlid()).append(splitchar); | |
| 146 | - str.append(sdat.getHtmlclass()).append(splitchar); | |
| 147 | - str.append(sdat.getaround()).append(splitchar); | |
| 148 | - str.append(sdat.getregexp()).append("\n"); | |
| 149 | - | |
| 150 | - bufferedwriter.write(str.toString()); | |
| 151 | - } | |
| 152 | - bufferedwriter.close(); | |
| 153 | - | |
| 154 | - } catch(IOException ex) { | |
| 155 | - Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 156 | - } | |
| 157 | - } | |
| 158 | - | |
| 159 | - /** | |
| 160 | - * 読込(CSV形式). | |
| 161 | - * @param file | |
| 162 | - */ | |
| 163 | - public void loadCsv(File file) { | |
| 164 | - slist = new ArrayList(); | |
| 165 | - | |
| 166 | - try { | |
| 167 | - FileInputStream fileinputstream = new FileInputStream(file); | |
| 168 | - InputStreamReader inputstreamreader = new InputStreamReader(fileinputstream, "UTF-8"); | |
| 169 | - BufferedReader bufferedreader = new BufferedReader(inputstreamreader); | |
| 170 | - | |
| 171 | - String rec; | |
| 172 | - | |
| 173 | - // URL | |
| 174 | - UrlAdress = bufferedreader.readLine(); | |
| 175 | - // 検索情報 | |
| 176 | - while((rec = bufferedreader.readLine()) != null) { | |
| 177 | - String[] recary = rec.split(splitchar, -1); | |
| 178 | - SearchData sdat = new SearchData(); | |
| 179 | - sdat.setitem(recary[0]); | |
| 180 | - sdat.setHtmltag(recary[1]); | |
| 181 | - sdat.setHtmlid(recary[2]); | |
| 182 | - sdat.setHtmlclass(recary[3]); | |
| 183 | - sdat.setaround(recary[4]); | |
| 184 | - sdat.setregexp(recary[5]); | |
| 185 | - | |
| 186 | - slist.add(sdat); | |
| 187 | - } | |
| 188 | - bufferedreader.close(); | |
| 189 | - | |
| 190 | - } catch(IOException ex) { | |
| 191 | - Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 192 | - } | |
| 193 | - | |
| 194 | - } | |
| 195 | - | |
| 196 | - /* ---------------------------------------------------------------------- */ | |
| 197 | - /** | |
| 198 | - * 保存(XML形式). | |
| 199 | - * @param file | |
| 200 | - */ | |
| 201 | - public void saveXml(File file) { | |
| 202 | - try { | |
| 203 | - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); | |
| 204 | - DocumentBuilder wkBuilder = factory.newDocumentBuilder(); | |
| 205 | - DOMImplementation domImpl = wkBuilder.getDOMImplementation(); | |
| 206 | - | |
| 207 | - Document doc = domImpl.createDocument("","searchdata",null); | |
| 208 | - Element wkRoot = doc.getDocumentElement(); | |
| 209 | - | |
| 210 | - // URL | |
| 211 | - Element url = doc.createElement("url"); | |
| 212 | - url.appendChild(doc.createTextNode(UrlAdress)); | |
| 213 | - wkRoot.appendChild(url); | |
| 214 | - | |
| 215 | - // 検索情報 | |
| 216 | - for (Object slist1 : slist) { | |
| 217 | - SearchData sdat = (SearchData) slist1; | |
| 218 | - | |
| 219 | - Element cslist = doc.createElement("searchlist"); | |
| 220 | - Element item = doc.createElement("item"); | |
| 221 | - Element htmltag = doc.createElement("htmltag"); | |
| 222 | - Element htmlid = doc.createElement("htmlid"); | |
| 223 | - Element htmlclass = doc.createElement("htmlclass"); | |
| 224 | - Element around = doc.createElement("around"); | |
| 225 | - Element regexp = doc.createElement("regexp"); | |
| 226 | - | |
| 227 | - item.appendChild(doc.createTextNode(sdat.getitem())); | |
| 228 | - htmltag.appendChild(doc.createTextNode(sdat.getHtmltag())); | |
| 229 | - htmlid.appendChild(doc.createTextNode(sdat.getHtmlid())); | |
| 230 | - htmlclass.appendChild(doc.createTextNode(sdat.getHtmlclass())); | |
| 231 | - around.appendChild(doc.createTextNode(sdat.getaround())); | |
| 232 | - regexp.appendChild(doc.createTextNode(sdat.getregexp())); | |
| 233 | - | |
| 234 | - cslist.appendChild(item); | |
| 235 | - cslist.appendChild(htmltag); | |
| 236 | - cslist.appendChild(htmlid); | |
| 237 | - cslist.appendChild(htmlclass); | |
| 238 | - cslist.appendChild(around); | |
| 239 | - cslist.appendChild(regexp); | |
| 240 | - | |
| 241 | - wkRoot.appendChild(cslist); | |
| 242 | - } | |
| 243 | - // 出力 | |
| 244 | - TransformerFactory transFactory = TransformerFactory.newInstance(); | |
| 245 | - Transformer transformer = transFactory.newTransformer(); | |
| 246 | - | |
| 247 | - DOMSource source = new DOMSource(doc); | |
| 248 | - FileOutputStream os = new FileOutputStream(file); | |
| 249 | - StreamResult result = new StreamResult(os); | |
| 250 | - transformer.transform(source, result); | |
| 251 | - | |
| 252 | - } catch (ParserConfigurationException | FileNotFoundException ex) { | |
| 253 | - Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 254 | - } catch (TransformerConfigurationException ex) { | |
| 255 | - Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 256 | - } catch (TransformerException ex) { | |
| 257 | - Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 258 | - } | |
| 259 | - } | |
| 260 | - | |
| 261 | - /** | |
| 262 | - * 読込(XML形式). | |
| 263 | - * @param file | |
| 264 | - */ | |
| 265 | - public void loadXml(File file) { | |
| 266 | - slist = new ArrayList(); | |
| 267 | - | |
| 268 | - try { | |
| 269 | - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); | |
| 270 | - DocumentBuilder wkBuilder = factory.newDocumentBuilder(); | |
| 271 | - Document doc = wkBuilder.parse(file); | |
| 272 | - | |
| 273 | - // ルート要素の取得 | |
| 274 | - Element wkRoot = doc.getDocumentElement(); | |
| 275 | - | |
| 276 | - // URL | |
| 277 | - NodeList url = wkRoot.getElementsByTagName("url"); | |
| 278 | - Node urlnode = url.item(0); | |
| 279 | - UrlAdress = urlnode.getFirstChild().getNodeValue(); | |
| 280 | - | |
| 281 | - // 検索情報 | |
| 282 | - NodeList cslist = wkRoot.getElementsByTagName("searchlist"); | |
| 283 | - for(int i = 0; i < cslist.getLength(); i++) { | |
| 284 | - SearchData sdat = new SearchData(); | |
| 285 | - | |
| 286 | - Node slistnode = cslist.item(i); | |
| 287 | - Node child; | |
| 288 | - for (child = slistnode.getFirstChild(); child != null; child = child.getNextSibling()) { | |
| 289 | - if(child.getNodeType() == Node.ELEMENT_NODE) { | |
| 290 | - | |
| 291 | - String tag = child.getNodeName(); | |
| 292 | - String rtn = ""; | |
| 293 | - if(child.getFirstChild() != null) { | |
| 294 | - rtn = child.getFirstChild().getNodeValue(); | |
| 295 | - } | |
| 296 | - | |
| 297 | - switch (tag) { | |
| 298 | - case "item" : | |
| 299 | - sdat.setitem(rtn); | |
| 300 | - break; | |
| 301 | - case "htmltag" : | |
| 302 | - sdat.setHtmltag(rtn); | |
| 303 | - break; | |
| 304 | - case "htmlid" : | |
| 305 | - sdat.setHtmlid(rtn); | |
| 306 | - break; | |
| 307 | - case "htmlclass" : | |
| 308 | - sdat.setHtmlclass(rtn); | |
| 309 | - break; | |
| 310 | - case "around" : | |
| 311 | - sdat.setaround(rtn); | |
| 312 | - break; | |
| 313 | - case "regexp" : | |
| 314 | - sdat.setregexp(rtn); | |
| 315 | - break; | |
| 316 | - } | |
| 317 | - } | |
| 318 | - } | |
| 319 | - slist.add(sdat); | |
| 320 | - } | |
| 321 | - | |
| 322 | - } catch (ParserConfigurationException | SAXException | IOException ex) { | |
| 323 | - Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 324 | - } | |
| 325 | - } | |
| 326 | - | |
| 327 | - /* ---------------------------------------------------------------------- */ | |
| 328 | - | |
| 329 | - public String loadUrl() { | |
| 330 | - String urladdress; | |
| 331 | - | |
| 332 | - NodeList nodelist = root.getElementsByTagName("url"); | |
| 333 | - Node node = nodelist.item(0); | |
| 334 | - urladdress = node.getFirstChild().getNodeValue(); | |
| 335 | - | |
| 336 | - return urladdress; | |
| 337 | - } | |
| 338 | - | |
| 339 | - public ArrayList<SearchData> loadSearchList() { | |
| 340 | - ArrayList<SearchData> sdatlst = new ArrayList<>(); | |
| 341 | - | |
| 342 | - NodeList nodelist = root.getElementsByTagName("searchlist"); | |
| 343 | - for(int i = 0; i < nodelist.getLength(); i++) { | |
| 344 | - Node childnode = nodelist.item(i); | |
| 345 | - | |
| 346 | - boolean sdatflg = false; | |
| 347 | - SearchData sdat = new SearchData(); | |
| 348 | - | |
| 349 | - //NodeList childnodelist = childnode.getChildNodes(); | |
| 350 | - //for(int j = 0; j < childnodelist.getLength(); j++) { | |
| 351 | - // Node child = childnodelist.item(j); | |
| 352 | - | |
| 353 | - for (Node child = childnode.getFirstChild(); | |
| 354 | - child != null; child = child.getNextSibling()) { | |
| 355 | - | |
| 356 | - if(child.getNodeType() == Node.ELEMENT_NODE) { | |
| 357 | - | |
| 358 | - String tag = child.getNodeName(); | |
| 359 | - String rtn = ""; | |
| 360 | - if(child.getFirstChild() != null) { | |
| 361 | - rtn = child.getFirstChild().getNodeValue(); | |
| 362 | - } | |
| 363 | - | |
| 364 | - switch (tag) { | |
| 365 | - case "item" : | |
| 366 | - sdat.setitem(rtn); | |
| 367 | - sdatflg = true; | |
| 368 | - break; | |
| 369 | - case "htmltag" : | |
| 370 | - sdat.setHtmltag(rtn); | |
| 371 | - sdatflg = true; | |
| 372 | - break; | |
| 373 | - case "htmlid" : | |
| 374 | - sdat.setHtmlid(rtn); | |
| 375 | - sdatflg = true; | |
| 376 | - break; | |
| 377 | - case "htmlclass" : | |
| 378 | - sdat.setHtmlclass(rtn); | |
| 379 | - sdatflg = true; | |
| 380 | - break; | |
| 381 | - case "around" : | |
| 382 | - sdat.setaround(rtn); | |
| 383 | - sdatflg = true; | |
| 384 | - break; | |
| 385 | - case "regexp" : | |
| 386 | - sdat.setregexp(rtn); | |
| 387 | - sdatflg = true; | |
| 388 | - break; | |
| 389 | - } | |
| 390 | - } | |
| 391 | - } | |
| 392 | - if(sdatflg) sdatlst.add(sdat); | |
| 393 | - } | |
| 394 | - return sdatlst; | |
| 395 | - } | |
| 396 | - | |
| 397 | - public Element loadElement(String elementTagName) { | |
| 398 | - NodeList nodelist = root.getElementsByTagName(elementTagName); | |
| 399 | - Element element = (Element)nodelist.item(0); | |
| 400 | - | |
| 401 | - return element; | |
| 402 | - } | |
| 403 | - | |
| 404 | - public void saveUrl(String urladdress) { | |
| 405 | - checkdoc(); | |
| 406 | - removeElement("url"); // 既にElementが存在してた場合、一度削除 | |
| 407 | - | |
| 408 | - Element url = document.createElement("url"); | |
| 409 | - url.appendChild(document.createTextNode(urladdress)); | |
| 410 | - root.appendChild(url); | |
| 411 | - } | |
| 412 | - | |
| 413 | - public void saveSearchList(ArrayList slist) { | |
| 414 | - checkdoc(); | |
| 415 | - removeElement("searchlist"); // 既にElementが存在してた場合、一度削除 | |
| 416 | - | |
| 417 | - int count = 0; | |
| 418 | - for (Object slist1 : slist) { | |
| 419 | - SearchData sdat = (SearchData) slist1; | |
| 420 | - | |
| 421 | - Element cslist = document.createElement("searchlist"); | |
| 422 | - cslist.setAttribute("listNo", String.valueOf(++count)); | |
| 423 | - | |
| 424 | - addChild(cslist, "item", sdat.getitem()); | |
| 425 | - addChild(cslist, "htmltag", sdat.getHtmltag()); | |
| 426 | - addChild(cslist, "htmlid", sdat.getHtmlid()); | |
| 427 | - addChild(cslist, "htmlclass", sdat.getHtmlclass()); | |
| 428 | - addChild(cslist, "around", sdat.getaround()); | |
| 429 | - addChild(cslist, "regexp", sdat.getregexp()); | |
| 430 | - | |
| 431 | - root.appendChild(cslist); | |
| 432 | - } | |
| 433 | - } | |
| 434 | - | |
| 435 | - public void saveElement(Element element) { | |
| 436 | - checkdoc(); | |
| 437 | - removeElement(element.getTagName()); // 既にElementが存在してた場合、一度削除 | |
| 438 | - | |
| 439 | - root.appendChild(element); | |
| 440 | - } | |
| 441 | - | |
| 442 | - private void addChild(Element cslist, String keyword, String data) { | |
| 443 | - if(!data.isEmpty()) { | |
| 444 | - Element element = document.createElement(keyword); | |
| 445 | - element.appendChild(document.createTextNode(data)); | |
| 446 | - cslist.appendChild(element); | |
| 447 | - } | |
| 448 | - } | |
| 449 | - | |
| 450 | - private void removeElement(String elementTagName) { | |
| 451 | - int nodeSize; | |
| 452 | - do { | |
| 453 | - NodeList nodelist = document.getElementsByTagName(elementTagName); | |
| 454 | - nodeSize = nodelist.getLength(); | |
| 455 | - for(int i = 0; i < nodelist.getLength(); i++) { | |
| 456 | - Node node = nodelist.item(i); | |
| 457 | - root.removeChild(node); | |
| 458 | - } | |
| 459 | - } while(nodeSize > 0); | |
| 460 | - } | |
| 461 | - | |
| 462 | - /** | |
| 463 | - * ドキュメントチェック. | |
| 464 | - * 新規の場合やXMLファイルの読込みが行われていない状態時、新たにルートエレメントを作成する。 | |
| 465 | - * 既読の場合、ルートエレメントの取得を行う。 | |
| 466 | - */ | |
| 467 | - public void checkdoc() { | |
| 468 | - if(document == null) { | |
| 469 | - DOMImplementation domImpl = builder.getDOMImplementation(); | |
| 470 | - document = domImpl.createDocument("","searchdata",null); | |
| 471 | - } | |
| 472 | - root = document.getDocumentElement(); | |
| 473 | - } | |
| 474 | - | |
| 475 | - /** | |
| 476 | - * XML読込み. | |
| 477 | - * @param file | |
| 478 | - */ | |
| 479 | - public void read(File file) { | |
| 480 | - try { | |
| 481 | - document = builder.parse(file); | |
| 482 | - root = document.getDocumentElement(); | |
| 483 | - | |
| 484 | - } catch (SAXException | IOException ex) { | |
| 485 | - Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 486 | - } | |
| 487 | - } | |
| 488 | - | |
| 489 | - /** | |
| 490 | - * XML書込み. | |
| 491 | - * @param file | |
| 492 | - */ | |
| 493 | - public void write(File file) { | |
| 494 | - try { | |
| 495 | - TransformerFactory transFactory = TransformerFactory.newInstance(); | |
| 496 | - Transformer transformer = transFactory.newTransformer(); | |
| 497 | - | |
| 498 | - DOMSource source = new DOMSource(document); | |
| 499 | - FileOutputStream os = new FileOutputStream(file); | |
| 500 | - StreamResult result = new StreamResult(os); | |
| 501 | - transformer.transform(source, result); | |
| 502 | - | |
| 503 | - } catch (TransformerConfigurationException ex) { | |
| 504 | - Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 505 | - } catch (FileNotFoundException | TransformerException ex) { | |
| 506 | - Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 507 | - } | |
| 508 | - } | |
| 509 | - | |
| 510 | -} |
| @@ -1,508 +0,0 @@ | ||
| 1 | -/* | |
| 2 | - * Copyright (C) 2014 kgto. | |
| 3 | - * | |
| 4 | - * This library is free software; you can redistribute it and/or | |
| 5 | - * modify it under the terms of the GNU Lesser General Public | |
| 6 | - * License as published by the Free Software Foundation; either | |
| 7 | - * version 2.1 of the License, or (at your option) any later version. | |
| 8 | - * | |
| 9 | - * This library 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 GNU | |
| 12 | - * Lesser General Public License for more details. | |
| 13 | - * | |
| 14 | - * You should have received a copy of the GNU Lesser General Public | |
| 15 | - * License along with this library; if not, write to the Free Software | |
| 16 | - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | |
| 17 | - * MA 02110-1301 USA | |
| 18 | - */ | |
| 19 | -/* | |
| 20 | - * $Id$ | |
| 21 | - */ | |
| 22 | -package Form; | |
| 23 | - | |
| 24 | -import WebScraping.HtmlParser; | |
| 25 | -import WebScraping.SearchData; | |
| 26 | -import java.awt.Desktop; | |
| 27 | -import java.io.File; | |
| 28 | -import java.io.IOException; | |
| 29 | -import java.net.URI; | |
| 30 | -import java.net.URISyntaxException; | |
| 31 | -import java.util.*; | |
| 32 | -import java.util.logging.Level; | |
| 33 | -import java.util.logging.Logger; | |
| 34 | -import javax.swing.JFileChooser; | |
| 35 | -import javax.swing.filechooser.FileFilter; | |
| 36 | -import javax.swing.filechooser.FileNameExtensionFilter; | |
| 37 | -import org.jdesktop.observablecollections.ObservableCollections; | |
| 38 | - | |
| 39 | -/** | |
| 40 | - * HTMLページ上の特定の項目を検索し、その項目内容の値を取得する. | |
| 41 | - * @author kgto | |
| 42 | - */ | |
| 43 | -public class HtmlSearch extends javax.swing.JFrame { | |
| 44 | - | |
| 45 | - private final SearchDataRW sio = new SearchDataRW(); | |
| 46 | - | |
| 47 | - private ArrayList slist = new ArrayList(); | |
| 48 | - private List serachDataList = ObservableCollections.observableList(slist); | |
| 49 | - | |
| 50 | - /** | |
| 51 | - * Creates new form Frame1 | |
| 52 | - */ | |
| 53 | - public HtmlSearch() { | |
| 54 | - initComponents(); | |
| 55 | - | |
| 56 | - // カレントディレクトリ取得 | |
| 57 | - String dir = System.getProperty("user.dir"); | |
| 58 | - File file = new java.io.File(dir + "\\data"); | |
| 59 | - jFileChooser1.setCurrentDirectory(file); | |
| 60 | - | |
| 61 | - FileFilter filter1 = new FileNameExtensionFilter("XMLファイル", "xml"); | |
| 62 | - FileFilter filter2 = new FileNameExtensionFilter("TEXTファイル", "txt"); | |
| 63 | - jFileChooser1.addChoosableFileFilter(filter1); | |
| 64 | - jFileChooser1.addChoosableFileFilter(filter2); | |
| 65 | - jFileChooser1.setFileFilter(filter1); | |
| 66 | - | |
| 67 | - } | |
| 68 | - | |
| 69 | - public List getSerachDataList() { | |
| 70 | - return this.serachDataList; | |
| 71 | - } | |
| 72 | - | |
| 73 | - public void setSerachDataList(List serachDataList) { | |
| 74 | - this.serachDataList = serachDataList; | |
| 75 | - } | |
| 76 | - | |
| 77 | - /** | |
| 78 | - * This method is called from within the constructor to initialize the form. | |
| 79 | - * WARNING: Do NOT modify this code. The content of this method is always | |
| 80 | - * regenerated by the Form Editor. | |
| 81 | - */ | |
| 82 | - @SuppressWarnings("unchecked") | |
| 83 | - // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents | |
| 84 | - private void initComponents() { | |
| 85 | - bindingGroup = new org.jdesktop.beansbinding.BindingGroup(); | |
| 86 | - | |
| 87 | - jFileChooser1 = new javax.swing.JFileChooser(); | |
| 88 | - jRadioButton1 = new javax.swing.JRadioButton(); | |
| 89 | - jLabel1 = new javax.swing.JLabel(); | |
| 90 | - jTxtUrl = new javax.swing.JTextField(); | |
| 91 | - jBtnSearch = new javax.swing.JButton(); | |
| 92 | - jTabbedPane1 = new javax.swing.JTabbedPane(); | |
| 93 | - jPanelTab1 = new javax.swing.JPanel(); | |
| 94 | - jScrollPane1 = new javax.swing.JScrollPane(); | |
| 95 | - jTable1 = new javax.swing.JTable(); | |
| 96 | - jBtnRowIns = new javax.swing.JButton(); | |
| 97 | - jBtnRowDel = new javax.swing.JButton(); | |
| 98 | - jBtnRowCpy = new javax.swing.JButton(); | |
| 99 | - jPanelTab2 = new javax.swing.JPanel(); | |
| 100 | - jScrollPaneLabel = new javax.swing.JScrollPane(); | |
| 101 | - jTxtLabel = new javax.swing.JTextArea(); | |
| 102 | - jScrollPane404msg = new javax.swing.JScrollPane(); | |
| 103 | - jTxt404msg = new javax.swing.JTextArea(); | |
| 104 | - jPanelRtn = new javax.swing.JPanel(); | |
| 105 | - jScrollPaneRtn = new javax.swing.JScrollPane(); | |
| 106 | - jTxtRtn = new javax.swing.JTextArea(); | |
| 107 | - jMenuBar1 = new javax.swing.JMenuBar(); | |
| 108 | - jMenu1 = new javax.swing.JMenu(); | |
| 109 | - jMenuLoad = new javax.swing.JMenuItem(); | |
| 110 | - jMenuSave = new javax.swing.JMenuItem(); | |
| 111 | - jMenu3 = new javax.swing.JMenu(); | |
| 112 | - jMenuItem1 = new javax.swing.JMenuItem(); | |
| 113 | - jMenu2 = new javax.swing.JMenu(); | |
| 114 | - | |
| 115 | - jFileChooser1.setCurrentDirectory(null); | |
| 116 | - jFileChooser1.setDialogTitle(""); | |
| 117 | - | |
| 118 | - jRadioButton1.setText("jRadioButton1"); | |
| 119 | - | |
| 120 | - setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); | |
| 121 | - setTitle("タグ検索"); | |
| 122 | - | |
| 123 | - jLabel1.setText(" URL:"); | |
| 124 | - | |
| 125 | - jBtnSearch.setText("検索"); | |
| 126 | - jBtnSearch.addActionListener(new java.awt.event.ActionListener() { | |
| 127 | - public void actionPerformed(java.awt.event.ActionEvent evt) { | |
| 128 | - jBtnSearchActionPerformed(evt); | |
| 129 | - } | |
| 130 | - }); | |
| 131 | - | |
| 132 | - jPanelTab1.setBorder(javax.swing.BorderFactory.createTitledBorder("検索情報")); | |
| 133 | - | |
| 134 | - jTable1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); | |
| 135 | - jTable1.getTableHeader().setReorderingAllowed(false); | |
| 136 | - | |
| 137 | - org.jdesktop.beansbinding.ELProperty eLProperty = org.jdesktop.beansbinding.ELProperty.create("${serachDataList}"); | |
| 138 | - org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, eLProperty, jTable1); | |
| 139 | - org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${item}")); | |
| 140 | - columnBinding.setColumnName("項目名"); | |
| 141 | - columnBinding.setColumnClass(String.class); | |
| 142 | - columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${htmltag}")); | |
| 143 | - columnBinding.setColumnName("タグ"); | |
| 144 | - columnBinding.setColumnClass(String.class); | |
| 145 | - columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${htmlid}")); | |
| 146 | - columnBinding.setColumnName("ID"); | |
| 147 | - columnBinding.setColumnClass(String.class); | |
| 148 | - columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${htmlclass}")); | |
| 149 | - columnBinding.setColumnName("クラス"); | |
| 150 | - columnBinding.setColumnClass(String.class); | |
| 151 | - columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${around}")); | |
| 152 | - columnBinding.setColumnName("位置"); | |
| 153 | - columnBinding.setColumnClass(String.class); | |
| 154 | - columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${regexp}")); | |
| 155 | - columnBinding.setColumnName("抽出条件"); | |
| 156 | - columnBinding.setColumnClass(String.class); | |
| 157 | - bindingGroup.addBinding(jTableBinding); | |
| 158 | - jTableBinding.bind(); | |
| 159 | - jScrollPane1.setViewportView(jTable1); | |
| 160 | - | |
| 161 | - jBtnRowIns.setText("行挿入"); | |
| 162 | - jBtnRowIns.addActionListener(new java.awt.event.ActionListener() { | |
| 163 | - public void actionPerformed(java.awt.event.ActionEvent evt) { | |
| 164 | - jBtnRowInsActionPerformed(evt); | |
| 165 | - } | |
| 166 | - }); | |
| 167 | - | |
| 168 | - jBtnRowDel.setText("行削除"); | |
| 169 | - jBtnRowDel.addActionListener(new java.awt.event.ActionListener() { | |
| 170 | - public void actionPerformed(java.awt.event.ActionEvent evt) { | |
| 171 | - jBtnRowDelActionPerformed(evt); | |
| 172 | - } | |
| 173 | - }); | |
| 174 | - | |
| 175 | - jBtnRowCpy.setText("行コピー"); | |
| 176 | - jBtnRowCpy.addActionListener(new java.awt.event.ActionListener() { | |
| 177 | - public void actionPerformed(java.awt.event.ActionEvent evt) { | |
| 178 | - jBtnRowCpyActionPerformed(evt); | |
| 179 | - } | |
| 180 | - }); | |
| 181 | - | |
| 182 | - javax.swing.GroupLayout jPanelTab1Layout = new javax.swing.GroupLayout(jPanelTab1); | |
| 183 | - jPanelTab1.setLayout(jPanelTab1Layout); | |
| 184 | - jPanelTab1Layout.setHorizontalGroup( | |
| 185 | - jPanelTab1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
| 186 | - .addGroup(jPanelTab1Layout.createSequentialGroup() | |
| 187 | - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |
| 188 | - .addComponent(jBtnRowCpy) | |
| 189 | - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
| 190 | - .addComponent(jBtnRowDel) | |
| 191 | - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
| 192 | - .addComponent(jBtnRowIns)) | |
| 193 | - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) | |
| 194 | - ); | |
| 195 | - jPanelTab1Layout.setVerticalGroup( | |
| 196 | - jPanelTab1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
| 197 | - .addGroup(jPanelTab1Layout.createSequentialGroup() | |
| 198 | - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 173, Short.MAX_VALUE) | |
| 199 | - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
| 200 | - .addGroup(jPanelTab1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) | |
| 201 | - .addComponent(jBtnRowDel) | |
| 202 | - .addComponent(jBtnRowIns) | |
| 203 | - .addComponent(jBtnRowCpy))) | |
| 204 | - ); | |
| 205 | - | |
| 206 | - jTabbedPane1.addTab("キー設定", jPanelTab1); | |
| 207 | - | |
| 208 | - jPanelTab2.setBorder(javax.swing.BorderFactory.createTitledBorder("メッセージ")); | |
| 209 | - | |
| 210 | - jScrollPaneLabel.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); | |
| 211 | - jScrollPaneLabel.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); | |
| 212 | - | |
| 213 | - jTxtLabel.setEditable(false); | |
| 214 | - jTxtLabel.setBackground(java.awt.Color.lightGray); | |
| 215 | - jTxtLabel.setColumns(20); | |
| 216 | - jTxtLabel.setFont(new java.awt.Font("MS UI Gothic", 0, 12)); // NOI18N | |
| 217 | - jTxtLabel.setLineWrap(true); | |
| 218 | - jTxtLabel.setRows(2); | |
| 219 | - jTxtLabel.setText("取得ページに以下のメッセージが含まれていた場合、対象データが取得出来なかったと通知します。"); | |
| 220 | - jTxtLabel.setAutoscrolls(false); | |
| 221 | - jTxtLabel.setBorder(null); | |
| 222 | - jTxtLabel.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); | |
| 223 | - jTxtLabel.setFocusable(false); | |
| 224 | - jTxtLabel.setHighlighter(null); | |
| 225 | - jTxtLabel.setKeymap(null); | |
| 226 | - jTxtLabel.setOpaque(false); | |
| 227 | - jTxtLabel.setRequestFocusEnabled(false); | |
| 228 | - jTxtLabel.setVerifyInputWhenFocusTarget(false); | |
| 229 | - jScrollPaneLabel.setViewportView(jTxtLabel); | |
| 230 | - | |
| 231 | - jTxt404msg.setColumns(20); | |
| 232 | - jTxt404msg.setRows(3); | |
| 233 | - jTxt404msg.setText("一致する銘柄は見つかりませんでした\n"); | |
| 234 | - jScrollPane404msg.setViewportView(jTxt404msg); | |
| 235 | - | |
| 236 | - javax.swing.GroupLayout jPanelTab2Layout = new javax.swing.GroupLayout(jPanelTab2); | |
| 237 | - jPanelTab2.setLayout(jPanelTab2Layout); | |
| 238 | - jPanelTab2Layout.setHorizontalGroup( | |
| 239 | - jPanelTab2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
| 240 | - .addComponent(jScrollPane404msg) | |
| 241 | - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelTab2Layout.createSequentialGroup() | |
| 242 | - .addContainerGap() | |
| 243 | - .addComponent(jScrollPaneLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE) | |
| 244 | - .addContainerGap()) | |
| 245 | - ); | |
| 246 | - jPanelTab2Layout.setVerticalGroup( | |
| 247 | - jPanelTab2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
| 248 | - .addGroup(jPanelTab2Layout.createSequentialGroup() | |
| 249 | - .addComponent(jScrollPaneLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE) | |
| 250 | - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) | |
| 251 | - .addComponent(jScrollPane404msg)) | |
| 252 | - ); | |
| 253 | - | |
| 254 | - jTabbedPane1.addTab("結果無し判定", jPanelTab2); | |
| 255 | - | |
| 256 | - jPanelRtn.setBorder(javax.swing.BorderFactory.createTitledBorder("検索結果")); | |
| 257 | - | |
| 258 | - jTxtRtn.setColumns(20); | |
| 259 | - jTxtRtn.setRows(5); | |
| 260 | - jScrollPaneRtn.setViewportView(jTxtRtn); | |
| 261 | - | |
| 262 | - javax.swing.GroupLayout jPanelRtnLayout = new javax.swing.GroupLayout(jPanelRtn); | |
| 263 | - jPanelRtn.setLayout(jPanelRtnLayout); | |
| 264 | - jPanelRtnLayout.setHorizontalGroup( | |
| 265 | - jPanelRtnLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
| 266 | - .addComponent(jScrollPaneRtn) | |
| 267 | - ); | |
| 268 | - jPanelRtnLayout.setVerticalGroup( | |
| 269 | - jPanelRtnLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
| 270 | - .addComponent(jScrollPaneRtn, javax.swing.GroupLayout.DEFAULT_SIZE, 163, Short.MAX_VALUE) | |
| 271 | - ); | |
| 272 | - | |
| 273 | - jMenu1.setText("ファイル"); | |
| 274 | - | |
| 275 | - jMenuLoad.setText("LOAD"); | |
| 276 | - jMenuLoad.addActionListener(new java.awt.event.ActionListener() { | |
| 277 | - public void actionPerformed(java.awt.event.ActionEvent evt) { | |
| 278 | - jMenuLoadActionPerformed(evt); | |
| 279 | - } | |
| 280 | - }); | |
| 281 | - jMenu1.add(jMenuLoad); | |
| 282 | - | |
| 283 | - jMenuSave.setText("SAVE"); | |
| 284 | - jMenuSave.addActionListener(new java.awt.event.ActionListener() { | |
| 285 | - public void actionPerformed(java.awt.event.ActionEvent evt) { | |
| 286 | - jMenuSaveActionPerformed(evt); | |
| 287 | - } | |
| 288 | - }); | |
| 289 | - jMenu1.add(jMenuSave); | |
| 290 | - | |
| 291 | - jMenuBar1.add(jMenu1); | |
| 292 | - | |
| 293 | - jMenu3.setText("ツール"); | |
| 294 | - | |
| 295 | - jMenuItem1.setText("ブラウザで表示"); | |
| 296 | - jMenuItem1.addActionListener(new java.awt.event.ActionListener() { | |
| 297 | - public void actionPerformed(java.awt.event.ActionEvent evt) { | |
| 298 | - jMenuItem1ActionPerformed(evt); | |
| 299 | - } | |
| 300 | - }); | |
| 301 | - jMenu3.add(jMenuItem1); | |
| 302 | - | |
| 303 | - jMenuBar1.add(jMenu3); | |
| 304 | - | |
| 305 | - jMenu2.setText("検索"); | |
| 306 | - jMenu2.addMouseListener(new java.awt.event.MouseAdapter() { | |
| 307 | - public void mouseClicked(java.awt.event.MouseEvent evt) { | |
| 308 | - jMenu2MouseClicked(evt); | |
| 309 | - } | |
| 310 | - }); | |
| 311 | - jMenuBar1.add(jMenu2); | |
| 312 | - | |
| 313 | - setJMenuBar(jMenuBar1); | |
| 314 | - | |
| 315 | - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); | |
| 316 | - getContentPane().setLayout(layout); | |
| 317 | - layout.setHorizontalGroup( | |
| 318 | - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
| 319 | - .addComponent(jPanelRtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |
| 320 | - .addGroup(layout.createSequentialGroup() | |
| 321 | - .addComponent(jLabel1) | |
| 322 | - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
| 323 | - .addComponent(jTxtUrl) | |
| 324 | - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
| 325 | - .addComponent(jBtnSearch)) | |
| 326 | - .addComponent(jTabbedPane1) | |
| 327 | - ); | |
| 328 | - layout.setVerticalGroup( | |
| 329 | - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
| 330 | - .addGroup(layout.createSequentialGroup() | |
| 331 | - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) | |
| 332 | - .addComponent(jLabel1) | |
| 333 | - .addComponent(jTxtUrl, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |
| 334 | - .addComponent(jBtnSearch)) | |
| 335 | - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
| 336 | - .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 250, javax.swing.GroupLayout.PREFERRED_SIZE) | |
| 337 | - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
| 338 | - .addComponent(jPanelRtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |
| 339 | - .addContainerGap()) | |
| 340 | - ); | |
| 341 | - | |
| 342 | - bindingGroup.bind(); | |
| 343 | - | |
| 344 | - pack(); | |
| 345 | - }// </editor-fold>//GEN-END:initComponents | |
| 346 | - | |
| 347 | - private void jBtnRowInsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnRowInsActionPerformed | |
| 348 | - int SelectedRow = jTable1.getSelectedRow(); | |
| 349 | - SearchData sdat = new SearchData(); | |
| 350 | - | |
| 351 | - if(SelectedRow >= 0) { | |
| 352 | - this.serachDataList.add(SelectedRow, sdat); | |
| 353 | - } else { | |
| 354 | - this.serachDataList.add(sdat); | |
| 355 | - } | |
| 356 | - }//GEN-LAST:event_jBtnRowInsActionPerformed | |
| 357 | - | |
| 358 | - private void jBtnRowDelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnRowDelActionPerformed | |
| 359 | - int SelectedRow = jTable1.getSelectedRow(); | |
| 360 | - if(!(SelectedRow < 0)) { | |
| 361 | - this.serachDataList.remove(SelectedRow); | |
| 362 | - } | |
| 363 | - }//GEN-LAST:event_jBtnRowDelActionPerformed | |
| 364 | - | |
| 365 | - private void jMenuLoadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuLoadActionPerformed | |
| 366 | - jFileChooser1.setDialogTitle("読込"); | |
| 367 | - int selected = jFileChooser1.showOpenDialog(this); | |
| 368 | - if (selected == JFileChooser.APPROVE_OPTION) { | |
| 369 | - File file = jFileChooser1.getSelectedFile(); | |
| 370 | - serachDataList.clear(); | |
| 371 | - sio.load(file); | |
| 372 | - jTxtUrl.setText(sio.geturl()); | |
| 373 | - serachDataList.addAll(sio.getslist()); | |
| 374 | - } | |
| 375 | - }//GEN-LAST:event_jMenuLoadActionPerformed | |
| 376 | - | |
| 377 | - private void jMenuSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuSaveActionPerformed | |
| 378 | - jFileChooser1.setDialogTitle("保存"); | |
| 379 | - int selected = jFileChooser1.showSaveDialog(this); | |
| 380 | - if (selected == JFileChooser.APPROVE_OPTION) { | |
| 381 | - File file = jFileChooser1.getSelectedFile(); | |
| 382 | - sio.seturl(jTxtUrl.getText()); | |
| 383 | - sio.setslist(slist); | |
| 384 | - sio.save(file); | |
| 385 | - } | |
| 386 | - }//GEN-LAST:event_jMenuSaveActionPerformed | |
| 387 | - | |
| 388 | - private void jMenu2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenu2MouseClicked | |
| 389 | - Search_execution(); | |
| 390 | - }//GEN-LAST:event_jMenu2MouseClicked | |
| 391 | - | |
| 392 | - private void jBtnRowCpyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnRowCpyActionPerformed | |
| 393 | - int SelectedRow = jTable1.getSelectedRow(); | |
| 394 | - if(SelectedRow >= 0) { | |
| 395 | - SearchData SelectData = (SearchData)slist.get(SelectedRow); | |
| 396 | - SearchData Cpydata = new SearchData(SelectData); | |
| 397 | - this.serachDataList.add(SelectedRow, Cpydata); | |
| 398 | - } | |
| 399 | - }//GEN-LAST:event_jBtnRowCpyActionPerformed | |
| 400 | - | |
| 401 | - private void jBtnSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnSearchActionPerformed | |
| 402 | - Search_execution(); | |
| 403 | - }//GEN-LAST:event_jBtnSearchActionPerformed | |
| 404 | - | |
| 405 | - private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed | |
| 406 | - Desktop desktop = Desktop.getDesktop(); | |
| 407 | - String uriString = jTxtUrl.getText(); | |
| 408 | - try { | |
| 409 | - URI uri = new URI(uriString); | |
| 410 | - desktop.browse(uri); | |
| 411 | - | |
| 412 | - } catch (URISyntaxException | IOException ex) { | |
| 413 | - Logger.getLogger(HtmlSearch.class.getName()).log(Level.SEVERE, null, ex); | |
| 414 | - } | |
| 415 | - }//GEN-LAST:event_jMenuItem1ActionPerformed | |
| 416 | - | |
| 417 | - /** | |
| 418 | - * 検索実行. | |
| 419 | - */ | |
| 420 | - void Search_execution() { | |
| 421 | - jTxtRtn.setText(null); | |
| 422 | - HtmlParser par = new HtmlParser(jTxtUrl.getText()); | |
| 423 | - | |
| 424 | - // データ無し(404)判定 | |
| 425 | - String strdata = par.getStringPageData(); | |
| 426 | - String text = jTxt404msg.getText(); | |
| 427 | - String[] strsearch = text.split("\n"); | |
| 428 | - for(String strsearch1 : strsearch) { | |
| 429 | - if(strdata.contains(strsearch1)) { | |
| 430 | - jTxtRtn.append(strsearch1); | |
| 431 | - return; | |
| 432 | - } | |
| 433 | - } | |
| 434 | - | |
| 435 | - // 検索結果 | |
| 436 | - for (Object slist1 : slist) { | |
| 437 | - SearchData sdata = (SearchData)slist1; | |
| 438 | - String ans = sdata.getitem(); | |
| 439 | - String rtn = par.search(sdata); | |
| 440 | - jTxtRtn.append(ans + "\t" + rtn + "\r\n"); | |
| 441 | - } | |
| 442 | - jTxtRtn.setCaretPosition(0); | |
| 443 | - } | |
| 444 | - | |
| 445 | - /** | |
| 446 | - * @param args the command line arguments | |
| 447 | - */ | |
| 448 | - public static void main(String args[]) { | |
| 449 | - /* Set the Nimbus look and feel */ | |
| 450 | - //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> | |
| 451 | - /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. | |
| 452 | - * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html | |
| 453 | - */ | |
| 454 | - try { | |
| 455 | - for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { | |
| 456 | - if ("Nimbus".equals(info.getName())) { | |
| 457 | - javax.swing.UIManager.setLookAndFeel(info.getClassName()); | |
| 458 | - break; | |
| 459 | - } | |
| 460 | - } | |
| 461 | - } catch (ClassNotFoundException | |
| 462 | - | InstantiationException | |
| 463 | - | IllegalAccessException | |
| 464 | - | javax.swing.UnsupportedLookAndFeelException ex) { | |
| 465 | - java.util.logging.Logger.getLogger(HtmlSearch.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |
| 466 | - } | |
| 467 | - //</editor-fold> | |
| 468 | - | |
| 469 | - /* Create and display the form */ | |
| 470 | - java.awt.EventQueue.invokeLater(new Runnable() { | |
| 471 | - @Override | |
| 472 | - public void run() { | |
| 473 | - new HtmlSearch().setVisible(true); | |
| 474 | - } | |
| 475 | - }); | |
| 476 | - } | |
| 477 | - | |
| 478 | - // Variables declaration - do not modify//GEN-BEGIN:variables | |
| 479 | - private javax.swing.JButton jBtnRowCpy; | |
| 480 | - private javax.swing.JButton jBtnRowDel; | |
| 481 | - private javax.swing.JButton jBtnRowIns; | |
| 482 | - private javax.swing.JButton jBtnSearch; | |
| 483 | - private javax.swing.JFileChooser jFileChooser1; | |
| 484 | - private javax.swing.JLabel jLabel1; | |
| 485 | - private javax.swing.JMenu jMenu1; | |
| 486 | - private javax.swing.JMenu jMenu2; | |
| 487 | - private javax.swing.JMenu jMenu3; | |
| 488 | - private javax.swing.JMenuBar jMenuBar1; | |
| 489 | - private javax.swing.JMenuItem jMenuItem1; | |
| 490 | - private javax.swing.JMenuItem jMenuLoad; | |
| 491 | - private javax.swing.JMenuItem jMenuSave; | |
| 492 | - private javax.swing.JPanel jPanelRtn; | |
| 493 | - private javax.swing.JPanel jPanelTab1; | |
| 494 | - private javax.swing.JPanel jPanelTab2; | |
| 495 | - private javax.swing.JRadioButton jRadioButton1; | |
| 496 | - private javax.swing.JScrollPane jScrollPane1; | |
| 497 | - private javax.swing.JScrollPane jScrollPane404msg; | |
| 498 | - private javax.swing.JScrollPane jScrollPaneLabel; | |
| 499 | - private javax.swing.JScrollPane jScrollPaneRtn; | |
| 500 | - private javax.swing.JTabbedPane jTabbedPane1; | |
| 501 | - private javax.swing.JTable jTable1; | |
| 502 | - private javax.swing.JTextArea jTxt404msg; | |
| 503 | - private javax.swing.JTextArea jTxtLabel; | |
| 504 | - private javax.swing.JTextArea jTxtRtn; | |
| 505 | - private javax.swing.JTextField jTxtUrl; | |
| 506 | - private org.jdesktop.beansbinding.BindingGroup bindingGroup; | |
| 507 | - // End of variables declaration//GEN-END:variables | |
| 508 | -} |