Changeset 4069 for SRUAggregator
- Timestamp:
- 11/21/13 13:17:06 (11 years ago)
- Location:
- SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/app/Aggregator.java
r3044 r4069 128 128 searchResultsComposer.exportTCF(); 129 129 } 130 131 @Listen("onClick=#downloadText") 132 public void onExportResultsText(Event ev) { 133 searchResultsComposer.exportText(); 134 } 135 136 @Listen("onClick=#downloadExcel") 137 public void onExportResultsExcel(Event ev) { 138 searchResultsComposer.exportExcel(); 139 } 130 140 131 141 @Listen("onClick=#exportPWCSV") … … 138 148 public void onExportResultsPWTCF(Event ev) { 139 149 exportDataType = 0; 150 wspaceSigninpop.open(srDiv, "top_center"); 151 } 152 153 @Listen("onClick=#exportPWText") 154 public void onExportResultsPWText(Event ev) { 155 exportDataType = 2; 156 wspaceSigninpop.open(srDiv, "top_center"); 157 } 158 159 @Listen("onClick=#exportPWExcel") 160 public void onExportResultsPWExcel(Event ev) { 161 exportDataType = 3; 140 162 wspaceSigninpop.open(srDiv, "top_center"); 141 163 } … … 152 174 if (exportDataType == 0) { 153 175 searchResultsComposer.exportPWTCF(user, pswd); 154 } else {176 } else if (exportDataType == 1) { 155 177 searchResultsComposer.exportPWCSV(user, pswd); 178 } else if (exportDataType == 2) { 179 searchResultsComposer.exportPWText(user, pswd); 180 } else if (exportDataType == 3) { 181 searchResultsComposer.exportPWExcel(user, pswd); 156 182 } 157 183 } -
SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/app/CacheCorporaScanIntoFileTask.java
r3062 r4069 11 11 import eu.clarin.sru.fcs.aggregator.sopt.Corpus; 12 12 import static eu.clarin.sru.fcs.aggregator.sopt.Corpus.ROOT_HANDLE; 13 import eu.clarin.sru.fcs.aggregator.sopt.CorpusCache;14 import eu.clarin.sru.fcs.aggregator.sopt.CorpusModelLive;15 13 import eu.clarin.sru.fcs.aggregator.sopt.Endpoint; 16 14 import eu.clarin.sru.fcs.aggregator.sopt.InstitutionI; 17 import eu.clarin.sru.fcs.aggregator.sopt.Languages;18 15 import eu.clarin.sru.fcs.aggregator.util.SRUCQLscan; 19 16 import java.io.BufferedOutputStream; … … 22 19 import java.io.FileOutputStream; 23 20 import java.io.IOException; 24 import java.io.OutputStream;25 import java.util.ArrayList;26 import java.util.HashMap;27 import java.util.HashSet;28 21 import java.util.List; 29 import java.util.Map;30 import java.util.Set;31 22 import java.util.TimerTask; 32 import java.util.concurrent.ConcurrentHashMap;33 23 import java.util.concurrent.ExecutionException; 34 24 import java.util.concurrent.Future; … … 37 27 import java.util.logging.Level; 38 28 import java.util.logging.Logger; 39 import org.joda.time.LocalDate;40 29 import org.joda.time.LocalTime; 41 30 import org.w3c.dom.DocumentFragment; … … 43 32 import org.w3c.dom.Node; 44 33 import org.w3c.dom.NodeList; 45 import org.zkoss.zk.ui.Executions;46 import org.zkoss.zul.DefaultTreeNode;47 34 48 35 /** -
SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/app/SearchOptions.java
r3059 r4069 23 23 import java.lang.reflect.Type; 24 24 import java.util.ArrayList; 25 import java.util.Collection; 25 26 import java.util.Collections; 26 27 import java.util.HashSet; … … 143 144 Treechildren openTreeItems = tree.getTreechildren(); 144 145 for (Treeitem openItem : openTreeItems.getItems()) { 146 147 DefaultTreeNode<Corpus> node = (DefaultTreeNode<Corpus>) openItem.getValue(); 148 Corpus data = node.getData(); 149 System.out.println(data); 150 145 151 corpusRenderer.updateItem(openItem, false); 146 152 } … … 150 156 onDeselectAll(null); 151 157 Treechildren openTreeItems = tree.getTreechildren(); 152 for (Treeitem openItem : openTreeItems.getItems()) { 158 159 List<Treeitem> openitems = new ArrayList<Treeitem>(); 160 openitems.addAll(openTreeItems.getItems()); 161 162 for (Treeitem openItem : openitems) { 153 163 DefaultTreeNode<Corpus> node = (DefaultTreeNode<Corpus>) openItem.getValue(); 154 164 Corpus data = node.getData(); … … 172 182 } 173 183 } 184 185 // // this is a temporary solution, 186 // // the whole concept on how selected externally resources 187 // // are displayed has to be changed, otherwise endpoints with 188 // // hundreds of subresources will break the tree interface 189 // // by loading all their resources... 190 // List<String> handlesCopy = new ArrayList<String>(handles.size()); 191 // handlesCopy.addAll(handles); 192 // selectCorpora(openItem, data, handlesCopy); 174 193 } 175 194 } … … 300 319 } 301 320 321 private void selectCorpora(Treeitem openItem, Corpus data, List<String> handles) { 322 List<String> handlesFound = new ArrayList<String>(); 323 for (String handle : handles) { 324 if (handle.equals(data.getHandle())) { 325 handlesFound.add(handle); 326 } 327 } 328 for (String handle : handlesFound) { 329 corpusRenderer.updateItem(openItem, true); 330 handles.remove(handle); 331 } 332 333 if (!handles.isEmpty()) { 334 int sizeBefore = handles.size(); 335 openItem.setOpen(true); 336 Treechildren tchildren = openItem.getTreechildren(); 337 List<Treeitem> tcitems = new ArrayList<Treeitem>(); 338 tcitems.addAll(tchildren.getItems()); 339 for (Treeitem child : tcitems) { 340 DefaultTreeNode<Corpus> node = (DefaultTreeNode<Corpus>) child.getValue(); 341 Corpus cdata = node.getData(); 342 selectCorpora(child, cdata, handles); 343 if (handles.isEmpty()) { 344 break; 345 } 346 } 347 if (sizeBefore == handles.size()) { 348 openItem.setOpen(false); 349 } 350 } 351 } 352 302 353 } -
SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/app/SearchResults.java
r3062 r4069 33 33 import eu.clarin.weblicht.wlfxb.io.WLFormatException; 34 34 import eu.clarin.weblicht.wlfxb.md.xb.MetaData; 35 import eu.clarin.weblicht.wlfxb.tc.api.MatchedCorpus; 36 import eu.clarin.weblicht.wlfxb.tc.api.Token; 35 37 import eu.clarin.weblicht.wlfxb.tc.xb.TextCorpusStored; 36 38 import eu.clarin.weblicht.wlfxb.xb.WLData; 37 39 import java.io.ByteArrayOutputStream; 38 40 import java.io.IOException; 41 import java.io.UnsupportedEncodingException; 39 42 import java.text.SimpleDateFormat; 40 43 import java.util.Date; … … 45 48 import java.util.concurrent.Future; 46 49 import java.util.concurrent.atomic.AtomicBoolean; 50 import opennlp.tools.tokenize.TokenizerME; 51 import opennlp.tools.tokenize.TokenizerModel; 52 import org.apache.poi.ss.usermodel.Cell; 53 import org.apache.poi.ss.usermodel.CellStyle; 54 import org.apache.poi.ss.usermodel.Font; 55 import org.apache.poi.ss.usermodel.Row; 56 import org.apache.poi.ss.usermodel.Sheet; 57 import org.apache.poi.xssf.streaming.SXSSFWorkbook; 47 58 import org.zkoss.zhtml.Filedownload; 48 59 import org.zkoss.zk.ui.event.EventListener; … … 86 97 private Languages languages; 87 98 99 88 100 @Override 89 101 public void doAfterCompose(Component comp) throws Exception { … … 155 167 156 168 private SearchResult executeSearch(Corpus corpus, String searchString) { 157 SearchResult resultsItem = new SearchResult(corpus );169 SearchResult resultsItem = new SearchResult(corpus, searchString); 158 170 LOGGER.log(Level.INFO, "Executing search for {0} query={1} maxRecords={2}", 159 171 new Object[]{corpus.toString(), searchString, maxRecords}); … … 366 378 367 379 public void exportTCF() { 368 byte[] bytes = getExportT CF();380 byte[] bytes = getExportTokenizedTCF(); 369 381 if (bytes != null) { 370 382 Filedownload.save(bytes, "text/tcf+xml", "ClarinDFederatedContentSearch.xml"); … … 372 384 } 373 385 386 public void exportText() { 387 String text = getExportText().toString(); 388 if (text != null) { 389 Filedownload.save(text, "text/plain", "ClarinDFederatedContentSearch.txt"); 390 } 391 } 392 393 394 void exportExcel() { 395 396 byte[] bytes = getExportExcel(); 397 if (bytes != null) { 398 Filedownload.save(bytes, "text/tcf+xml", "ClarinDFederatedContentSearch.xls"); 399 } 400 } 401 402 private byte[] getExportExcel() { 403 404 boolean noResult = true; 405 SXSSFWorkbook workbook = null; 406 ByteArrayOutputStream excelStream = new ByteArrayOutputStream(); 407 if (resultsProcessed != null && !resultsProcessed.isEmpty()) { 408 try { 409 String[] headers = new String[] { 410 "LEFT CONTEXT", "KEYWORD", "RIGHT CONTEXT", "PID", "REFERENCE"}; 411 412 workbook = new SXSSFWorkbook(); 413 Sheet sheet = workbook.createSheet(); 414 415 Font boldFont = workbook.createFont(); 416 boldFont.setBoldweight(Font.BOLDWEIGHT_BOLD); 417 418 // Header 419 CellStyle headerStyle = workbook.createCellStyle(); 420 headerStyle.setFont(boldFont); 421 422 Row row = sheet.createRow(0); 423 424 for (int j = 0; j < headers.length; ++j) { 425 Cell cell = row.createCell(j, Cell.CELL_TYPE_STRING); 426 cell.setCellValue(headers[j]); 427 cell.setCellStyle(headerStyle); 428 } 429 430 // Body 431 Cell cell; 432 for (int k = 0; k < resultsProcessed.size(); k++) { 433 SearchResult result = resultsProcessed.get(k); 434 List<Kwic> kwics = result.getKwics(); 435 for (int i = 0; i < kwics.size(); i++) { 436 Kwic kwic = kwics.get(i); 437 row = sheet.createRow(k + i + 1); 438 cell = row.createCell(0, Cell.CELL_TYPE_STRING); 439 cell.setCellValue(kwic.getLeft()); 440 cell = row.createCell(1, Cell.CELL_TYPE_STRING); 441 cell.setCellValue(kwic.getKeyword()); 442 cell = row.createCell(2, Cell.CELL_TYPE_STRING); 443 cell.setCellValue(kwic.getRight()); 444 if (kwic.getPid() != null) { 445 cell = row.createCell(3, Cell.CELL_TYPE_STRING); 446 cell.setCellValue(kwic.getPid()); 447 } 448 if (kwic.getReference() != null) { 449 cell = row.createCell(3, Cell.CELL_TYPE_STRING); 450 cell.setCellValue(kwic.getReference()); 451 } 452 noResult = false; 453 } 454 } 455 workbook.write(excelStream); 456 } catch (IOException ex) { 457 // should not happen 458 Logger.getLogger(SearchResults.class.getName()).log(Level.SEVERE, null, ex); 459 } finally { 460 if (workbook != null) { 461 workbook.dispose(); 462 } 463 } 464 } 465 if (noResult) { 466 Messagebox.show("Nothing to export!"); 467 return null; 468 } else { 469 return excelStream.toByteArray(); 470 } 471 472 } 473 474 void exportPWText(String user, String pass) { 475 byte[] bytes = null; 476 try { 477 bytes = getExportText().toString().getBytes("UTF-8"); 478 } catch (UnsupportedEncodingException ex) { 479 Logger.getLogger(SearchResults.class.getName()).log(Level.SEVERE, null, ex); 480 } 481 if (bytes != null) { 482 uploadToPW(user, pass, bytes, "text/plan",".txt"); 483 } 484 } 485 486 void exportPWExcel(String user, String pass) { 487 byte[] bytes = getExportExcel(); 488 if (bytes != null) { 489 uploadToPW(user, pass, bytes, "application/vnd.ms-excel",".xls"); 490 } 491 } 492 374 493 public void exportPWTCF(String user, String pass) { 375 494 376 byte[] bytes = getExportT CF();495 byte[] bytes = getExportTokenizedTCF(); 377 496 if (bytes != null) { 378 497 uploadToPW(user, pass, bytes, "text/tcf+xml",".tcf"); … … 436 555 } 437 556 557 558 private byte[] getExportTokenizedTCF() { 559 StringBuilder text = new StringBuilder(); 560 Set<String> resultsLangs = new HashSet<String>(); 561 if (resultsProcessed != null && !resultsProcessed.isEmpty()) { 562 for (SearchResult result : resultsProcessed) { 563 resultsLangs.addAll(result.getCorpus().getLanguages()); 564 for (Kwic kwic : result.getKwics()) { 565 text.append(kwic.getLeft()); 566 text.append(" "); 567 text.append(kwic.getKeyword()); 568 text.append(" "); 569 text.append(kwic.getRight()); 570 text.append("\n"); 571 } 572 } 573 574 } 575 ByteArrayOutputStream os = null; 576 if (text.length() == 0) { 577 Messagebox.show("Nothing to export!"); 578 } else { 579 WLData data; 580 MetaData md = new MetaData(); 581 String resultsLang = "unknown"; 582 if (resultsLangs.size() == 1) { 583 resultsLang = resultsLangs.iterator().next(); 584 String code2 = languages.code2ForCode(resultsLang); 585 if (code2 != null) { 586 resultsLang = code2; 587 } 588 } else if (!searchLanguage.equals("anylang")) { 589 String code2 = languages.code2ForCode(searchLanguage); 590 if (code2 == null) { 591 resultsLang = searchLanguage; 592 } else { 593 resultsLang = code2; 594 } 595 } 596 TextCorpusStored tc = new TextCorpusStored(resultsLang); 597 tc.createTextLayer().addText(text.toString()); 598 addTokensSentencesMatches(tc); 599 data = new WLData(md, tc); 600 os = new ByteArrayOutputStream(); 601 try { 602 WLDObjector.write(data, os); 603 } catch (WLFormatException ex) { 604 LOGGER.log(Level.SEVERE, "Error exporting TCF {0} {1}", new String[]{ex.getClass().getName(), ex.getMessage()}); 605 Messagebox.show("Sorry, export error!"); 606 } 607 } 608 if (os == null) { 609 return null; 610 } else { 611 return os.toByteArray(); 612 } 613 } 614 615 616 private void addTokensSentencesMatches(TextCorpusStored tc) { 617 618 TokenizerModel model = (TokenizerModel) Executions.getCurrent().getDesktop().getWebApp().getAttribute(WebAppListener.DE_TOK_MODEL); 619 620 if (model == null || !tc.getLanguage().equals("de")) { 621 return; 622 } 623 TokenizerME tokenizer = new TokenizerME(model); 624 625 if (resultsProcessed != null && !resultsProcessed.isEmpty()) { 626 tc.createTokensLayer(); 627 tc.createSentencesLayer(); 628 tc.createMatchesLayer("FCS", resultsProcessed.get(0).getSearchString()); 629 for (SearchResult result : resultsProcessed) { 630 MatchedCorpus mCorpus = tc.getMatchesLayer().addCorpus(result.getCorpus().getDisplayName(), result.getCorpus().getHandle()); 631 for (Kwic kwic : result.getKwics()) { 632 List<Token> tokens = new ArrayList<Token>(); 633 addToTcfTokens(tokens, tc, tokenizer.tokenize(kwic.getLeft())); 634 String[] target = tokenizer.tokenize(kwic.getKeyword()); 635 List<Token> targetTokens = addToTcfTokens(tokens, tc, target); 636 addToTcfTokens(tokens, tc, tokenizer.tokenize(kwic.getRight())); 637 tc.getSentencesLayer().addSentence(tokens); 638 List<String> pidAndRef = new ArrayList<String>(); 639 if (kwic.getPid() != null) { 640 pidAndRef.add(kwic.getPid()); 641 } 642 if (kwic.getReference() != null) { 643 pidAndRef.add(kwic.getReference()); 644 } 645 tc.getMatchesLayer().addItem(mCorpus, targetTokens, pidAndRef); 646 } 647 } 648 } 649 } 650 651 652 private List<Token> addToTcfTokens(List<Token> tokens, TextCorpusStored tc, String[] tokenStrings) { 653 List<Token> addedTokens = new ArrayList<Token>(tokenStrings.length); 654 for (String tokenString : tokenStrings) { 655 Token token = tc.getTokensLayer().addToken(tokenString); 656 addedTokens.add(token); 657 tokens.add(token); 658 } 659 return addedTokens; 660 } 661 662 private CharSequence getExportText() { 663 StringBuilder text = new StringBuilder(); 664 //Set<String> resultsLangs = new HashSet<String>(); 665 if (resultsProcessed != null && !resultsProcessed.isEmpty()) { 666 for (SearchResult result : resultsProcessed) { 667 //resultsLangs.addAll(result.getCorpus().getLanguages()); 668 for (Kwic kwic : result.getKwics()) { 669 text.append(kwic.getLeft()); 670 text.append(" "); 671 text.append(kwic.getKeyword()); 672 text.append(" "); 673 text.append(kwic.getRight()); 674 text.append("\n"); 675 } 676 } 677 678 } 679 if (text.length() == 0) { 680 Messagebox.show("Nothing to export!"); 681 return null; 682 } else { 683 return text; 684 } 685 } 686 438 687 public void exportCSV() { 439 String csv = getExportCSV( );688 String csv = getExportCSV(";"); 440 689 if (csv != null) { 441 690 Filedownload.save(csv.toString(), "text/plain", "ClarinDFederatedContentSearch.csv"); … … 445 694 446 695 public void exportPWCSV(String user, String pass) { 447 String csv = getExportCSV( );696 String csv = getExportCSV(";"); 448 697 if (csv != null) { 449 698 uploadToPW(user, pass, csv.getBytes(), "text/csv",".csv"); … … 451 700 } 452 701 453 private String getExportCSV( ) {702 private String getExportCSV(String separator) { 454 703 455 704 boolean noResult = true; 456 705 StringBuilder csv = new StringBuilder(); 457 706 if (resultsProcessed != null && !resultsProcessed.isEmpty()) { 458 csv.append("\""); csv.append("LEFT CONTEXT"); csv.append("\""); 459 csv.append(","); 460 csv.append("\""); csv.append("KEYWORD"); csv.append("\""); 461 csv.append(","); 462 csv.append("\""); csv.append("RIGHT CONTEXT"); csv.append("\""); 463 csv.append(","); 464 csv.append("\""); csv.append("PID"); csv.append("\""); 465 csv.append(","); 466 csv.append("\""); csv.append("REFERENCE"); csv.append("\""); 707 String[] headers = new String[] { 708 "LEFT CONTEXT", "KEYWORD", "RIGHT CONTEXT", "PID", "REFERENCE"}; 709 for (String header : headers) { 710 csv.append("\""); csv.append(header); csv.append("\""); 711 csv.append(separator); 712 } 467 713 csv.append("\n"); 468 714 469 715 for (SearchResult result : resultsProcessed) { 470 716 for (Kwic kwic : result.getKwics()) { 471 csv.append("\""); csv.append( kwic.getLeft().replace("\"", "QUOTE")); csv.append("\"");472 csv.append( ",");473 csv.append("\""); csv.append( kwic.getKeyword().replace("\"", "QUOTE")); csv.append("\"");474 csv.append( ",");475 csv.append("\""); csv.append( kwic.getRight().replace("\"", "QUOTE")); csv.append("\"");476 csv.append( ",");717 csv.append("\""); csv.append(escapeQuotes(kwic.getLeft())); csv.append("\""); 718 csv.append(separator); 719 csv.append("\""); csv.append(escapeQuotes(kwic.getKeyword())); csv.append("\""); 720 csv.append(separator); 721 csv.append("\""); csv.append(escapeQuotes(kwic.getRight())); csv.append("\""); 722 csv.append(separator); 477 723 csv.append("\""); 478 724 if (kwic.getPid() != null) { 479 csv.append( kwic.getPid().replace("\"", "QUOTE"));725 csv.append(escapeQuotes(kwic.getPid())); 480 726 } 481 727 csv.append("\""); 482 csv.append( ",");728 csv.append(separator); 483 729 csv.append("\""); 484 730 if (kwic.getReference() != null) { 485 csv.append( kwic.getReference().replace("\"", "QUOTE"));731 csv.append(escapeQuotes(kwic.getReference())); 486 732 } 487 733 csv.append("\""); … … 497 743 return csv.toString(); 498 744 } 745 } 746 747 private CharSequence escapeQuotes(String text) { 748 StringBuilder sb = new StringBuilder(); 749 for (int i = 0; i < text.length(); i++) { 750 char ch = text.charAt(i); 751 if (ch == '"') { 752 sb.append('"'); 753 } 754 sb.append(ch); 755 } 756 return sb; 499 757 } 500 758 -
SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/app/WebAppListener.java
r3062 r4069 7 7 import eu.clarin.sru.fcs.aggregator.sopt.CorpusCache; 8 8 import eu.clarin.sru.fcs.aggregator.sopt.Languages; 9 import java.io.IOException; 10 import java.io.InputStream; 9 11 import java.util.Date; 10 12 import java.util.HashSet; … … 13 15 import java.util.logging.Level; 14 16 import java.util.logging.Logger; 17 import opennlp.tools.tokenize.TokenizerModel; 15 18 import org.joda.time.DateTime; 16 19 import org.zkoss.zk.ui.WebApp; … … 36 39 37 40 private Timer cacheTimer; 41 42 public static final String DE_TOK_MODEL = "/tokenizer/de-tuebadz-8.0-token.bin"; 38 43 39 44 @Override … … 67 72 CorporaScanCache cache = new CorporaScanCache(webapp.getRealPath("scan") + "/"); 68 73 webapp.setAttribute(CORPUS_CACHE, cache); 74 75 TokenizerModel model = null; 76 try { 77 InputStream tokenizerModelDeAsIS = this.getClass().getResourceAsStream(DE_TOK_MODEL); 78 model = new TokenizerModel(tokenizerModelDeAsIS); 79 tokenizerModelDeAsIS.close(); 80 } catch (IOException ex) { 81 LOGGER.log(Level.SEVERE, "Failed to load tokenizer model", ex); 82 } 83 webapp.setAttribute(DE_TOK_MODEL, model); 69 84 } 70 85 -
SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/sopt/CorpusRendererCached.java
r3058 r4069 153 153 Treecell cell2 = createCellForCorpusLanguage(data); 154 154 dataRow.appendChild(cell2); 155 //Treecell cell6 = createCellForCorpusNumberOfRecords(data); 156 //dataRow.appendChild(cell6); 155 157 Treecell cell5 = createCellForCorpusInstitution(data); 156 158 dataRow.appendChild(cell5); … … 167 169 corpusLabel.setParent(cell); 168 170 } else { 171 String name = data.getDisplayName(); 172 // TODO: this is temp, before some endpoint 173 // fix long names for their resources, that look 174 // more like a description 175 if (name.length() > 50) { 176 int firstWordEnd = name.indexOf(" "); 177 if (firstWordEnd > 0) { 178 data.setDisplayName(name.substring(0, firstWordEnd)); 179 if (data.getDescription() == null) { 180 data.setDescription(name); 181 } 182 } 183 } 169 184 Label corpusLabel = new Label(data.getDisplayName()); 170 185 corpusLabel.setParent(cell); … … 210 225 return cell; 211 226 } 227 228 private Treecell createCellForCorpusNumberOfRecords(Corpus data) { 229 Treecell cell = new Treecell(); 230 if (data.getNumberOfRecords() == null) { 231 Label label = new Label(""); 232 label.setParent(cell); 233 } else { 234 Label label = new Label(data.getNumberOfRecords().toString()); 235 label.setParent(cell); 236 } 237 return cell; 238 } 212 239 213 240 private Treecell createCellForHome(Corpus data) { -
SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/sresult/SearchResult.java
r3038 r4069 20 20 21 21 private Corpus corpus; 22 private String searchString; 22 23 private Future<SRUSearchRetrieveResponse> futureResponse; 23 24 private SRUSearchRetrieveResponse response; … … 35 36 } 36 37 37 public SearchResult(Corpus corpus ) {38 public SearchResult(Corpus corpus, String searchString) { 38 39 this.corpus = corpus; 40 this.searchString = searchString; 39 41 } 40 42 41 43 public Corpus getCorpus() { 42 44 return corpus; 45 } 46 47 public String getSearchString() { 48 return searchString; 43 49 } 44 50
Note: See TracChangeset
for help on using the changeset viewer.