Updated form field response bean

This commit is contained in:
rajesh
2024-08-30 11:52:31 +05:30
parent ea09f62b00
commit 7af37db2ff
20 changed files with 229 additions and 39 deletions

View File

@@ -4,7 +4,9 @@ import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.CallEntity;
import net.gepafin.tendermanagement.entities.FormEntity;
import net.gepafin.tendermanagement.model.request.ContentRequestBean;
import net.gepafin.tendermanagement.model.request.FormRequest;
import net.gepafin.tendermanagement.model.response.ContentResponseBean;
import net.gepafin.tendermanagement.model.response.FormResponseBean;
import net.gepafin.tendermanagement.repositories.FormRepository;
import net.gepafin.tendermanagement.service.CallService;
@@ -37,11 +39,11 @@ public class FormDao {
}
public FormEntity convertFormRequestToFormEntity(Long callId,FormRequest formRequest){
FormEntity formEntity=null;
FormEntity formEntity=new FormEntity();
CallEntity callEntity=callService.getCallEntityById(callId);
formEntity.setCall(callEntity);
formEntity.setLabel(formRequest.getLabel());
formEntity.setContent(formRequest.getContent());
formEntity.setContent(setContentResponseBean(formRequest.getContent()));
formEntity.setOrderNo(formRequest.getOrderNo());
formEntity=saveFormEntity(formEntity);
return formEntity;
@@ -49,12 +51,10 @@ public class FormDao {
public FormResponseBean convertFormEntityToFormResponseBean(FormEntity formEntity){
FormResponseBean formResponseBean=new FormResponseBean();
formResponseBean.setId(formEntity.getId());
formResponseBean.setContent(formEntity.getContent());
formResponseBean.setContent(Utils.convertJsonStringToList(formEntity.getContent(), ContentResponseBean.class));
formResponseBean.setLabel(formEntity.getLabel());
formResponseBean.setCallId(formEntity.getCall().getId());
formResponseBean.setOrderNo(formEntity.getOrderNo());
formResponseBean.setCreatedDate(formEntity.getCreatedDate());
formResponseBean.setUpdatedDate(formEntity.getUpdatedDate());
return formResponseBean;
}
public FormResponseBean createForm(Long callId,FormRequest formRequest){
@@ -70,7 +70,7 @@ public class FormDao {
public FormResponseBean updateForm(Long formId, FormRequest formRequest){
FormEntity formEntity = formService.getFormEntityById(formId);
Utils.setIfUpdated(formEntity::getLabel,formEntity::setLabel,formRequest.getLabel());
Utils.setIfUpdated(formEntity::getContent,formEntity::setContent,formRequest.getContent());
Utils.setIfUpdated(formEntity::getContent,formEntity::setContent,setContentResponseBean(formRequest.getContent()));
if(formRequest.getOrderNo()!=null && formRequest.getOrderNo() > 0) {
Utils.setIfUpdated(formEntity::getOrderNo, formEntity::setOrderNo, formRequest.getOrderNo());
}
@@ -102,4 +102,7 @@ public class FormDao {
.collect(Collectors.toList());
return formResponseBeanList;
}
public String setContentResponseBean(List<ContentRequestBean> contentRequestBeans){
return Utils.convertListToJsonString(contentRequestBeans);
}
}

View File

@@ -4,7 +4,9 @@ import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.FormFieldEntity;
import net.gepafin.tendermanagement.model.request.FormFieldRequest;
import net.gepafin.tendermanagement.model.request.SettingRequestBean;
import net.gepafin.tendermanagement.model.response.FormFieldResponseBean;
import net.gepafin.tendermanagement.model.response.SettingResponseBean;
import net.gepafin.tendermanagement.repositories.FormFieldRepository;
import net.gepafin.tendermanagement.service.FormFieldService;
import net.gepafin.tendermanagement.util.Utils;
@@ -14,6 +16,9 @@ import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class FormFieldDao {
@@ -24,14 +29,12 @@ public class FormFieldDao {
private FormFieldService formFieldService;
public FormFieldEntity convertFormFieldRequestToFormFieldResponseBean(FormFieldRequest formFieldRequest) {
FormFieldEntity formFieldEntity = null;
public FormFieldEntity convertFormFieldRequestToFormFieldEntity(FormFieldRequest formFieldRequest) {
FormFieldEntity formFieldEntity = new FormFieldEntity();
formFieldEntity.setLabel(formFieldRequest.getLabel());
formFieldEntity.setDefinition(formFieldRequest.getDefinition());
formFieldEntity.setIsActive(true);
if(formFieldRequest.getIsActive()!=null) {
formFieldEntity.setIsActive(formFieldRequest.getIsActive());
}
formFieldEntity.setName(formFieldRequest.getName());
formFieldEntity.setValidators(Utils.convertMapIntoJsonString(formFieldRequest.getValidators()));
formFieldEntity.setSettings(setSettingRequestBean(formFieldRequest.getSettings()));
formFieldEntity = saveFormFieldEntity(formFieldEntity);
return formFieldEntity;
}
@@ -39,11 +42,10 @@ public class FormFieldDao {
public FormFieldResponseBean convertFormFieldEntityToFormFieldResponseBean(FormFieldEntity formFieldEntity) {
FormFieldResponseBean formFieldResponseBean = new FormFieldResponseBean();
formFieldResponseBean.setId(formFieldEntity.getId());
formFieldResponseBean.setDefinition(formFieldEntity.getDefinition());
formFieldResponseBean.setName(formFieldEntity.getName());
formFieldResponseBean.setSettings(Utils.convertJsonStringToList(formFieldEntity.getSettings(), SettingResponseBean.class));
formFieldResponseBean.setLabel(formFieldEntity.getLabel());
formFieldResponseBean.setIsActive(formFieldEntity.getIsActive());
formFieldResponseBean.setCreatedDate(formFieldEntity.getCreatedDate());
formFieldResponseBean.setUpdatedDate(formFieldEntity.getUpdatedDate());
formFieldResponseBean.setValidators(Utils.convertIntoJson(formFieldEntity.getValidators()));
return formFieldResponseBean;
}
@@ -53,20 +55,21 @@ public class FormFieldDao {
}
public void validateFormField(FormFieldRequest formFieldRequest) {
if (formFieldRequest.getDefinition() == null || formFieldRequest.getLabel() == null) {
if (formFieldRequest.getSettings() == null || formFieldRequest.getLabel() == null) {
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REQUIRED_PARAMETER_NOT_FOUND_FOR_FORM_FIELD));
}
}
public FormFieldResponseBean createFormField(FormFieldRequest formFieldRequest){
validateFormField(formFieldRequest);
FormFieldEntity formFieldEntity=convertFormFieldRequestToFormFieldResponseBean(formFieldRequest);
FormFieldEntity formFieldEntity=convertFormFieldRequestToFormFieldEntity(formFieldRequest);
return convertFormFieldEntityToFormFieldResponseBean(formFieldEntity);
}
public FormFieldResponseBean updateFormField(Long formFieldId,FormFieldRequest formFieldRequest){
FormFieldEntity formFieldEntity = formFieldService.getFormFieldEntityById(formFieldId);
Utils.setIfUpdated(formFieldEntity::getName,formFieldEntity::setName,formFieldRequest.getName());
Utils.setIfUpdated(formFieldEntity::getLabel,formFieldEntity::setLabel,formFieldRequest.getLabel());
Utils.setIfUpdated(formFieldEntity::getDefinition,formFieldEntity::setDefinition,formFieldRequest.getDefinition());
Utils.setIfUpdated(formFieldEntity::getIsActive,formFieldEntity::setIsActive,formFieldRequest.getIsActive());
Utils.setIfUpdated(formFieldEntity::getSettings,formFieldEntity::setSettings,setSettingRequestBean(formFieldRequest.getSettings()));
Utils.setIfUpdated(formFieldEntity::getValidators,formFieldEntity::setValidators,Utils.convertMapIntoJsonString(formFieldRequest.getValidators()));
formFieldEntity=saveFormFieldEntity(formFieldEntity);
return convertFormFieldEntityToFormFieldResponseBean(formFieldEntity);
}
@@ -84,4 +87,13 @@ public class FormFieldDao {
FormFieldEntity formEntity=formFieldService.getFormFieldEntityById(formFieldId);
formFieldRepository.delete(formEntity);
}
public String setSettingRequestBean(List<SettingRequestBean> settingRequestBeans){
return Utils.convertListToJsonString(settingRequestBeans);
}
public List<FormFieldResponseBean> getAllFormField(){
List<FormFieldEntity> formFieldEntities=formFieldRepository.findAll();
List<FormFieldResponseBean> formFieldResponseBeans = formFieldEntities.stream()
.map(req -> convertFormFieldEntityToFormFieldResponseBean(req)).collect(Collectors.toList());
return formFieldResponseBeans;
}
}

View File

@@ -25,7 +25,7 @@ public class FormTemplateDao {
public FormTemplateEntity convertFormTemplateRequestToFormTemplateRequest(FormTemplateRequest formTemplateRequest){
FormTemplateEntity formTemplateEntity=null;
FormTemplateEntity formTemplateEntity=new FormTemplateEntity();
formTemplateEntity.setContent(formTemplateRequest.getContent());
formTemplateEntity.setLabel(formTemplateRequest.getLabel());
formTemplateEntity=saveFormTemplateEntity(formTemplateEntity);

View File

@@ -1,12 +1,16 @@
package net.gepafin.tendermanagement.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Builder;
import lombok.NoArgsConstructor;
@Entity
@Table(name = "FORM")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class FormEntity extends BaseEntity{

View File

@@ -1,21 +1,28 @@
package net.gepafin.tendermanagement.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Builder;
import lombok.NoArgsConstructor;
@Entity
@Table(name = "FORM_FIELD")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class FormFieldEntity extends BaseEntity{
@Column(name = "NAME", length = 255)
private String name;
@Column(name = "LABEL", length = 255)
private String label;
@Column(name = "DEFINITION", length = 255)
private String definition;
@Column(name = "SETTINGS")
private String settings;
@Column(name = "IS_ACTIVE")
private Boolean isActive;
@Column(name = "VALIDATORS")
private String validators;
}

View File

@@ -1,12 +1,16 @@
package net.gepafin.tendermanagement.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Builder;
import lombok.NoArgsConstructor;
@Entity
@Table(name = "FORM_TEMPLATE")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class FormTemplateEntity extends BaseEntity{

View File

@@ -0,0 +1,18 @@
package net.gepafin.tendermanagement.model.request;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class ContentRequestBean {
private String id;
private String name;
private String label;
private List<SettingRequestBean> settings;
private Map<String,Object> validators;
private Integer dbId;
}

View File

@@ -2,12 +2,17 @@ package net.gepafin.tendermanagement.model.request;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class FormFieldRequest {
private String name;
private String label;
private String definition;
private List<SettingRequestBean> settings;
private Boolean isActive;
private Map<String,Object> validators;
}

View File

@@ -2,12 +2,14 @@ package net.gepafin.tendermanagement.model.request;
import lombok.Data;
import java.util.List;
@Data
public class FormRequest {
private String label;
private String content;
private List<ContentRequestBean> content;
private Integer orderNo;

View File

@@ -0,0 +1,11 @@
package net.gepafin.tendermanagement.model.request;
import lombok.Data;
@Data
public class SettingRequestBean {
private String name;
private String value;
}

View File

@@ -0,0 +1,17 @@
package net.gepafin.tendermanagement.model.response;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class ContentResponseBean {
private String id;
private String name;
private String label;
private List<SettingResponseBean> settings;
private Map<String,Object> validators;
private Integer dbId;
}

View File

@@ -1,14 +1,20 @@
package net.gepafin.tendermanagement.model.response;
import lombok.Data;
import net.gepafin.tendermanagement.model.BaseBean;
import java.util.List;
import java.util.Map;
@Data
public class FormFieldResponseBean extends BaseBean {
public class FormFieldResponseBean {
private Long id;
private String name;
private String label;
private String definition;
private List<SettingResponseBean> settings;
private Boolean isActive;
private Map<String,Object> validators;
}

View File

@@ -3,14 +3,18 @@ package net.gepafin.tendermanagement.model.response;
import lombok.Data;
import net.gepafin.tendermanagement.model.BaseBean;
import java.util.List;
@Data
public class FormResponseBean extends BaseBean {
public class FormResponseBean {
private Long id;
private String label;
private Long callId;
private String content;
private List<ContentResponseBean> content;
private Integer orderNo;
}

View File

@@ -0,0 +1,11 @@
package net.gepafin.tendermanagement.model.response;
import lombok.Data;
@Data
public class SettingResponseBean {
private String name;
private String value;
}

View File

@@ -5,6 +5,8 @@ import net.gepafin.tendermanagement.entities.FormFieldEntity;
import net.gepafin.tendermanagement.model.request.FormFieldRequest;
import net.gepafin.tendermanagement.model.response.FormFieldResponseBean;
import java.util.List;
public interface FormFieldService {
public FormFieldResponseBean createFormField(HttpServletRequest request, FormFieldRequest formFieldRequest);
@@ -17,4 +19,6 @@ public interface FormFieldService {
public FormFieldEntity getFormFieldEntityById(Long id);
public List<FormFieldResponseBean> getAllFormField(HttpServletRequest request);
}

View File

@@ -9,6 +9,8 @@ import net.gepafin.tendermanagement.service.FormFieldService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class FormFieldServiceImpl implements FormFieldService {
@@ -40,4 +42,9 @@ public class FormFieldServiceImpl implements FormFieldService {
public FormFieldEntity getFormFieldEntityById(Long id) {
return formFieldDao.getFormFieldEntity(id);
}
@Override
public List<FormFieldResponseBean> getAllFormField(HttpServletRequest request) {
return formFieldDao.getAllFormField();
}
}

View File

@@ -1,19 +1,25 @@
package net.gepafin.tendermanagement.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.json.JsonReadFeature;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import io.micrometer.common.util.StringUtils;
import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.stream.Collectors;
public class Utils {
public static final Logger log = LoggerFactory.getLogger(Utils.class);
@@ -82,5 +88,46 @@ public class Utils {
setter.accept(newValue);
}
}
public static <T> String convertListToJsonString(List<T> list) {
try {
return mapper.writeValueAsString(list);
} catch (JsonProcessingException e) {
e.printStackTrace();
// Handle exception or throw a custom exception
return null;
}
}
public static <T> List<T> convertJsonStringToList(String jsonString, Class<T> clazz) {
try {
return mapper.readValue(jsonString, new TypeReference<List<T>>() {});
} catch (Exception e) {
e.printStackTrace();
// Handle the exception appropriately (e.g., throw a custom exception)
return null;
}
}
public static String convertMapIntoJsonString(Map<String, Object> map) {
try {
ObjectMapper mapper = new ObjectMapper();
if (MapUtils.isNotEmpty(map)) {
return mapper.writeValueAsString(map);
}
} catch (JsonProcessingException e) {
log.error(e.getMessage());
}
return null;
}
public static Map<String, Object> convertIntoJson(String jsonString) {
if (jsonString != null && !jsonString.isEmpty()) {
try {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(), true);
return mapper.readValue(jsonString, Map.class);
} catch (Exception e) {
log.error(e.getMessage());
}
}
return null;
}
}

View File

@@ -15,6 +15,8 @@ import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
public interface FormFieldApi {
@Operation(summary = "Api to create form field",
@@ -75,4 +77,18 @@ public interface FormFieldApi {
@DeleteMapping(value = "/{formFieldId}")
ResponseEntity<Response<Void>> deleteForm(HttpServletRequest request,
@Parameter(description = "The form field ID", required = true) @PathVariable("formFieldId") Long formFieldId);
@Operation(summary = "Api to get all form field",
responses = {
@ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
@ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })),
@ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
@ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })),
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) })
@GetMapping(value = "",
produces = { "application/json" })
ResponseEntity<Response<List<FormFieldResponseBean>>> getAllFormField(HttpServletRequest request);
}

View File

@@ -15,6 +15,8 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("${openapi.gepafin.base-path:/v1/formField}")
public class FormFieldApiController implements FormFieldApi {
@@ -49,4 +51,11 @@ public class FormFieldApiController implements FormFieldApi {
return ResponseEntity.status(HttpStatus.OK)
.body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FIELD_DELETED_SUCCESSFULLY)));
}
@Override
public ResponseEntity<Response<List<FormFieldResponseBean>>> getAllFormField(HttpServletRequest request) {
List<FormFieldResponseBean> formFieldResponseBeans=formFieldService.getAllFormField(request);
return ResponseEntity.status(HttpStatus.OK)
.body(new Response<>(formFieldResponseBeans, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FIELD_FETCHED_SUCCESSFULLY)));
}
}