Ignore:
Timestamp:
03/10/15 14:16:28 (9 years ago)
Author:
emanuel.dima@uni-tuebingen.de
Message:
  1. beta-27: more results, bug fixes
File:
1 edited

Legend:

Unmodified
Added
Removed
  • SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/search/Result.java

    r5971 r6092  
    11package eu.clarin.sru.fcs.aggregator.search;
    22
    3 import eu.clarin.sru.client.SRUClientException;
    43import eu.clarin.sru.client.SRUDiagnostic;
    54import eu.clarin.sru.client.SRURecord;
     
    1918import java.util.Collections;
    2019import java.util.List;
     20import java.util.concurrent.atomic.AtomicBoolean;
     21import java.util.concurrent.atomic.AtomicInteger;
     22import java.util.concurrent.atomic.AtomicReference;
    2123import org.w3c.dom.Node;
    2224import org.slf4j.LoggerFactory;
     
    3436        private static final org.slf4j.Logger log = LoggerFactory.getLogger(Result.class);
    3537
    36         private Request request;
    37         private List<Kwic> kwics = new ArrayList<Kwic>();
    38         private JsonException exception;
    39         private List<Diagnostic> diagnostics = new ArrayList<Diagnostic>();
     38        private final Corpus corpus;
     39        private AtomicBoolean inProgress = new AtomicBoolean(true);
     40        private AtomicInteger endpointReturnedRecords = new AtomicInteger();
     41        private AtomicReference<JsonException> exception = new AtomicReference<JsonException>();
     42        private List<Diagnostic> diagnostics = Collections.synchronizedList(new ArrayList<Diagnostic>());
     43        private List<Kwic> kwics = Collections.synchronizedList(new ArrayList<Kwic>());
    4044
    4145        public List<Kwic> getKwics() {
     
    4347        }
    4448
    45         public Result(Request request, SRUSearchRetrieveResponse response,
    46                         SRUClientException xc) {
    47                 this.request = request;
    48                 if (xc != null) {
    49                         exception = new JsonException(xc);
    50                 }
     49        public Result(Corpus corpus) {
     50                this.corpus = corpus;
     51        }
     52
     53        public void setInProgress(boolean inProgress) {
     54                this.inProgress.set(inProgress);
     55        }
     56
     57        public boolean getInProgress() {
     58                return inProgress.get();
     59        }
     60
     61        public void addResponse(SRUSearchRetrieveResponse response) {
    5162                if (response != null && response.hasRecords()) {
    52                         setResponse(response);
     63                        for (SRURecord record : response.getRecords()) {
     64                                addRecord(record);
     65                        }
    5366                }
    5467                if (response != null && response.hasDiagnostics()) {
    55                         setDiagnostics(response);
    56                 }
    57         }
    58 
    59         void setResponse(SRUSearchRetrieveResponse response) {
    60                 for (SRURecord record : response.getRecords()) {
    61                         if (record.isRecordSchema(ClarinFCSRecordData.RECORD_SCHEMA)) {
    62                                 ClarinFCSRecordData rd = (ClarinFCSRecordData) record.getRecordData();
    63                                 Resource resource = rd.getResource();
    64                                 setClarinRecord(resource);
    65                                 log.debug("Resource ref={0}, pid={1}, dataViews={2}",
    66                                                 new Object[]{resource.getRef(), resource.getPid(), resource.hasDataViews()});
    67                         } else if (record.isRecordSchema(SRUSurrogateRecordData.RECORD_SCHEMA)) {
    68                                 SRUSurrogateRecordData r = (SRUSurrogateRecordData) record.getRecordData();
    69                                 log.info("Surrogate diagnostic: uri={0}, message={1}, detail={2}",
    70                                                 new Object[]{r.getURI(), r.getMessage(), r.getDetails()});
    71                         } else {
    72                                 log.info("Unsupported schema: {0}", record.getRecordSchema());
     68                        for (SRUDiagnostic d : response.getDiagnostics()) {
     69                                diagnostics.add(new Diagnostic(d.getURI(), d.getMessage(), d.getDetails()));
    7370                        }
    7471                }
    7572        }
    7673
    77         void setDiagnostics(SRUSearchRetrieveResponse response) {
    78                 for (SRUDiagnostic d : response.getDiagnostics()) {
    79                         SRUSearchRetrieveRequest srurequest = response.getRequest();
    80                         diagnostics.add(new Diagnostic(d.getURI(), d.getMessage(), d.getDetails()));
     74        void addRecord(SRURecord record) {
     75                endpointReturnedRecords.getAndIncrement();
     76                if (record.isRecordSchema(ClarinFCSRecordData.RECORD_SCHEMA)) {
     77                        ClarinFCSRecordData rd = (ClarinFCSRecordData) record.getRecordData();
     78                        Resource resource = rd.getResource();
     79                        setClarinRecord(resource);
     80                        log.debug("Resource ref={0}, pid={1}, dataViews={2}",
     81                                        new Object[]{resource.getRef(), resource.getPid(), resource.hasDataViews()});
     82                } else if (record.isRecordSchema(SRUSurrogateRecordData.RECORD_SCHEMA)) {
     83                        SRUSurrogateRecordData r = (SRUSurrogateRecordData) record.getRecordData();
     84                        log.info("Surrogate diagnostic: uri={0}, message={1}, detail={2}",
     85                                        new Object[]{r.getURI(), r.getMessage(), r.getDetails()});
     86                } else {
     87                        log.info("Unsupported schema: {0}", record.getRecordSchema());
    8188                }
    8289        }
     
    130137
    131138        public JsonException getException() {
    132                 return exception;
     139                return exception.get();
    133140        }
    134141
    135         public int getStartRecord() {
    136                 return request.getStartRecord();
     142        public void setException(Exception xc) {
     143                exception.set(new JsonException(xc));
    137144        }
    138145
    139         public int getEndRecord() {
    140                 return request.getEndRecord();
     146        public int getEndpointReturnedRecords() {
     147                return endpointReturnedRecords.get();
    141148        }
    142149
    143150        public Corpus getCorpus() {
    144                 return request.getCorpus();
    145         }
    146 
    147         public String getSearchString() {
    148                 return request.getSearchString();
     151                return corpus;
    149152        }
    150153}
Note: See TracChangeset for help on using the changeset viewer.