Changeset 6396 for SRUAggregator
- Timestamp:
- 07/17/15 09:57:49 (9 years ago)
- Location:
- SRUAggregator/trunk
- Files:
-
- 1 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
SRUAggregator/trunk/aggregator_devel.yml
r6254 r6396 8 8 9 9 SCAN_MAX_DEPTH: 1 # recommended 3 10 SCAN_TASK_INITIAL_DELAY: 210 SCAN_TASK_INITIAL_DELAY: 0 11 11 SCAN_TASK_INTERVAL: 12 12 12 SCAN_TASK_TIME_UNIT: HOURS -
SRUAggregator/trunk/pom.xml
r6395 r6396 8 8 <groupId>eu.clarin.sru.fcs</groupId> 9 9 <artifactId>aggregator</artifactId> 10 <version>2.0.0-beta-5 2</version>10 <version>2.0.0-beta-53</version> 11 11 <name>FCS Aggregator</name> 12 12 … … 114 114 <type>jar</type> 115 115 </dependency> 116 </dependencies> 116 117 <dependency> 118 <groupId>org.apache.httpcomponents</groupId> 119 <artifactId>httpclient</artifactId> 120 <version>4.3.6</version> 121 <exclusions> 122 <exclusion> 123 <groupId>commons-codec</groupId> 124 <artifactId>commons-codec</artifactId> 125 </exclusion> 126 </exclusions> 127 </dependency> 128 <dependency> 129 <groupId>com.sun.jersey.contribs</groupId> 130 <artifactId>jersey-apache-client4</artifactId> 131 <version>1.18.1</version> 132 <exclusions> 133 <exclusion> 134 <groupId>org.apache.httpcomponents</groupId> 135 <artifactId>httpclient</artifactId> 136 </exclusion> 137 </exclusions> 138 </dependency> 139 </dependencies> 117 140 118 141 <build> -
SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/scan/CenterRegistryLive.java
r5894 r6396 1 1 package eu.clarin.sru.fcs.aggregator.scan; 2 2 3 import eu.clarin.sru.fcs.aggregator.scan.EndpointFilter;3 import com.sun.jersey.api.client.Client; 4 4 import eu.clarin.weblicht.bindings.cmd.StringBinding; 5 5 import eu.clarin.weblicht.bindings.cmd.cp.CenterExtendedInformation; … … 24 24 25 25 private static final Logger LOGGER = Logger.getLogger(CenterRegistryLive.class.getName()); 26 27 private static final Integer CONNECT_TIMEOUT = 3000; 28 private static final Integer READ_TIMEOUT = 10000; 29 26 30 private String centerRegistryUrl; 27 31 private boolean hasInstitutionsLoaded = false; 28 32 private List<Institution> centers = new ArrayList<Institution>(); 29 33 private final EndpointFilter filter; 34 private final Client client; 30 35 31 36 public CenterRegistryLive(String centerRegistryUrl, EndpointFilter filter) { … … 33 38 this.centerRegistryUrl = centerRegistryUrl; 34 39 this.filter = filter; 40 this.client = ClientFactory.create(CONNECT_TIMEOUT, READ_TIMEOUT); 35 41 } 36 42 … … 42 48 @Override 43 49 public void loadCQLInstitutions() { 44 45 50 if (hasInstitutionsLoaded) { 46 51 return; … … 48 53 hasInstitutionsLoaded = true; 49 54 URI url = URI.create(centerRegistryUrl); 50 try (CenterRegistryConnector connector = new CenterRegistryConnector( url, 30000)) {55 try (CenterRegistryConnector connector = new CenterRegistryConnector(client, url)) { 51 56 List<Center> regCenters = connector.retrieveCenters(); 52 57 for (Center regCenter : regCenters) { -
SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/scan/ScanCrawlTask.java
r6153 r6396 77 77 Corpora corpora = scanCrawler.crawl(); 78 78 79 corporaAtom.set(corpora);80 scanStatisticsAtom.set(scanCrawler.getStatistics());81 searchStatisticsAtom.set(new Statistics()); // reset search stats82 79 long time = System.currentTimeMillis() - time0; 83 84 80 log.info("ScanCrawlTask: crawl done in {}s, number of root corpora: {}", 85 81 time / 1000., corpora.getCorpora().size()); 86 82 87 83 if (corpora.getCorpora().isEmpty()) { 88 log.warn("ScanCrawlTask: Skipped writing to disk (no corpora). Finished.");84 log.warn("ScanCrawlTask: No corpora: skipped updating stats; skipped writing to disk."); 89 85 } else { 86 corporaAtom.set(corpora); 87 scanStatisticsAtom.set(scanCrawler.getStatistics()); 88 searchStatisticsAtom.set(new Statistics()); // reset search stats 89 90 90 dump(corpora, cachedCorpora, oldCachedCorpora); 91 91 log.info("ScanCrawlTask: wrote to disk, finished"); -
SRUAggregator/trunk/src/main/resources/assets/js/components.js
r6395 r6396 9 9 window.MyReact = {}; 10 10 11 var JQuerySlide = React.createClass({displayName: "JQuerySlide",11 var JQuerySlide = React.createClass({displayName: 'JQuerySlide', 12 12 componentWillEnter: function(callback){ 13 13 var el = jQuery(this.getDOMNode()); … … 30 30 window.MyReact.JQuerySlide = JQuerySlide; 31 31 32 var JQueryFade = React.createClass({displayName: "JQueryFade",32 var JQueryFade = React.createClass({displayName: 'JQueryFade', 33 33 componentWillEnter: function(callback){ 34 34 var el = jQuery(this.getDOMNode()); … … 45 45 window.MyReact.JQueryFade = JQueryFade; 46 46 47 window.MyReact.ErrorPane = React.createClass({displayName: "ErrorPane",47 window.MyReact.ErrorPane = React.createClass({displayName: 'ErrorPane', 48 48 propTypes: { 49 49 errorMessages: PT.array.isRequired, … … 82 82 renderModal: function(title, content) { 83 83 return ( 84 React.createElement("div", {onClick: this.handleClick, className: "modal fade", role: "dialog", "aria-hidden": "true"},84 React.createElement("div", {onClick: this.handleClick, className: "modal fade", role: "dialog", 'aria-hidden': "true"}, 85 85 React.createElement("div", {className: "modal-dialog"}, 86 86 React.createElement("div", {className: "modal-content"}, 87 87 React.createElement("div", {className: "modal-header"}, 88 React.createElement("button", {type: "button", className: "close", "data-dismiss": "modal"},89 React.createElement("span", { "aria-hidden": "true"}, "Ã"),88 React.createElement("button", {type: "button", className: "close", 'data-dismiss': "modal"}, 89 React.createElement("span", {'aria-hidden': "true"}, "Ã"), 90 90 React.createElement("span", {className: "sr-only"}, "Close") 91 91 ), … … 96 96 ), 97 97 React.createElement("div", {className: "modal-footer"}, 98 React.createElement("button", {type: "button", className: "btn btn-default", "data-dismiss": "modal"}, "Close")98 React.createElement("button", {type: "button", className: "btn btn-default", 'data-dismiss': "modal"}, "Close") 99 99 ) 100 100 ) … … 106 106 107 107 108 window.MyReact.Modal = React.createClass({displayName: "Modal",108 window.MyReact.Modal = React.createClass({displayName: 'Modal', 109 109 propTypes: { 110 110 title: PT.object.isRequired, … … 121 121 render: function() { 122 122 return ( 123 React.createElement("div", {onClick: this.handleClick, className: "modal fade", role: "dialog", "aria-hidden": "true"},123 React.createElement("div", {onClick: this.handleClick, className: "modal fade", role: "dialog", 'aria-hidden': "true"}, 124 124 React.createElement("div", {className: "modal-dialog"}, 125 125 React.createElement("div", {className: "modal-content"}, 126 126 React.createElement("div", {className: "modal-header"}, 127 React.createElement("button", {type: "button", className: "close", "data-dismiss": "modal"},128 React.createElement("span", { "aria-hidden": "true"}, "Ã"),127 React.createElement("button", {type: "button", className: "close", 'data-dismiss': "modal"}, 128 React.createElement("span", {'aria-hidden': "true"}, "Ã"), 129 129 React.createElement("span", {className: "sr-only"}, "Close") 130 130 ), … … 135 135 ), 136 136 React.createElement("div", {className: "modal-footer"}, 137 React.createElement("button", {type: "button", className: "btn btn-default", "data-dismiss": "modal"}, "Close")137 React.createElement("button", {type: "button", className: "btn btn-default", 'data-dismiss': "modal"}, "Close") 138 138 ) 139 139 ) … … 182 182 }; 183 183 184 window.MyReact.Popover = React.createClass({displayName: "Popover",184 window.MyReact.Popover = React.createClass({displayName: 'Popover', 185 185 propTypes: { 186 186 placement: PT.string, … … 202 202 }); 203 203 204 window.MyReact.InfoPopover = React.createClass({displayName: "InfoPopover",204 window.MyReact.InfoPopover = React.createClass({displayName: 'InfoPopover', 205 205 propTypes: { 206 206 title: PT.string.isRequired, … … 221 221 222 222 223 window.MyReact.Panel = React.createClass({displayName: "Panel",223 window.MyReact.Panel = React.createClass({displayName: 'Panel', 224 224 propTypes: { 225 225 title:PT.object.isRequired, … … 258 258 }); 259 259 260 window.MyReact.PanelGroup = React.createClass({displayName: "PanelGroup",260 window.MyReact.PanelGroup = React.createClass({displayName: 'PanelGroup', 261 261 render: function() { 262 262 return React.createElement("div", {className: "panel-group"}, " ", this.props.children, " "); -
SRUAggregator/trunk/src/main/resources/assets/js/corpora.js
r6395 r6396 13 13 ///////////////////////////////// 14 14 15 var CorpusView = window.MyAggregator.CorpusView = React.createClass({displayName: "CorpusView",15 var CorpusView = window.MyAggregator.CorpusView = React.createClass({displayName: 'CorpusView', 16 16 propTypes: { 17 17 corpora: PT.object.isRequired, … … 123 123 return React.createElement("button", {className: "btn btn-default"}, 124 124 corpus.selected ? 125 React.createElement("span", {className: "glyphicon glyphicon-check", "aria-hidden": "true"}) :126 React.createElement("span", {className: "glyphicon glyphicon-unchecked", "aria-hidden": "true"})125 React.createElement("span", {className: "glyphicon glyphicon-check", 'aria-hidden': "true"}) : 126 React.createElement("span", {className: "glyphicon glyphicon-unchecked", 'aria-hidden': "true"}) 127 127 128 128 ); … … 136 136 React.createElement("a", null, 137 137 corpus.expanded ? 138 React.createElement("span", {className: "glyphicon glyphicon-minus", "aria-hidden": "true"}):139 React.createElement("span", {className: "glyphicon glyphicon-plus", "aria-hidden": "true"}),138 React.createElement("span", {className: "glyphicon glyphicon-minus", 'aria-hidden': "true"}): 139 React.createElement("span", {className: "glyphicon glyphicon-plus", 'aria-hidden': "true"}), 140 140 141 141 corpus.expanded ? " Collapse ":" Expand ", " (", corpus.subCorpora.length, " subcollections)" … … 245 245 }); 246 246 247 var SearchCorpusBox = React.createClass({displayName: "SearchCorpusBox",247 var SearchCorpusBox = React.createClass({displayName: 'SearchCorpusBox', 248 248 propTypes: { 249 249 search: PT.func.isRequired, -
SRUAggregator/trunk/src/main/resources/assets/js/main.js
r6395 r6396 3 3 "use strict"; 4 4 5 var VERSION = window.MyAggregator.VERSION = "v.2.0.0-beta-5 2";5 var VERSION = window.MyAggregator.VERSION = "v.2.0.0-beta-53"; 6 6 7 7 var URLROOT = window.MyAggregator.URLROOT = … … 36 36 */ 37 37 38 var Main = React.createClass({displayName: "Main",38 var Main = React.createClass({displayName: 'Main', 39 39 componentWillMount: function() { 40 40 routeFromLocation.bind(this)(); … … 215 215 216 216 217 var StatisticsPage = React.createClass({displayName: "StatisticsPage",217 var StatisticsPage = React.createClass({displayName: 'StatisticsPage', 218 218 propTypes: { 219 219 ajax: PT.func.isRequired, … … 400 400 }); 401 401 402 var HelpPage = React.createClass({displayName: "HelpPage",402 var HelpPage = React.createClass({displayName: 'HelpPage', 403 403 openHelpDesk: function() { 404 404 window.open('http://support.clarin-d.de/mail/form.php?queue=Aggregator&lang=en', … … 444 444 "or if want to send a feedback, you can write to Clarin-D helpdesk: "), 445 445 React.createElement("button", {type: "button", className: "btn btn-default btn-lg", onClick: this.openHelpDesk}, 446 React.createElement("span", {className: "glyphicon glyphicon-question-sign", "aria-hidden": "true"}),446 React.createElement("span", {className: "glyphicon glyphicon-question-sign", 'aria-hidden': "true"}), 447 447 "Â HelpDesk" 448 448 ) … … 453 453 }); 454 454 455 var AboutPage = React.createClass({displayName: "AboutPage",455 var AboutPage = React.createClass({displayName: 'AboutPage', 456 456 render: function() { 457 457 return React.createElement("div", null, … … 471 471 React.createElement("h3", null, "Statistics"), 472 472 React.createElement("button", {type: "button", className: "btn btn-default btn-lg", onClick: function() {main.toStatistics(true);}}, 473 React.createElement("span", {className: "glyphicon glyphicon-cog", "aria-hidden": "true"}, " "),473 React.createElement("span", {className: "glyphicon glyphicon-cog", 'aria-hidden': "true"}, " "), 474 474 "View server log" 475 475 ) … … 545 545 }); 546 546 547 var Footer = React.createClass({displayName: "Footer",547 var Footer = React.createClass({displayName: 'Footer', 548 548 toAbout: function(e) { 549 549 main.toAbout(true); … … 578 578 }); 579 579 580 var EmbeddedFooter = React.createClass({displayName: "EmbeddedFooter",580 var EmbeddedFooter = React.createClass({displayName: 'EmbeddedFooter', 581 581 render: function() { 582 582 return ( -
SRUAggregator/trunk/src/main/resources/assets/js/main.jsx
r6395 r6396 3 3 "use strict"; 4 4 5 var VERSION = window.MyAggregator.VERSION = "v.2.0.0-beta-5 2";5 var VERSION = window.MyAggregator.VERSION = "v.2.0.0-beta-53"; 6 6 7 7 var URLROOT = window.MyAggregator.URLROOT = -
SRUAggregator/trunk/src/main/resources/assets/js/search.js
r6395 r6396 209 209 210 210 211 var AggregatorPage = window.MyAggregator.AggregatorPage = React.createClass({displayName: "AggregatorPage",211 var AggregatorPage = window.MyAggregator.AggregatorPage = React.createClass({displayName: 'AggregatorPage', 212 212 propTypes: { 213 213 ajax: PT.func.isRequired, … … 563 563 ), 564 564 React.createElement("button", {className: "form-control btn btn-default", 565 "aria-expanded": "false", "data-toggle": "dropdown"},565 'aria-expanded': "false", 'data-toggle': "dropdown"}, 566 566 layer.name, " ", React.createElement("span", {className: "caret"}) 567 567 ) … … 629 629 ///////////////////////////////// 630 630 631 var LanguageSelector = React.createClass({displayName: "LanguageSelector",631 var LanguageSelector = React.createClass({displayName: 'LanguageSelector', 632 632 propTypes: { 633 633 anyLanguage: PT.array.isRequired, … … 821 821 return ( 822 822 React.createElement("div", {className: "dropdown"}, 823 React.createElement("button", {className: "btn btn-flat", "aria-expanded": "false", "data-toggle": "dropdown"},824 React.createElement("span", {className: "glyphicon glyphicon-download-alt", "aria-hidden": "true"}),823 React.createElement("button", {className: "btn btn-flat", 'aria-expanded': "false", 'data-toggle': "dropdown"}, 824 React.createElement("span", {className: "glyphicon glyphicon-download-alt", 'aria-hidden': "true"}), 825 825 " ", " Download ", " ", 826 826 React.createElement("span", {className: "caret"}) … … 843 843 return ( 844 844 React.createElement("div", {className: "dropdown"}, 845 React.createElement("button", {className: "btn btn-flat", "aria-expanded": "false", "data-toggle": "dropdown"},846 React.createElement("span", {className: "glyphicon glyphicon-export", "aria-hidden": "true"}),845 React.createElement("button", {className: "btn btn-flat", 'aria-expanded': "false", 'data-toggle': "dropdown"}, 846 React.createElement("span", {className: "glyphicon glyphicon-export", 'aria-hidden': "true"}), 847 847 " ", " Use Weblicht ", " ", 848 848 React.createElement("span", {className: "caret"}) … … 863 863 }; 864 864 865 var ZoomedResult = React.createClass({displayName: "ZoomedResult",865 var ZoomedResult = React.createClass({displayName: 'ZoomedResult', 866 866 propTypes: { 867 867 corpusHit: PT.object, … … 909 909 return React.createElement("span", {style: {fontStyle:'italic'}}, "No other results available for this query"); 910 910 return React.createElement("button", {className: "btn btn-default", onClick: this.nextResults}, 911 React.createElement("span", {className: "glyphicon glyphicon-option-horizontal", "aria-hidden": "true"}), " More Results"911 React.createElement("span", {className: "glyphicon glyphicon-option-horizontal", 'aria-hidden': "true"}), " More Results" 912 912 ); 913 913 }, … … 969 969 }); 970 970 971 var Results = React.createClass({displayName: "Results",971 var Results = React.createClass({displayName: 'Results', 972 972 propTypes: { 973 973 collhits: PT.object.isRequired, … … 1017 1017 React.createElement("div", {className: "progress", style: {marginBottom:10}}, 1018 1018 React.createElement("div", {className: "progress-bar progress-bar-striped active", role: "progressbar", 1019 "aria-valuenow": percents, "aria-valuemin": "0", "aria-valuemax": "100", style: styleperc}),1019 'aria-valuenow': percents, 'aria-valuemin': "0", 'aria-valuemax': "100", style: styleperc}), 1020 1020 percents > 2 ? false : 1021 1021 React.createElement("div", {className: "progress-bar progress-bar-striped active", role: "progressbar", 1022 "aria-valuenow": "100", "aria-valuemin": "0", "aria-valuemax": "100",1022 'aria-valuenow': "100", 'aria-valuemin': "0", 'aria-valuemax': "100", 1023 1023 style: {width: '100%', backgroundColor:'#888'}}) 1024 1024
Note: See TracChangeset
for help on using the changeset viewer.