@@ -425,51 +425,75 @@ private ReviewFeatureResponseDTO getReviewFeatureDTO(final BindingSet bindings)
425425
426426
427427 private ReviewDTO getReviewDTO (final BindingSet bindings ) {
428- ReviewDTO ReviewDTO = new ReviewDTO ();
428+ ReviewDTO reviewDTO = new ReviewDTO ();
429+
429430 if (existsShortReviewBinding (bindings )) {
430431 if (bindings .getBinding ("id" ) != null && bindings .getBinding ("id" ).getValue () != null ) {
431432 String idValue = bindings .getBinding ("id" ).getValue ().stringValue ();
432- ReviewDTO .setId (idValue );
433+ reviewDTO .setId (idValue );
433434 }
434435
435436 if (bindings .getBinding ("text" ) != null && bindings .getBinding ("text" ).getValue () != null ) {
436437 String textValue = bindings .getBinding ("text" ).getValue ().stringValue ();
437- ReviewDTO .setReviewText (textValue );
438+ reviewDTO .setReviewText (textValue );
438439 }
439440
440441 if (bindings .getBinding ("app_identifier" ) != null && bindings .getBinding ("app_identifier" ).getValue () != null ) {
441442 String appValue = bindings .getBinding ("app_identifier" ).getValue ().stringValue ();
442- ReviewDTO .setApplicationId (appValue );
443-
443+ reviewDTO .setApplicationId (appValue );
444444 }
445445
446446 if (bindings .getBinding ("date" ) != null && bindings .getBinding ("date" ).getValue () != null ) {
447447 String dateString = bindings .getBinding ("date" ).getValue ().stringValue ();
448- try {
449- SimpleDateFormat dateFormat = new SimpleDateFormat ( "yyyy-MM-dd" );
450- Date date = dateFormat . parse ( dateString );
451- ReviewDTO .setDate (date );
452- } catch ( ParseException e ) {
453- e . printStackTrace ( );
448+
449+ Date date = parseDate ( dateString );
450+ if ( date != null ) {
451+ reviewDTO .setDate (date );
452+ } else {
453+ System . err . println ( "Failed to parse date: " + dateString );
454454 }
455455 }
456456 }
457- ReviewDTO .setSentences (new ArrayList <>());
458- TupleQueryResult sentencesResult =
459- runSparqlQuery (reviewQueryBuilder .findReviewSentencesEmotions (new ArrayList <>(Collections .singleton (ReviewDTO .getId ()))));
457+
458+ reviewDTO .setSentences (new ArrayList <>());
459+ TupleQueryResult sentencesResult = runSparqlQuery (
460+ reviewQueryBuilder .findReviewSentencesEmotions (new ArrayList <>(Collections .singleton (reviewDTO .getId ())))
461+ );
462+
460463 if (sentencesResult .hasNext ()) {
461464 while (sentencesResult .hasNext ()) {
462- ReviewDTO
463- .getSentences ()
464- .add (getSentenceDTO (sentencesResult ));
465+ reviewDTO .getSentences ().add (getSentenceDTO (sentencesResult ));
465466 }
466467 } else {
467- ReviewDTO .setSentences (new ArrayList <>());
468+ reviewDTO .setSentences (new ArrayList <>());
468469 }
469470
470- return ReviewDTO ;
471+ return reviewDTO ;
471472 }
472473
474+ private Date parseDate (String dateString ) {
475+ List <String > dateFormats = Arrays .asList (
476+ "yyyy-MM-dd" ,
477+ "EEE MMM dd HH:mm:ss z yyyy" ,
478+ "MM/dd/yyyy" ,
479+ "dd/MM/yyyy" ,
480+ "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" ,
481+ "yyyy-MM-dd'T'HH:mm:ss'Z'" ,
482+ "yyyy-MM-dd HH:mm:ss"
483+ );
484+
485+ for (String format : dateFormats ) {
486+ try {
487+ SimpleDateFormat dateFormat = new SimpleDateFormat (format , Locale .ENGLISH );
488+ dateFormat .setLenient (false );
489+ return dateFormat .parse (dateString );
490+ } catch (ParseException ignored ) {
491+ }
492+ }
493+
494+ System .err .println ("Failed to parse date: " + dateString );
495+ return null ; // If no formats match
496+ }
473497 private boolean existsShortReviewBinding (BindingSet bindings ) {
474498 return bindings .getBinding ("id" ) != null
475499 && bindings .getBinding ("id" ).getValue () != null
0 commit comments