Class FormItemsRestController
java.lang.Object
sk.iway.iwcm.system.datatable.DatatableRestControllerV2<FormItemEntity,Long>
sk.iway.iwcm.components.multistep_form.rest.FormItemsRestController
@RestController
@RequestMapping("/admin/rest/form-items")
@PreAuthorize("@WebjetSecurityService.hasPermission(\'cmp_form\')")
public class FormItemsRestController
extends DatatableRestControllerV2<FormItemEntity,Long>
Manages multistep form items through the administration DataTable.
The controller scopes records to a form, step, and domain, prepares editor options and previews, validates field dependencies, and keeps the generated form pattern synchronized after changes.
-
Constructor Summary
ConstructorsConstructorDescriptionFormItemsRestController(FormItemsRepository formItemsRepository, RegExpRepository regExpRepository, MultistepFormsService multistepFormsService, FormSettingsRepository formSettingsRepository, FormItemsConditionsRepository formItemsConditionsRepository, FormStepsRepository formStepsRepository, FormsServiceImpl formsService) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddSpecSearch(Map<String, String> params, List<jakarta.persistence.criteria.Predicate> predicates, jakarta.persistence.criteria.Root<FormItemEntity> root, jakarta.persistence.criteria.CriteriaBuilder builder) Restricts table search to the requested form and, when supplied, its step.org.springframework.data.domain.PageableaddSpecSort(Map<String, String> params, org.springframework.data.domain.Pageable pageable) Applies the fixed step and item-priority ordering required by the form editor.voidafterDelete(FormItemEntity entity, long id) Clears cached validation fields and regenerates the form pattern after an item is deleted.voidafterSave(FormItemEntity entity, FormItemEntity saved) Clears cached validation fields and regenerates the form pattern after a standard item save.booleanbeforeDelete(FormItemEntity entity) Prevents deletion of a field referenced by another field condition.voidbeforeSave(FormItemEntity entity) Normalizes a form item before persistence.booleancheckItemPerms(FormItemEntity entity, Long id) Verifies that an item belongs to an accessible form, valid step, and current domain.protected booleancheckRowReorderScope(jakarta.servlet.http.HttpServletRequest request, List<FormItemEntity> entities) Verifies that every reordered item belongs to the requested form, step, and domain.org.springframework.data.domain.Page<FormItemEntity>getAllItems(org.springframework.data.domain.Pageable pageable) Loads form items and enriches the page with row styling and editor options.getDefaultRegex(String fieldType) Resolves default regular-expression validators from a field template's input classes.getOneItem(long id) Loads an item for editing or creates an editor model with context-specific defaults.insertItem(FormItemEntity entity) Inserts a form item or updates only reporting options in chart-statistics mode.processFromEntity(FormItemEntity entity, ProcessItemAction action) Prepares persisted values and transient editor fields for a DataTable response.processToEntity(FormItemEntity entity, ProcessItemAction action) Maps transient editor values to persistent fields and clears incompatible settings.org.springframework.http.ResponseEntity<Boolean>rowReorder(jakarta.servlet.http.HttpServletRequest request, RowReorderDto rowReorderDto) Clears cached field ordering after a successful row reorder, which bypasses the save hooks.voidvalidateEditor(jakarta.servlet.http.HttpServletRequest request, DatatableRequest<Long, FormItemEntity> target, Identity user, org.springframework.validation.Errors errors, Long id, FormItemEntity entity) Validates form identity, row-view compatibility, and field condition dependencies.Methods inherited from class sk.iway.iwcm.system.datatable.DatatableRestControllerV2
action, add, addNotify, addNotify, afterDuplicate, afterImportChunk, allowGeneratedIdOnCreate, beforeDuplicate, beforeDuplicate, checkAccessAllowed, copyEntityIntoOriginal, delete, deleteItem, edit, editItem, findByColumns, findItemBy, getAll, getAllItemsIncludeSpecSearch, getCleanKey, getCleanValue, getCustomFieldsSearchDto, getDomainId, getImportedColumns, getImportMode, getInvalidImportedRows, getLastImportedRow, getOne, getOptions, getParamsMap, getProp, getRepo, getRequest, getSearchConditions, getSearchProperties, getSum, getUpdateByColumn, getUser, handleEditor, hasNotify, initBinder, isDuplicate, isExporting, isForceReload, isImporting, isSkipWrongData, jpaToBoolean, preImportDataEdit, processAction, processFromEntity, processFromEntity, processFromEntity, searchItem, setForceReload, setRedirect, setRequest, setValidator, sumItems, throwConstraintViolation, throwError, throwError, throwError, throwError, throwError, throwError, validateEditorForCustomFields
-
Constructor Details
-
FormItemsRestController
@Autowired public FormItemsRestController(FormItemsRepository formItemsRepository, RegExpRepository regExpRepository, MultistepFormsService multistepFormsService, FormSettingsRepository formSettingsRepository, FormItemsConditionsRepository formItemsConditionsRepository, FormStepsRepository formStepsRepository, FormsServiceImpl formsService)
-
-
Method Details
-
getAllItems
public org.springframework.data.domain.Page<FormItemEntity> getAllItems(org.springframework.data.domain.Pageable pageable) Loads form items and enriches the page with row styling and editor options.- Overrides:
getAllItemsin classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
pageable- requested page and sorting information- Returns:
- page of form items prepared for the administration DataTable
-
addSpecSearch
public void addSpecSearch(Map<String, String> params, List<jakarta.persistence.criteria.Predicate> predicates, jakarta.persistence.criteria.Root<FormItemEntity> root, jakarta.persistence.criteria.CriteriaBuilder builder) Restricts table search to the requested form and, when supplied, its step.- Overrides:
addSpecSearchin classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
params- submitted search parameterspredicates- predicates to extend with form-specific constraintsroot- form item query rootbuilder- criteria builder used to create predicates
-
addSpecSort
public org.springframework.data.domain.Pageable addSpecSort(Map<String, String> params, org.springframework.data.domain.Pageable pageable) Applies the fixed step and item-priority ordering required by the form editor.- Overrides:
addSpecSortin classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
params- request parameters from which any client-provided sort is removedpageable- requested paging information- Returns:
- paging information ordered by step and item priority
-
validateEditor
public void validateEditor(jakarta.servlet.http.HttpServletRequest request, DatatableRequest<Long, FormItemEntity> target, Identity user, org.springframework.validation.Errors errors, Long id, FormItemEntity entity) Validates form identity, row-view compatibility, and field condition dependencies.Chart-statistics edits bypass these form-item checks because they only update reporting options on an existing field.
- Overrides:
validateEditorin classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
request- current HTTP requesttarget- submitted DataTable request, including the editor actionuser- authenticated user performing the operationerrors- validation result to which inherited checks may add errorsid- identifier of the edited itementity- submitted form item
-
getOneItem
Loads an item for editing or creates an editor model with context-specific defaults.Chart-statistics requests resolve the field identified by the chart context; an ID of
-1creates a new item for the requested form and step.- Overrides:
getOneItemin classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
id- item identifier, or-1when preparing a new item- Returns:
- form item prepared for the editor
-
insertItem
Inserts a form item or updates only reporting options in chart-statistics mode.- Overrides:
insertItemin classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
entity- submitted form item- Returns:
- persisted form item, or
nullwhen chart-statistics mode receives no entity
-
beforeSave
Normalizes a form item before persistence.The hook removes unsupported values, enforces CAPTCHA requirements, serializes regular-expression selections, assigns a valid item identifier, and prevents duplicate sort priorities within a step.
- Overrides:
beforeSavein classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
entity- form item to normalize
-
checkItemPerms
Verifies that an item belongs to an accessible form, valid step, and current domain.- Overrides:
checkItemPermsin classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
entity- submitted form itemid- persisted item identifier, ornullor a non-positive value for a new item- Returns:
truewhen the current user may access the item
-
afterSave
Clears cached validation fields and regenerates the form pattern after a standard item save.- Overrides:
afterSavein classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
entity- submitted form itemsaved- persisted form item
-
beforeDelete
Prevents deletion of a field referenced by another field condition.- Overrides:
beforeDeletein classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
entity- form item requested for deletion- Returns:
- result of the inherited pre-delete hook when no dependency blocks deletion
-
afterDelete
Clears cached validation fields and regenerates the form pattern after an item is deleted.- Overrides:
afterDeletein classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
entity- deleted form itemid- identifier of the deleted item
-
rowReorder
@PostMapping(value="/row-reorder", consumes="application/json") public org.springframework.http.ResponseEntity<Boolean> rowReorder(jakarta.servlet.http.HttpServletRequest request, @RequestBody RowReorderDto rowReorderDto) Clears cached field ordering after a successful row reorder, which bypasses the save hooks.- Overrides:
rowReorderin classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
request- request identifying the form and steprowReorderDto- requested item order- Returns:
- result of the data-table reorder operation
-
processFromEntity
Prepares persisted values and transient editor fields for a DataTable response.- Overrides:
processFromEntityin classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
entity- form item returned from persistenceaction- operation for which the entity is being prepared- Returns:
- the enriched form item
-
processToEntity
Maps transient editor values to persistent fields and clears incompatible settings.- Overrides:
processToEntityin classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
entity- submitted form itemaction- operation for which the entity is being prepared- Returns:
- normalized form item ready for persistence
-
checkRowReorderScope
protected boolean checkRowReorderScope(jakarta.servlet.http.HttpServletRequest request, List<FormItemEntity> entities) Verifies that every reordered item belongs to the requested form, step, and domain.- Overrides:
checkRowReorderScopein classDatatableRestControllerV2<FormItemEntity,Long> - Parameters:
request- current HTTP request containing the form and step scopeentities- complete batch of form items requested for reordering- Returns:
truewhen the batch is within an accessible and valid step
-
getDefaultRegex
@GetMapping("/default-regex") public List<Long> getDefaultRegex(@RequestParam("fieldType") String fieldType) Resolves default regular-expression validators from a field template's input classes.- Parameters:
fieldType- form field type whose template is inspected- Returns:
- identifiers of matching regular-expression validators, or an empty list when none apply
-