Project

General

Profile

« Previous | Next » 

Revision 62489

added sygma version 2 response + logging time for internal transformation

View differences:

SearchRequestController.java
1 1
package eu.dnetlib.data.search.web.api;
2 2

  
3 3
import com.google.common.collect.Iterables;
4
import com.google.gson.JsonObject;
4 5
import eu.dnetlib.api.data.SearchService;
5 6
import eu.dnetlib.api.data.SearchServiceException;
6 7
import eu.dnetlib.data.search.utils.cql.ParameterQueryEnhancer;
......
11 12
import org.apache.commons.lang.IncompleteArgumentException;
12 13
import org.apache.commons.lang.StringEscapeUtils;
13 14
import org.apache.log4j.Logger;
15
import org.json.JSONArray;
16
import org.json.JSONObject;
17
import org.json.XML;
14 18
import org.springframework.beans.factory.annotation.Autowired;
15 19
import org.springframework.context.annotation.EnableAspectJAutoProxy;
16 20
import org.springframework.http.HttpStatus;
......
67 71
    private static final HashSet<String> PUB_N_DATA_COMMON_PARAMETERS = new HashSet<>(Arrays.asList("author", "doi", "originalId",
68 72
            "community", "FP7ProjectID", "FP7scientificArea", "fromDateAccepted", "funder", "fundingStream", "hasECFunding", "hasProject",
69 73
            "hasWTFunding", "keywords", "model", "OA", "openaireProjectID", "openaireProviderID", "projectID", "title", "toDateAccepted",
70
            "country", "orcid"));
74
            "country", "orcid", "version"));
71 75

  
72 76
    private static final HashSet<String> RESULTS_PARAMETERS = new HashSet<>(Arrays.asList("resultID"));
73 77
    private static final HashSet<String> PUB_PARAMETERS = new HashSet<>(Arrays.asList("openairePublicationID", "sdg", "fos"));
......
224 228
        checkModelParameter(PUB_N_DATASET_MODELS, model);
225 229

  
226 230
        String locale = request.getParameter("locale");
227
        String sTransformer = defineTransformer(model,format);
231
        String sTransformer = defineTransformer(model,format, true, version);
228 232

  
229 233
        Collection<String> referrers = readParameter(request,"referrer");
230
        String newFormat = defineFormatter(model, format, true, referrers);
234
        String newFormat = defineFormatter(model, format, true, referrers, version);
231 235

  
232 236
        StringBuilder queryBuilder = new StringBuilder();
233 237
        queryBuilder.append(RESULTS_BASIC_QUERY);
234 238

  
235
        enhanceResearchOutcomesQuery(request, model, queryBuilder);
239
        enhanceResearchOutcomesQuery(request, model, version, queryBuilder);
236 240
        FormattedSearchResult formattedSearchResult = null;
237 241

  
238 242
        try {
......
247 251
        writer.append(formattedSearchResult.getFormattedResult());
248 252

  
249 253
        writer.close();
250

  
251
        time = System.currentTimeMillis() - time;
252
        logger.debug("Answer old time " + time);
253 254
    }
254 255

  
255 256
    @RequestMapping(value = "/api/publications", method = RequestMethod.GET, produces = {MediaType.APPLICATION_XML_VALUE,MediaType.APPLICATION_JSON_VALUE})
......
260 261
        int size = readParameter(request, "size", 10);
261 262
        String format = (request.getParameter("format") != null) ? request.getParameter("format") : "xml";
262 263
        String model = request.getParameter("model");
264
        String version = request.getParameter("version");
263 265

  
264 266
        checkParameters(PUB_PARAMETERS,request.getParameterMap());
265 267
        checkRequestSize(page, size);
......
268 270
        checkModelParameter(PUB_N_DATASET_MODELS, model);
269 271

  
270 272
        String locale = request.getParameter("locale");
271
        String sTransformer = defineTransformer(model,format);
273
        String sTransformer = defineTransformer(model,format, true, version);
272 274

  
273 275
        Collection<String> referrers = readParameter(request,"referrer");
274
        String newFormat = defineFormatter(model, format, true, referrers);
276
        String newFormat = defineFormatter(model, format, true, referrers, version);
275 277

  
276 278
        StringBuilder queryBuilder = new StringBuilder();
277 279
        queryBuilder.append(PUBLICATION_BASIC_QUERY);
278 280

  
279
        enhanceResearchOutcomesQuery(request, model, queryBuilder);
281
        enhanceResearchOutcomesQuery(request, model, version, queryBuilder);
