Skip to content

Commit

Permalink
#30192 adding the date range parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
jdotcms committed Oct 1, 2024
1 parent dcfbb41 commit 071f3bf
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,9 @@ public CubeJSQuery parseQueryToCubeQuery(final AnalyticsQuery query) {
private Collection<CubeJSQuery.TimeDimension> parseTimeDimensions(final String timeDimensions) {
final TimeDimensionParser.TimeDimension parsedTimeDimension = TimeDimensionParser.parseTimeDimension(timeDimensions);
return Stream.of(
new CubeJSQuery.TimeDimension(parsedTimeDimension.getDimension(),
parsedTimeDimension.getGranularity())
Objects.isNull(parsedTimeDimension.getDateRange())?
new CubeJSQuery.TimeDimension(parsedTimeDimension.getDimension(),parsedTimeDimension.getGranularity()):
new CubeJSQuery.TimeDimension(parsedTimeDimension.getDimension(),parsedTimeDimension.getGranularity(), parsedTimeDimension.getDateRange())
).collect(Collectors.toList());
}

Expand Down
5 changes: 5 additions & 0 deletions dotCMS/src/main/java/com/dotcms/cube/CubeJSQuery.java
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,11 @@ public Builder timeDimension(final String dimension, final String granularity) {
return this;
}

public Builder timeDimension(final String dimension, final String granularity, final String dateRange) {
this.timeDimensions.add(new TimeDimension(dimension, granularity, dateRange));
return this;
}

public Builder timeDimensions(Collection<TimeDimension> timeDimensions) {
this.timeDimensions.addAll(timeDimensions);
return this;
Expand Down
31 changes: 31 additions & 0 deletions dotCMS/src/test/java/com/dotcms/cube/CubeJSTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,37 @@ public void dimensions(){
assertEquals(queryExpected, cubeJSQuery.toString());
}

/**
* Method to test: {@link Builder#build()}
* When: Create a CubeJS Query with time dimension and date range equals to: Events.count
* Should: Create the follow query:
* <code>
* {
* "timeDimensions":[
* {
* "dimension":"Events.day",
* "granularity":"day",
* "dateRange":"This Week"
* }
* ],
* "dimensions":[
* "Events.day"
* ]
* }
* </code>
*/
@Test
public void timeDimensions(){
final CubeJSQuery cubeJSQuery = new Builder()
.dimensions("Events.day")
.timeDimension("Events.day", "day", "This Week")
.build();

final String queryExpected = "{\"timeDimensions\":[{\"dimension\":\"Events.day\",\"granularity\":\"day\",\"dateRange\":\"This Week\"}],\"dimensions\":[\"Events.day\"]}";

assertEquals(queryExpected, cubeJSQuery.toString());
}

/**
* Method to test: {@link Builder#build()}
* When: Create a CubeJS Query with measures equals to: Events.count
Expand Down

0 comments on commit 071f3bf

Please sign in to comment.