Campaign Controller
CampaignController
CampaignController — a Spring MVC controller that provides the UI interface for managing Campaign entities.
It extends ViewableFilterController<Long, Campaign, CampaignFilter>, which automatically adds standard CRUD operations and list filtering.
Example Code:
@Controller
@RequestMapping(value = CampaignController.PATH)
public class CampaignController extends
ViewableFilterController<Long, Campaign, CampaignFilter> {
public static final String PATH = "/campaign";
@Autowired
private CampaignService service;
@Autowired
private CampaignExecutionService executionService;
@Autowired
private ExpressionFormMapper expressionFormMapper;
@Autowired
private ClientSearchEngine clientSearchEngine;
@RequestMapping(value = "/evaluate-expression", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody
List<String> evaluateExpression(@Valid CampaignEvaluationForm form) throws ScriptException {
Expression expression = expressionFormMapper.createEntity(form.getExpression());
return List.of(String.valueOf(executionService.evaluateExpression(form.entityId, expression)));
}
@PreAuthorize("hasRole(this.viewRole)")
@RequestMapping(value = "/entities", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public Map<?, String> getData(@RequestParam String search) {
return clientSearchEngine.getData(search, (entity, name) -> name);
}
public static class CampaignEvaluationForm {
@NotNull
private UUID entityId;
@Valid
private ExpressionForm expression;
// getters and setters
}
}🔧 Key Functions of CampaignController
CampaignControllerEvaluate Expression (/evaluate-expression)
Allows testing of a filtering script (Expression) against a specific client directly from the UI (while editing a campaign).
Useful for debugging the expression before launching a campaign.
@RequestMapping(value = "/evaluate-expression", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public List<String> evaluateExpression(@Valid CampaignEvaluationForm form) throws ScriptException {
Expression expression = expressionFormMapper.createEntity(form.getExpression());
return List.of(String.valueOf(executionService.evaluateExpression(form.entityId, expression)));
}🔒 Available only to authorized users with the appropriate role.
Client Autocomplete (/entities)
Used in the client selection UI component (e.g., during expression testing).
@RequestMapping(value = "/entities", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public Map<?, String> getData(@RequestParam String search) {
return clientSearchEngine.getData(search, (entity, name) -> name);
}📥 CampaignEvaluationForm
CampaignEvaluationForm is the form used when testing a filtering expression.
It is submitted to the /evaluate-expression endpoint.
public static class CampaignEvaluationForm {
@NotNull
private UUID entityId; // ID of the client used for testing the expression
@Valid
private ExpressionForm expression; // The expression in form format
}🧩 Dependencies Used:
CampaignService— main campaign serviceCampaignExecutionService— used forevaluateExpressionExpressionFormMapper— convertsExpressionFormtoExpressionClientSearchEngine— for client lookup in the UI
Last updated
Was this helpful?