280 282
        FormattedSearchResult formattedSearchResult = null;
281 283

  
282 284
        try {
......
288 290
        }
289 291

  
290 292
        PrintWriter writer = response.getWriter();
293

  
294
        if (format.equals("json") && model!=null && model.equals("sygma")) {
295
            //TODO check this
296
            response.setHeader("Content-Type",JSON_CONTENT_TYPE);
297
            writer.append(XML.toJSONObject(formattedSearchResult.getFormattedResult()).toString());
298

  
299
        } else {
291 300
        writer.append(formattedSearchResult.getFormattedResult());
301
        }
292 302

  
293 303
        writer.close();
294 304

  
......
296 306
        logger.debug("Answer old time " + time);
297 307
    }
298 308

  
299
    private void enhanceResearchOutcomesQuery(HttpServletRequest request, String model, StringBuilder queryBuilder) {
300
        ParameterQueryEnhancer.enhanceQueryWithFundingLevelParams(queryBuilder, request, vocabularyManager, isModelSygma(model));
309
    private void enhanceResearchOutcomesQuery(HttpServletRequest request, String model, String version, StringBuilder queryBuilder) {
310
        ParameterQueryEnhancer.enhanceQueryWithFundingLevelParams(queryBuilder, request, vocabularyManager, isModelSygma(model), version);
301 311
        ParameterQueryEnhancer.enhanceQueryWithOpenAIREIds(queryBuilder, request);
302 312
        ParameterQueryEnhancer.enhanceQueryWithMetadataKeywords(queryBuilder, request);
303 313
        ParameterQueryEnhancer.enhanceQueryWithFundingParams(queryBuilder, request);
......
309 319
        ParameterQueryEnhancer.enhanceQueryWithOrcid(queryBuilder, request);
310 320
        ParameterQueryEnhancer.enhanceQueryWithOriginalId(queryBuilder, request);
311 321
        ParameterQueryEnhancer.enhanceQueryWithClassifications(queryBuilder, request, vocabularyManager);
322
        ParameterQueryEnhancer.enhanceQueryWithInstanceType(queryBuilder, isModelSygma(model), version);
323

  
312 324
        ParameterQueryEnhancer.enhanceQueryWithResultsSortParameters(queryBuilder, request);
313 325
    }
314 326

  
......
322 334
        int page = readParameter(request, "page", 1);
323 335
        int size = readParameter(request, "size", 10);
324 336
        checkRequestSize(page, size);
337
        String version = request.getParameter("version");
325 338

  
326 339
        String format = (request.getParameter("format") != null) ? request.getParameter("format") : "xml";
327 340
        createResponseMeta(response, format);
......
330 343

  
331 344
        String model = request.getParameter("model");
332 345
        checkModelParameter(PUB_N_DATASET_MODELS, model);
333
        String sTransformer = defineTransformer(model,format);
346
        String sTransformer = defineTransformer(model, format, false, version);
334 347

  
335 348
        Collection<String> referrers = readParameter(request,"referrer");
336
        String newFormat = defineFormatter(model, format, false, referrers);
349
        String newFormat = defineFormatter(model, format, false, referrers, version);
337 350

  
338 351
        String locale = request.getParameter("locale");
339 352

  
340 353
        StringBuilder queryBuilder = new StringBuilder();
341 354
        queryBuilder.append(DATASET_BASIC_QUERY);
342 355

  
343
        enhanceResearchOutcomesQuery(request, model, queryBuilder);
356
        enhanceResearchOutcomesQuery(request, model, version, queryBuilder);
344 357

  
345 358
        FormattedSearchResult formattedSearchResult =  null;
346 359
        try {
......
356 369
        }
357 370

  
358 371
        PrintWriter writer = response.getWriter();
359
        writer.append(formattedSearchResult.getFormattedResult());
372
        if (format.equals("json") && model!=null && model.equals("sygma")) {
373
            //TODO check this
374
            response.setHeader("Content-Type",JSON_CONTENT_TYPE);
375
            writer.append(XML.toJSONObject(formattedSearchResult.getFormattedResult()).toString());
376

  
377
        } else {
378
            writer.append(formattedSearchResult.getFormattedResult());
379
        }
360 380
        writer.close();
361 381

  
362 382
    }
......
371 391
        int size = readParameter(request, "size", 10);
372 392
        checkRequestSize(page, size);
373 393

  
394
        String version = request.getParameter("version");
