Campaign сontroller
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
CampaignController
Evaluate 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 forevaluateExpression
ExpressionFormMapper
— convertsExpressionForm
toExpression
ClientSearchEngine
— for client lookup in the UI
Last updated
Was this helpful?