public static <T> T checkNotNull(T value, String name) { checkArgument(value != null, name + " is null"); return value; }
public static String checkCollectionValid(String collection) { checkArgument(collection != null, "collection is null"); checkArgument(!collection.isEmpty(), "collection is empty string"); if (collection.length() > 100) { throw new IllegalArgumentException("Collection name must have maximum 250 characters."); } return collection; }
public static String checkProject(String project) { checkArgument(project != null, "project is null"); if (!project.matches("^[0-9A-Za-z_]+$")) { throw new IllegalArgumentException("Project id is not valid. It must be alphanumeric and should not include empty space."); } return project.toLowerCase(ENGLISH); }
@ApiOperation(value = "Perform simple query on event data", authorizations = @Authorization(value = "read_key") ) @JsonRequest @Path("/analyze") public CompletableFuture<QueryResult> analyzeEvents(@Named("project") RequestContext context, @QueryParam("read_key") String readKey, @BodyParam AnalyzeRequest analyzeRequest) { checkArgument(!analyzeRequest.collections.isEmpty(), "collections array is empty"); return eventExplorer.analyze(context, analyzeRequest.collections, analyzeRequest.measure, analyzeRequest.grouping, analyzeRequest.segment, analyzeRequest.filterExpression, analyzeRequest.startDate, analyzeRequest.endDate, Optional.ofNullable(analyzeRequest.timezone).orElse(ZoneOffset.UTC)).getResult(); }
@JsonCreator public RealTimeReport(@ApiParam("name") String name, @ApiParam("measures") List<Measure> measures, @ApiParam("table_name") String tableName, @ApiParam("collections") Set<String> collections, @ApiParam(value = "filter", required = false) String filter, @ApiParam(value = "dimensions", required = false) List<String> dimensions) { this.name = checkNotNull(name, "name is required"); this.table_name = checkNotNull(tableName, "table_name is required"); this.collections = checkNotNull(collections, "collections is required"); this.filter = filter; this.measures = checkNotNull(measures, "measures is required"); this.dimensions = dimensions; if (this.measures.isEmpty()) { throw new RakamException("There must be at least one measure", BAD_REQUEST); } for (Measure measure : measures) { if (dimensions.stream().anyMatch(dimension -> dimension.equals(measure.column))) { throw new RakamException(format("Column %s in dimension cannot be also in measures", measure.column), BAD_REQUEST); } } ValidationUtil.checkArgument(!collections.isEmpty(), "collections is empty"); }
@ApiOperation(value = "Perform simple query on event data", request = AnalyzeRequest.class, consumes = "text/event-stream", produces = "text/event-stream", authorizations = @Authorization(value = "read_key") ) @GET @IgnoreApi @Path("/analyze/export") public void exportEvents(RakamHttpRequest request, @QueryParam("read_key") String readKey) { queryService.handleServerSentQueryExecution(request, AnalyzeRequest.class, (project, analyzeRequest) -> { checkArgument(!analyzeRequest.collections.isEmpty(), "collections array is empty"); return eventExplorer.export(new RequestContext(project, readKey), analyzeRequest.collections, analyzeRequest.measure, analyzeRequest.grouping, analyzeRequest.segment, analyzeRequest.filterExpression, analyzeRequest.startDate, analyzeRequest.endDate, Optional.ofNullable(analyzeRequest.timezone).orElse(ZoneOffset.UTC)); }); }
@ApiOperation(value = "Perform simple query on event data", request = AnalyzeRequest.class, consumes = "text/event-stream", produces = "text/event-stream", authorizations = @Authorization(value = "read_key") ) @GET @IgnoreApi @Path("/analyze") public void analyzeEvents(RakamHttpRequest request, @QueryParam("read_key") String readKey) { queryService.handleServerSentQueryExecution(request, AnalyzeRequest.class, (project, analyzeRequest) -> { checkArgument(!analyzeRequest.collections.isEmpty(), "collections array is empty"); ZoneId timezone = Optional.ofNullable(analyzeRequest.timezone).orElse(ZoneOffset.UTC); return eventExplorer.analyze(new RequestContext(project, readKey), analyzeRequest.collections, analyzeRequest.measure, analyzeRequest.grouping, analyzeRequest.segment, analyzeRequest.filterExpression, analyzeRequest.startDate, analyzeRequest.endDate, timezone); }); }
Optional<String> dimension, Optional<Integer> period, LocalDate startDate, LocalDate endDate, ZoneId zoneId, boolean approximate) { period.ifPresent(e -> checkArgument(e >= 0, "Period must be 0 or a positive value")); if (approximate) {
boolean approximateVal) { boolean approximate = true; period.ifPresent(e -> checkArgument(e >= 0, "Period must be 0 or a positive value"));