395

  
396

  
374 397
        String format = (request.getParameter("format") != null) ? request.getParameter("format") : "xml";
375 398
        createResponseMeta(response, format);
376 399

  
......
378 401

  
379 402
        String model = request.getParameter("model");
380 403
        checkModelParameter(PUB_N_DATASET_MODELS, model);
381
        String sTransformer = defineTransformer(model,format);
404
        String sTransformer = defineTransformer(model,format, false, version);
382 405

  
383 406
        Collection<String> referrers = readParameter(request,"referrer");
384
        String newFormat = defineFormatter(model, format, false, referrers);
407
        String newFormat = defineFormatter(model, format, false, referrers, version);
385 408

  
386 409
        String locale = request.getParameter("locale");
387 410

  
388 411
        StringBuilder queryBuilder = new StringBuilder();
389 412
        queryBuilder.append(SOFTWARE_BASIC_QUERY);
390 413

  
391
        enhanceResearchOutcomesQuery(request, model, queryBuilder);
414
        enhanceResearchOutcomesQuery(request, model, version, queryBuilder);
392 415

  
393 416
        FormattedSearchResult formattedSearchResult = null;
394 417

  
......
415 438
        int size = readParameter(request, "size", 10);
416 439
        checkRequestSize(page, size);
417 440

  
441
        String version = request.getParameter("version");
442

  
418 443
        String format = (request.getParameter("format") != null) ? request.getParameter("format") : "xml";
419 444
        createResponseMeta(response, format);
420 445

  
......
422 447

  
423 448
        String model = request.getParameter("model");
424 449
        checkModelParameter(PUB_N_DATASET_MODELS, model);
425
        String sTransformer = defineTransformer(model,format);
450
        String sTransformer = defineTransformer(model,format, false, version);
426 451

  
427 452
        Collection<String> referrers = readParameter(request,"referrer");
428
        String newFormat = defineFormatter(model, format, false, referrers);
453
        String newFormat = defineFormatter(model, format, false, referrers, version);
429 454

  
430 455
        String locale = request.getParameter("locale");
431 456

  
432 457
        StringBuilder queryBuilder = new StringBuilder();
433 458
        queryBuilder.append(OTHER_BASIC_QUERY);
434 459

  
435
        enhanceResearchOutcomesQuery(request, model, queryBuilder);
460
        enhanceResearchOutcomesQuery(request, model, version, queryBuilder);
436 461

  
437 462
        FormattedSearchResult formattedSearchResult = null;
438 463

  
......
566 591
    }*/
567 592

  
568 593
    //TODO: check if needed
569
    private String defineTransformer(String model, String format) {
594
    private String defineTransformer(String model, String format, boolean isPublications, String version) {
570 595
        if (model != null && !model.trim().isEmpty() && format != null && (format.equals("json")||format.equals("xml"))) {
571 596
            if (model.equals("openaire")) {
572 597
                return null;
573 598

  
574 599
            } else if (model.equals("sygma")) {
600
                System.out.println("SYGMA MODEL");
601
                if (version != null && version.equals("2")) {
602
                    if (isPublications)
603
                        return "sygma2_publication";
604
                    return "sygma_dataset2";
605
               }
575 606
                return "results_openaire";
576 607
            }
577 608
            else if (model.equals("dc")) {
......
589 620

  
590 621
    }
591 622

  
592
    private String defineFormatter(String model, String format, boolean isPublications, Collection<String> referrers) {
623
    private String defineFormatter(String model, String format, boolean isPublications, Collection<String> referrers, String version) {
593 624
        if( model != null && !model.trim().isEmpty() ) {
594 625
            if (model.equals("sygma")) {
595 626

  
596 627
                if (isPublications) {
628
                    if (version!= null && version.equals("2")) {
629
                        System.out.println("VERSION 2");
630
                        return "sygma2_publication_formatter";
631
                    }
632
                    System.out.println("NOT VERSION 2");
597 633
                    return "sygma_publication";
634
                } else {
635
                    System.out.println("NOT PUBLICATION");
636
                    if (version!= null && version.equals("2")) {
637
                        return "sygma_dataset2_formatter";
598 638
                }
599 639
                return "sygma_dataset";
600 640
            }
641
            }
642

  
601 643
        } else {
602 644
            if (referrers != null && !referrers.isEmpty() && Iterables.get(referrers, 0) != null && !Iterables.get(referrers, 0).isEmpty()) {
603 645
                return finalFormat(format, Iterables.get(referrers, 0));

Also available in: Unified diff