Ignore:
Timestamp:
02/24/15 16:58:55 (9 years ago)
Author:
emanuel.dima@uni-tuebingen.de
Message:
  1. alpha 21: downloading as text, csv, excel and tcf works
File:
1 edited

Legend:

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

    r5976 r6043  
    1313import eu.clarin.sru.fcs.aggregator.search.Search;
    1414import eu.clarin.sru.fcs.aggregator.lang.LanguagesISO693_3;
     15import eu.clarin.sru.fcs.aggregator.search.ExportException;
    1516import eu.clarin.sru.fcs.aggregator.search.Exports;
    1617import java.io.IOException;
     
    2122import java.util.Map;
    2223import java.util.Set;
     24import java.util.logging.Level;
     25import java.util.logging.Logger;
    2326import javax.servlet.ServletContext;
    2427import javax.servlet.http.HttpServletRequest;
     
    3336import javax.ws.rs.core.MediaType;
    3437import javax.ws.rs.core.Response;
     38import opennlp.tools.tokenize.TokenizerModel;
    3539import org.slf4j.LoggerFactory;
    3640
     
    4246@Path("/")
    4347public class RestService {
     48
    4449        private static final String EXPORT_FILENAME_PREFIX = "ClarinDFederatedContentSearch-";
    4550        private static final String TCF_MEDIA_TYPE = "text/tcf+xml";
    4651        private static final String EXCEL_MEDIA_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
     52        private static final String SEARCH_RESULTS_ENCODING = "UTF-8";
    4753
    4854        private static final org.slf4j.Logger log = LoggerFactory.getLogger(RestService.class);
     
    8288                                                put("isScan", true);
    8389                                                put("institutions", scan.getInstitutions());
     90                                                put("date", scan.getDate());
    8491                                        }
    8592                                });
     
    9198                                                put("isScan", false);
    9299                                                put("institutions", search.getInstitutions());
     100                                                put("date", scan.getDate());
    93101                                        }
    94102                                });
     
    105113                log.info("get language codes", codes);
    106114                for (String code : codes) {
    107                         String name = LanguagesISO693_3.getInstance().nameForCode(code);
     115                        String name = LanguagesISO693_3.getInstance().nameForCode_3(code);
    108116                        languages.put(code, name != null ? name : code);
    109117                }
     
    184192                }
    185193
    186                 if (format == null || format.trim().isEmpty() || format.trim().equals("text")) {
     194        if (format == null || format.trim().isEmpty() || format.trim().equals("text")) {
    187195                        String text = Exports.getExportText(search.getResults());
    188196                        return download(text, MediaType.TEXT_PLAIN, search.getQuery() + ".txt");
     
    215223                                .build();
    216224        }
     225
     226        @GET
     227        @Path("search/{id}/toWeblicht")
     228        public Response sendSearchResultsToWeblicht(@PathParam("id") Long searchId,
     229                        @QueryParam("format") String format) throws Exception {
     230                Search search = Aggregator.getInstance().getSearchById(searchId);
     231                if (search == null) {
     232                        return Response.status(Response.Status.NOT_FOUND).entity("Search job not found").build();
     233                }
     234
     235                String url = null;
     236                if (format == null || format.isEmpty() || format.trim().equals("text")) {
     237                        String text = Exports.getExportText(search.getResults());
     238                        if (text != null) {
     239                                byte[] bytes = text.getBytes(SEARCH_RESULTS_ENCODING);
     240                                url = DataTransfer.uploadToDropOff(bytes, "text/plan", ".txt");
     241                        }
     242                } else if (format.equals("tokens")) {
     243                        byte[] bytes = Exports.getExportTokenizedTCF(
     244                                        search.getResults(), search.getSearchLanguage(),
     245                                        Aggregator.getInstance().getTokenizerModel());
     246                        if (bytes != null) {
     247                                url = DataTransfer.uploadToDropOff(bytes, "text/tcf+xml", ".tcf");
     248                        }
     249                } else {
     250                        return Response.status(400).entity("incorrect format parameter").build();
     251                }
     252
     253                return url == null ? Response.status(503).entity("error while exporting to weblicht").build()
     254                                : Response.ok().entity(url).build();
     255        }
    217256}
Note: See TracChangeset for help on using the changeset viewer.