1616 */
1717package com .indoqa .solr .facet .api ;
1818
19+ import java .time .Instant ;
1920import java .time .format .DateTimeFormatter ;
2021import java .util .Date ;
2122
@@ -31,12 +32,12 @@ public class RangeFacet extends AbstractFacet {
3132private static final String PARAM_FIELD ="field" ;
3233
3334private final String field ;
34- private final Date start ;
35- private final Date end ;
35+ private final String start ;
36+ private final String end ;
3637private final GapUnit gapUnit ;
3738private final int gapValue ;
3839
39- public RangeFacet (String name ,String field ,Date start ,Date end ,GapUnit gapUnit ,int gapValue ) {
40+ private RangeFacet (String name ,String field ,String start ,String end ,GapUnit gapUnit ,int gapValue ) {
4041super (TYPE_RANGE ,name );
4142
4243this .field =field ;
@@ -46,23 +47,30 @@ public RangeFacet(String name, String field, Date start, Date end, GapUnit gapUn
4647this .gapValue =gapValue ;
4748 }
4849
50+ public static RangeFacet fromDates (String name ,String field ,Date start ,Date end ,GapUnit gapUnit ,int gapValue ) {
51+ return fromInstants (name ,field ,start .toInstant (),end .toInstant (),gapUnit ,gapValue );
52+ }
53+
54+ public static RangeFacet fromInstants (String name ,String field ,Instant start ,Instant end ,GapUnit gapUnit ,int gapValue ) {
55+ return fromStrings (name ,field ,DateTimeFormatter .ISO_INSTANT .format (start ),DateTimeFormatter .ISO_INSTANT .format (end ),
56+ gapUnit ,gapValue );
57+ }
58+
59+ public static RangeFacet fromStrings (String name ,String field ,String start ,String end ,GapUnit gapUnit ,int gapValue ) {
60+ return new RangeFacet (name ,field ,start ,end ,gapUnit ,gapValue );
61+ }
62+
4963@ Override
5064protected void writeFacetConfiguration (JSONWriter jsonWriter ) {
5165super .writeFacetConfiguration (jsonWriter );
5266
53- this .writeStringField (jsonWriter ,PARAM_FIELD ,this .field );
54- this .writeValueSeparator (jsonWriter );
55- this .writeStringField (jsonWriter ,PARAM_START ,this .toString (this .start ));
56- this .writeValueSeparator (jsonWriter );
57- this .writeStringField (jsonWriter ,PARAM_END ,this .toString (this .end ));
58- this .writeValueSeparator (jsonWriter );
59- this .writeStringField (jsonWriter ,PARAM_GAP ,this .toString (this .gapValue ,this .gapUnit ));
60- }
61-
62- private String toString (Date date ) {
63- StringBuilder stringBuilder =new StringBuilder ();
64- DateTimeFormatter .ISO_INSTANT .formatTo (date .toInstant (),stringBuilder );
65- return stringBuilder .toString ();
67+ writeStringField (jsonWriter ,PARAM_FIELD ,this .field );
68+ writeValueSeparator (jsonWriter );
69+ writeStringField (jsonWriter ,PARAM_START ,this .start );
70+ writeValueSeparator (jsonWriter );
71+ writeStringField (jsonWriter ,PARAM_END ,this .end );
72+ writeValueSeparator (jsonWriter );
73+ writeStringField (jsonWriter ,PARAM_GAP ,this .toString (this .gapValue ,this .gapUnit ));
6674 }
6775
6876private String toString (int value ,GapUnit unit ) {