diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..bfc71e1 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..63e9001 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..67e1e61 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4cea3b2..9d1c71b 100644 --- a/pom.xml +++ b/pom.xml @@ -71,6 +71,23 @@ reactor-test test + + com.vaadin.external.google + android-json + 0.0.20131108.vaadin1 + + + jakarta.validation + jakarta.validation-api + 2.0.2 + + + org.springframework.cloud + spring-cloud-starter-openfeign + 3.1.1 + + + @@ -78,6 +95,7 @@ org.springframework.boot spring-boot-maven-plugin + 2.5.4 diff --git a/src/main/java/com/codejam/demo/DemoApplication.java b/src/main/java/com/codejam/demo/DemoApplication.java index d6133f9..3f9a594 100644 --- a/src/main/java/com/codejam/demo/DemoApplication.java +++ b/src/main/java/com/codejam/demo/DemoApplication.java @@ -2,8 +2,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication +@EnableFeignClients public class DemoApplication { public static void main(String[] args) { diff --git a/src/main/java/com/codejam/demo/config/FeignConfig.java b/src/main/java/com/codejam/demo/config/FeignConfig.java new file mode 100644 index 0000000..f3b5560 --- /dev/null +++ b/src/main/java/com/codejam/demo/config/FeignConfig.java @@ -0,0 +1,54 @@ +package com.codejam.demo.config; + +import com.fasterxml.jackson.databind.ObjectMapper; +import feign.Logger; +import feign.Response; +import feign.codec.Encoder; +import feign.codec.ErrorDecoder; +import feign.form.FormEncoder; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.ObjectFactory; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; +import org.springframework.cloud.openfeign.support.SpringEncoder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.Scope; + +import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; + +@Slf4j +public class FeignConfig { + + private final ObjectMapper objectMapper; + + public FeignConfig(){ + objectMapper = new ObjectMapper(); + } + + @Bean + @Primary + @Scope(SCOPE_PROTOTYPE) + Encoder feignFormEncoder(ObjectFactory messageConverters) { + return new FormEncoder(new SpringEncoder(messageConverters)); + } + + @Bean + public ErrorDecoder errorDecoder() { + return new CustomErrorDecoder(); + } + + public class CustomErrorDecoder implements ErrorDecoder { + + private final ErrorDecoder defaultErrorDecoder = new Default(); + + @Override + public Exception decode(String methodKey, Response response) { + return defaultErrorDecoder.decode(methodKey, response); + } + } + + @Bean + Logger.Level feignLoggerLevel() { + return Logger.Level.FULL; + } +} diff --git a/src/main/java/com/codejam/demo/constants/MessageConstants.java b/src/main/java/com/codejam/demo/constants/MessageConstants.java new file mode 100644 index 0000000..e2a6a2d --- /dev/null +++ b/src/main/java/com/codejam/demo/constants/MessageConstants.java @@ -0,0 +1,14 @@ +package com.codejam.demo.constants; + +public class MessageConstants { + + // Schedule Configuration + public static final String SCHEDULE_SAVE = "Schedule save successfully"; + public static final String SCHEDULE_UPDATE = "Schedule update successfully"; + public static final String SCHEDULE_EXIST = "Schedule Already Exists!"; + + // Revenue Configuration + public static final String REVENUE_SAVE = "Revenue save successfully"; + public static final String REVENUE_UPDATE = "Revenue update successfully"; + public static final String REVENUE_EXIST = "Revenue Already Exists!"; +} diff --git a/src/main/java/com/codejam/demo/constants/ResponseStatus.java b/src/main/java/com/codejam/demo/constants/ResponseStatus.java new file mode 100644 index 0000000..31554ad --- /dev/null +++ b/src/main/java/com/codejam/demo/constants/ResponseStatus.java @@ -0,0 +1,8 @@ +package com.codejam.demo.constants; + +public class ResponseStatus { + + public static final String SUCCESS = "success"; + public static final String ERROR = "error"; + +} diff --git a/src/main/java/com/codejam/demo/controller/PersonalInformationController.java b/src/main/java/com/codejam/demo/controller/PersonalInformationController.java new file mode 100644 index 0000000..ee27d43 --- /dev/null +++ b/src/main/java/com/codejam/demo/controller/PersonalInformationController.java @@ -0,0 +1,49 @@ +package com.codejam.demo.controller; + +import com.codejam.demo.model.PersonalInformation; +import com.codejam.demo.repository.PersonalInformationRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Optional; + +@RestController +@RequiredArgsConstructor +@RequestMapping(path = "demo") +public class PersonalInformationController { + + @Autowired + private PersonalInformationRepository personalInformationRepository; + + @GetMapping("/information/all") + public List getAllInformation() { + return personalInformationRepository.findAll(); + } + + @GetMapping("/information/{id}") + public Optional getInformation(@PathVariable("id") Integer id) { + return personalInformationRepository.findById(id); + } + + @PostMapping("/information/save") + public PersonalInformation savePersonalInformation(@RequestBody PersonalInformation personalInformation) { + return personalInformationRepository.save(personalInformation); + } + + @PostMapping("/information/update") + public PersonalInformation updatePersonalInformation(@RequestBody PersonalInformation personalInformation) { + return personalInformationRepository.save(personalInformation); + } + + @GetMapping("/information/{id}/delete") + public String deletePersonalInformation(@PathVariable("id") Integer id) { + try { + personalInformationRepository.deleteById(id); + } catch (Exception e) { + return "Failed"; + } + return "Successful"; + } +} diff --git a/src/main/java/com/codejam/demo/controller/RevenueController.java b/src/main/java/com/codejam/demo/controller/RevenueController.java new file mode 100644 index 0000000..bab92e3 --- /dev/null +++ b/src/main/java/com/codejam/demo/controller/RevenueController.java @@ -0,0 +1,49 @@ +package com.codejam.demo.controller; + +import com.codejam.demo.model.Revenue; +import com.codejam.demo.repository.RevenueRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Optional; + +@RestController +@RequiredArgsConstructor +@RequestMapping(path = "demo") +public class RevenueController { + + @Autowired + private RevenueRepository revenueRepository; + + @GetMapping("/revenue/all") + public List getAllRevenue() { + return revenueRepository.findAll(); + } + + @GetMapping("/revenue/{id}") + public Optional getRevenue(@PathVariable("id") Integer id) { + return revenueRepository.findById(id); + } + + @PostMapping("/revenue/save") + public Revenue saveRevenue(@RequestBody Revenue revenue) { + return revenueRepository.save(revenue); + } + + @PostMapping("/revenue/update") + public Revenue updateRevenue(@RequestBody Revenue revenue) { + return revenueRepository.save(revenue); + } + + @GetMapping("/revenue/{revenue_id}/delete") + public String deleteRevenue(@PathVariable("revenue_id") Integer id) { + try { + revenueRepository.deleteById(id); + } catch (Exception e) { + return "Failed"; + } + return "Successful"; + } +} diff --git a/src/main/java/com/codejam/demo/controller/ScheduleController.java b/src/main/java/com/codejam/demo/controller/ScheduleController.java new file mode 100644 index 0000000..355662f --- /dev/null +++ b/src/main/java/com/codejam/demo/controller/ScheduleController.java @@ -0,0 +1,148 @@ +package com.codejam.demo.controller; + +import com.codejam.demo.model.Schedule; +import com.codejam.demo.repository.ScheduleRepository; +import com.codejam.demo.service.ScheduleService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Optional; + +@RestController +@RequiredArgsConstructor +@RequestMapping(path = "demo") +public class ScheduleController { + + private final ScheduleService service; + private final String[] sortable = {"id", "venue"}; + @Autowired + private ScheduleRepository scheduleRepository; + + @GetMapping("/schedule/all") + public List getAllSchedule() { + return scheduleRepository.findAll(); + } + +// @GetMapping("/schedule/all") +// public ResponseEntity findAll( +// @RequestParam(value = "sortBy", defaultValue = "") String sortBy) { +// Map filterMap = new HashMap<>(); +// +// List responses = service.findAll(sortable, sortBy, filterMap) +// .stream() +// .map(ScheduleDto::from) +// .collect(Collectors.toList()); +// +// return ok(success(responses).getJson()); +// } + + @GetMapping("/schedule/{id}") + public Optional getSchedule(@PathVariable("id") Integer id) { + return scheduleRepository.findById(id); + } + + @PostMapping("/schedule/save") + public Schedule saveSchedule(@RequestBody Schedule schedule) { + return scheduleRepository.save(schedule); + } + + @PostMapping("/schedule/update") + public Schedule updateSchedule(@RequestBody Schedule schedule) { + return scheduleRepository.save(schedule); + } + + @GetMapping("/schedule/{schedule_id}/delete") + public String deleteSchedule(@PathVariable("schedule_id") Integer id) { + try { + scheduleRepository.deleteById(id); + } catch (Exception e) { + return "Failed"; + } + return "Successful"; + } + +/* + private final ScheduleRepository repository; + + private final ScheduleService service; + + private final CommonDataHelper helper; + + private final ScheduleValidator validator; + + private final String[] sortable = {"schedule_id", "venue"}; + + @PostMapping("/schedule/save") + public ResponseEntity save(@Valid @RequestBody ScheduleDto scheduleDto, BindingResult bindingResult) { + + // ValidationUtils.invokeValidator(validator, scheduleDto, bindingResult); + +// if (bindingResult.hasErrors()) { +// return badRequest().body(error(fieldError(bindingResult)).getJson()); +// } + Schedule schedule = service.save(scheduleDto); + return ok(success(ScheduleDto.from(schedule), SCHEDULE_SAVE).getJson()); + } + + @PutMapping("/schedule/update") + public ResponseEntity update(@Valid @RequestBody ScheduleDto scheduleDto, BindingResult bindingResult) { + +// if (bindingResult.hasErrors()) { +// return badRequest().body(error(fieldError(bindingResult)).getJson()); +// } + Schedule schedule = service.update(scheduleDto, RecordStatus.DRAFT); + return ok(success(ScheduleDto.from(schedule), SCHEDULE_UPDATE).getJson()); + } + + @GetMapping("/schedule/find/{id}") + public ResponseEntity findById(@PathVariable Integer id) { + + Schedule schedule = service.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Course Id: " + id)); + + return ok(success(ScheduleDto.from(schedule)).getJson()); + } + + @GetMapping("/schedule/all") + public ResponseEntity findAll( + @RequestParam(value = "sortBy", defaultValue = "") String sortBy) { + Map filterMap = new HashMap<>(); + + List responses = service.findAll(sortable, sortBy, filterMap) + .stream() + .map(ScheduleDto::from) + .collect(Collectors.toList()); + + return ok(success(responses).getJson()); + } + + @GetMapping("/schedule/list") + public ResponseEntity getList( + @RequestParam(value = "page", defaultValue = "1") Integer page, + @RequestParam(value = "size", defaultValue = "10") Integer size, + @RequestParam(value = "sortBy", defaultValue = "") String sortBy, + @RequestParam(value = "venue", defaultValue = "") String venue + ) { + PaginatedResponse response = new PaginatedResponse(); + + Map scheduleMap = service.getList(venue, page, size, sortBy); + List schedules = (List) scheduleMap.get("lists"); + List responses = schedules + .stream() + .map(ScheduleDto::from) + .collect(Collectors.toList()); + + helper.getCommonData(page, size, scheduleMap, response, responses); + + return ok(success(response).getJson()); + } + + @PutMapping("/schedule/change-record-status/{schedule_id}/{status}") + public ResponseEntity changeRecordStatus(@PathVariable Integer schedule_id, @PathVariable RecordStatus status) { + + service.updateRecordStatus(schedule_id, status); + return ok(success(null, status.toString().toLowerCase() + " successfully").getJson()); + }*/ +} diff --git a/src/main/java/com/codejam/demo/dto/ScheduleDto.java b/src/main/java/com/codejam/demo/dto/ScheduleDto.java new file mode 100644 index 0000000..f21aade --- /dev/null +++ b/src/main/java/com/codejam/demo/dto/ScheduleDto.java @@ -0,0 +1,44 @@ +package com.codejam.demo.dto; + +import com.codejam.demo.model.Schedule; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.beans.BeanUtils; + + +@Data +@NoArgsConstructor +public class ScheduleDto { + + private Integer schedule_id; + + private String venue; + + private String event_name; + + private String schedule_date_time; + + public static ScheduleDto from(Schedule schedule) { + + ScheduleDto scheduleDto = new ScheduleDto(); + + scheduleDto.setSchedule_id(schedule.getId()); + scheduleDto.setEvent_name(schedule.getEvent_name()); + scheduleDto.setVenue(schedule.getVenue()); + scheduleDto.setSchedule_date_time(schedule.getDate_time()); + return scheduleDto; + } + + public Schedule to() { + Schedule schedule = new Schedule(); + BeanUtils.copyProperties(this, schedule); + return schedule; + } + + public void update(ScheduleDto dto, Schedule schedule) { + BeanUtils.copyProperties(dto, schedule); + } + +} + + diff --git a/src/main/java/com/codejam/demo/dto/ServiceDto.java b/src/main/java/com/codejam/demo/dto/ServiceDto.java new file mode 100644 index 0000000..78c0ce0 --- /dev/null +++ b/src/main/java/com/codejam/demo/dto/ServiceDto.java @@ -0,0 +1,12 @@ +package com.codejam.demo.dto; + +import lombok.Data; + +@Data +public class ServiceDto { + + private Integer userId; + private Integer id; + private String title; + private Boolean completed; +} diff --git a/src/main/java/com/codejam/demo/enums/RecordStatus.java b/src/main/java/com/codejam/demo/enums/RecordStatus.java new file mode 100644 index 0000000..958759f --- /dev/null +++ b/src/main/java/com/codejam/demo/enums/RecordStatus.java @@ -0,0 +1,18 @@ +package com.codejam.demo.enums; + +public enum RecordStatus { + + DRAFT(0), + ACTIVE(1), + DELETED(2); + + private final Integer label; + + RecordStatus(Integer label) { + this.label = label; + } + + public Integer getLabel() { + return label; + } +} diff --git a/src/main/java/com/codejam/demo/exception/ApiError.java b/src/main/java/com/codejam/demo/exception/ApiError.java new file mode 100644 index 0000000..34b83f0 --- /dev/null +++ b/src/main/java/com/codejam/demo/exception/ApiError.java @@ -0,0 +1,31 @@ +package com.codejam.demo.exception; + +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.validation.FieldError; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +public class ApiError implements Serializable { + + private static final long serialVersionUID = 1L; + + public static Map fieldError(BindingResult bindingResult) { + Map fieldErrors = new HashMap<>(); + if (bindingResult.hasErrors()) { + List errors = bindingResult.getFieldErrors(); + errors.forEach(e -> { + fieldErrors.put(e.getField(), e.getDefaultMessage()); + }); + } + return fieldErrors; + } +} + + diff --git a/src/main/java/com/codejam/demo/exception/ResourceNotFoundException.java b/src/main/java/com/codejam/demo/exception/ResourceNotFoundException.java new file mode 100644 index 0000000..1124496 --- /dev/null +++ b/src/main/java/com/codejam/demo/exception/ResourceNotFoundException.java @@ -0,0 +1,29 @@ +package com.codejam.demo.exception; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(value = HttpStatus.NOT_FOUND) +public class ResourceNotFoundException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + public ResourceNotFoundException() { + } + + public ResourceNotFoundException(String s) { + super(s); + } + + public ResourceNotFoundException(String s, Throwable throwable) { + super(s, throwable); + } + + public ResourceNotFoundException(Throwable throwable) { + super(throwable); + } + + protected ResourceNotFoundException(String s, Throwable throwable, boolean b, boolean b1) { + super(s, throwable, b, b1); + } +} diff --git a/src/main/java/com/codejam/demo/helper/GetListHelper.java b/src/main/java/com/codejam/demo/helper/GetListHelper.java new file mode 100644 index 0000000..9b9203b --- /dev/null +++ b/src/main/java/com/codejam/demo/helper/GetListHelper.java @@ -0,0 +1,135 @@ +package com.codejam.demo.helper; + +import com.codejam.demo.enums.RecordStatus; +import com.codejam.demo.service.BaseService; +import com.codejam.demo.utils.PaginationParameters; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; + +import javax.persistence.EntityManager; +import javax.persistence.TypedQuery; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; +import java.util.*; + +import static com.codejam.demo.utils.StringUtils.isNotEmpty; + +public class GetListHelper extends BaseService { + + final Class typeParameterClass; + private final EntityManager em; + + public GetListHelper(EntityManager em, Class typeParameterClass) { + this.em = em; + this.typeParameterClass = typeParameterClass; + } + + public Pageable getPageable(String sortBy, int page, int size) { + Pageable pageable; + if (sortBy.isEmpty()) pageable = PageRequest.of(page - 1, size); + else { + String[] parts = sortBy.split(","); + pageable = PageRequest.of(page - 1, size, Sort.by(parts[0])); + if (parts[1].equals("desc")) pageable = PageRequest.of(page - 1, size, Sort.by(parts[0]).descending()); + } + return pageable; + } + + public Map getList(Page result, Integer page, Integer size) { + Long total = result.getTotalElements(); + Map maps = new HashMap<>(); + PaginationParameters.getdata(maps, page, total, size, result.getContent()); + return maps; + } + + public List findAll(String[] sortable, String sortBy) { + + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery query = cb.createQuery(typeParameterClass); + Root root = query.from(typeParameterClass); + query.select(root); + + if (isNotEmpty(sortBy)) { + String[] sortByArr = sortBy.split(","); + logger.info(String.valueOf(sortByArr[1].equals("desc"))); + if (sortByArr.length <= 2 && Arrays.asList(sortable).contains(sortByArr[0])) { + if (sortByArr[1].equals("desc")) { + query.orderBy(cb.desc(root.get(sortByArr[0]))); + } else { + query.orderBy(cb.asc(root.get(sortByArr[0]))); + } + } + } + + TypedQuery tQuery = em.createQuery(query); + + return tQuery.getResultList(); + } + + public List findAll(String[] sortable, String sortBy, Map filterMap) { + + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery query = cb.createQuery(typeParameterClass); + Root root = query.from(typeParameterClass); + query.select(root); + + List predicates = new ArrayList<>(); + + deleteParam(cb, query, root, predicates); + + if (filterMap.size() > 0) { + for (String key : filterMap.keySet()) { + if ((filterMap.get(key)) instanceof Integer) { + if (!filterMap.get(key).equals(0)) + predicates.add(cb.equal(root.get(key), filterMap.get(key))); + } else if ((filterMap.get(key)) instanceof Double) { + if (!filterMap.get(key).equals(0)) + predicates.add(cb.equal(root.get(key), filterMap.get(key))); + } else if ((filterMap.get(key)) instanceof Long) { + if (!filterMap.get(key).equals(0)) + predicates.add(cb.equal(root.get(key), filterMap.get(key))); + } else if ((filterMap.get(key)) instanceof String) { + if (!filterMap.get(key).equals("")) + predicates.add(cb.equal(root.get(key), String.valueOf(filterMap.get(key)))); + } else if ((filterMap.get(key)) instanceof Enum) { + if (!filterMap.get(key).equals("")) + predicates.add(cb.equal(root.get(key), filterMap.get(key))); + } + } + if ((filterMap.get("date")) instanceof Date) { + if (!filterMap.get("date").equals("")) { + + predicates.add(cb.between(root.get("date"), new Date(), new Date())); + cb.between(root.get("dateEntry"), new Date(), new Date()); + } +// predicates.add(cb.equal(root.get(key), filterMap.get(key))); + } + query.where(cb.and(predicates.toArray(new Predicate[]{}))); + } + + if (isNotEmpty(sortBy)) { + String[] sortByArr = sortBy.split(","); + logger.info(String.valueOf(sortByArr[1].equals("desc"))); + if (sortByArr.length <= 2 && Arrays.asList(sortable).contains(sortByArr[0])) { + if (sortByArr[1].equals("desc")) { + query.orderBy(cb.desc(root.get(sortByArr[0]))); + } else { + query.orderBy(cb.asc(root.get(sortByArr[0]))); + } + } + } + + TypedQuery tQuery = em.createQuery(query); + + return tQuery.getResultList(); + } + + public void deleteParam(CriteriaBuilder cb, CriteriaQuery query, Root root, List predicates) { + predicates.add(cb.notEqual(root.get("recordStatus"), RecordStatus.DELETED)); + query.where(cb.and(predicates.toArray(new Predicate[]{}))); + } +} diff --git a/src/main/java/com/codejam/demo/model/PersonalInformation.java b/src/main/java/com/codejam/demo/model/PersonalInformation.java new file mode 100644 index 0000000..267c135 --- /dev/null +++ b/src/main/java/com/codejam/demo/model/PersonalInformation.java @@ -0,0 +1,37 @@ +package com.codejam.demo.model; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; + +@Data +@Entity +@DynamicInsert +@DynamicUpdate +@Table(name = "PERSONAL_INFORMATION") +@NoArgsConstructor +@EqualsAndHashCode(callSuper = false) +public class PersonalInformation{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + @Column(name = "REAL_NAME", columnDefinition = "varchar(50)") + private String real_name; + + @Column(name = "IDOL_NAME", columnDefinition = "varchar(60)") + private String idol_name; + + @Column(name = "ADDRESS", columnDefinition = "varchar(255)") + private String address; + + @Column(name = "IDOL_STATUS", columnDefinition = "varchar(25)") + private String idol_status; + +} diff --git a/src/main/java/com/codejam/demo/model/Revenue.java b/src/main/java/com/codejam/demo/model/Revenue.java new file mode 100644 index 0000000..21302eb --- /dev/null +++ b/src/main/java/com/codejam/demo/model/Revenue.java @@ -0,0 +1,31 @@ +package com.codejam.demo.model; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; + +@Data +@Entity +@DynamicInsert +@DynamicUpdate +//@Table(name = "REVENUE") +@NoArgsConstructor +@EqualsAndHashCode(callSuper = false) +public class Revenue { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + //@Column(name = "REVENUE_ID") + private Integer id; + + //@Column(name = "MONTHLY_RATE", columnDefinition = "varchar(50)") + private String monthly_rate; + + //@Temporal(TemporalType.TIMESTAMP) + //@Column(name = "REVENUE_DATE_TIME", columnDefinition = "varchar(50)") + private String date_time; +} diff --git a/src/main/java/com/codejam/demo/model/Schedule.java b/src/main/java/com/codejam/demo/model/Schedule.java new file mode 100644 index 0000000..7d8eb62 --- /dev/null +++ b/src/main/java/com/codejam/demo/model/Schedule.java @@ -0,0 +1,34 @@ +package com.codejam.demo.model; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; + +@Data +@Entity +@DynamicInsert +@DynamicUpdate +//@Table(name = "SCHEDULE") +@NoArgsConstructor +@EqualsAndHashCode(callSuper = false) +public class Schedule { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + //@Column(name = "ID") + private Integer id; + + //@Column(name = "VENUE", columnDefinition = "varchar(50)") + private String venue; + + //@Column(name = "EVENT_NAME", columnDefinition = "varchar(60)") + private String event_name; + + //@Temporal(TemporalType.TIMESTAMP) + //@Column(name = "SCHEDULE_DATE_TIME", columnDefinition = "varchar(50)") + private String date_time; +} diff --git a/src/main/java/com/codejam/demo/repository/DemoServiceRepositiry.java b/src/main/java/com/codejam/demo/repository/DemoServiceRepositiry.java new file mode 100644 index 0000000..32c009d --- /dev/null +++ b/src/main/java/com/codejam/demo/repository/DemoServiceRepositiry.java @@ -0,0 +1,16 @@ +package com.codejam.demo.repository; + +import com.codejam.demo.config.FeignConfig; +import com.codejam.demo.dto.ServiceDto; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestHeader; + +@FeignClient(name = "serviceRepository", configuration = FeignConfig.class, url = "${demoService}", decode404 = true) +public interface DemoServiceRepositiry { + + @GetMapping("demo/find/demoService/{id}") + ServiceDto findInstituteById(@RequestHeader("authorization") String authorization, + @PathVariable("id") Integer id); +} diff --git a/src/main/java/com/codejam/demo/repository/PersonalInformationRepository.java b/src/main/java/com/codejam/demo/repository/PersonalInformationRepository.java new file mode 100644 index 0000000..62f1259 --- /dev/null +++ b/src/main/java/com/codejam/demo/repository/PersonalInformationRepository.java @@ -0,0 +1,9 @@ +package com.codejam.demo.repository; + +import com.codejam.demo.model.PersonalInformation; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface PersonalInformationRepository extends JpaRepository { +} diff --git a/src/main/java/com/codejam/demo/repository/RevenueRepository.java b/src/main/java/com/codejam/demo/repository/RevenueRepository.java new file mode 100644 index 0000000..43d2401 --- /dev/null +++ b/src/main/java/com/codejam/demo/repository/RevenueRepository.java @@ -0,0 +1,9 @@ +package com.codejam.demo.repository; + +import com.codejam.demo.model.Revenue; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface RevenueRepository extends JpaRepository { +} diff --git a/src/main/java/com/codejam/demo/repository/ScheduleRepository.java b/src/main/java/com/codejam/demo/repository/ScheduleRepository.java new file mode 100644 index 0000000..3d51674 --- /dev/null +++ b/src/main/java/com/codejam/demo/repository/ScheduleRepository.java @@ -0,0 +1,19 @@ +package com.codejam.demo.repository; + +import com.codejam.demo.model.Schedule; +import org.springframework.data.domain.Page; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; +import org.springframework.data.domain.Pageable; + +import java.util.Optional; + +@Repository +public interface ScheduleRepository extends JpaRepository { + + Optional findByVenue(String venue); + + @Query("SELECT q FROM Schedule q WHERE LOWER(q.venue) LIKE LOWER(CONCAT('%', :venue, '%'))") + Page searchSchedule(String venue, Pageable pageable); +} diff --git a/src/main/java/com/codejam/demo/service/BaseService.java b/src/main/java/com/codejam/demo/service/BaseService.java new file mode 100644 index 0000000..883f26b --- /dev/null +++ b/src/main/java/com/codejam/demo/service/BaseService.java @@ -0,0 +1,9 @@ +package com.codejam.demo.service; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class BaseService { + + public Logger logger = LoggerFactory.getLogger(BaseService.class); +} diff --git a/src/main/java/com/codejam/demo/service/PersonalInformationService.java b/src/main/java/com/codejam/demo/service/PersonalInformationService.java new file mode 100644 index 0000000..b0e604c --- /dev/null +++ b/src/main/java/com/codejam/demo/service/PersonalInformationService.java @@ -0,0 +1,6 @@ +/* +package com.codejam.demo.service; + +public interface PersonalInformationService { +} +*/ diff --git a/src/main/java/com/codejam/demo/service/RevenueService.java b/src/main/java/com/codejam/demo/service/RevenueService.java new file mode 100644 index 0000000..d88a931 --- /dev/null +++ b/src/main/java/com/codejam/demo/service/RevenueService.java @@ -0,0 +1,25 @@ +package com.codejam.demo.service; + +import com.codejam.demo.enums.RecordStatus; +import com.codejam.demo.model.Revenue; + +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public interface RevenueService { + + Revenue save(Revenue revenue); + + Revenue update(Revenue revenue, RecordStatus status); + + Optional findById(int id); + + Optional findByMonthlyRate(String monthly_rate); + + List findAll(String[] sortable, String sortBy, Map filterMap); + + Map getList(String monthly_rate, Integer page, Integer size, String sortBy); + + //void updateRecordStatus(Integer schedule_id, RecordStatus status); +} diff --git a/src/main/java/com/codejam/demo/service/ScheduleService.java b/src/main/java/com/codejam/demo/service/ScheduleService.java new file mode 100644 index 0000000..1010fe7 --- /dev/null +++ b/src/main/java/com/codejam/demo/service/ScheduleService.java @@ -0,0 +1,26 @@ +package com.codejam.demo.service; + +import com.codejam.demo.dto.ScheduleDto; +import com.codejam.demo.enums.RecordStatus; +import com.codejam.demo.model.Schedule; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public interface ScheduleService { + + Schedule save(ScheduleDto scheduleDto); + + Schedule update(ScheduleDto scheduleDto, RecordStatus status); + + Optional findById(int id); + + Optional findByVenue(String venue); + + List findAll(String[] sortable, String sortBy, Map filterMap); + + Map getList(String venue, Integer page, Integer size, String sortBy); + + void updateRecordStatus(Integer schedule_id, RecordStatus status); + +} diff --git a/src/main/java/com/codejam/demo/serviceImplementation/ScheduleServiceImplementation.java b/src/main/java/com/codejam/demo/serviceImplementation/ScheduleServiceImplementation.java new file mode 100644 index 0000000..af115ce --- /dev/null +++ b/src/main/java/com/codejam/demo/serviceImplementation/ScheduleServiceImplementation.java @@ -0,0 +1,82 @@ +package com.codejam.demo.serviceImplementation; + +import com.codejam.demo.dto.ScheduleDto; +import com.codejam.demo.enums.RecordStatus; +import com.codejam.demo.exception.ResourceNotFoundException; +import com.codejam.demo.helper.GetListHelper; +import com.codejam.demo.model.Schedule; +import com.codejam.demo.repository.ScheduleRepository; +import com.codejam.demo.service.ScheduleService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import javax.persistence.EntityManager; +import javax.transaction.Transactional; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class ScheduleServiceImplementation implements ScheduleService { + + private final ScheduleRepository repository; + + private final EntityManager em; + + @Override + @Transactional + public Schedule save(ScheduleDto scheduleDto) { + Schedule schedule = scheduleDto.to(); + //helper.getSaveData(schedule); + Schedule savedSchedule = repository.save(schedule); + return savedSchedule; + } + @Override + @Transactional + public Schedule update(ScheduleDto dto, RecordStatus status){ + Schedule schedule = repository.findById(dto.getSchedule_id()).orElseThrow(() -> new ResourceNotFoundException("id: " + dto.getSchedule_id())); + dto.update(dto, schedule); + //helper.getUpdatedData(schedule, status); + Schedule updatedSchedule = repository.save(schedule); + return updatedSchedule; + } + + @Override + public Optional findById(int id) { + Optional schedule= repository.findById(id); + return schedule; + } + + @Override + public Optional findByVenue(String venue) { + Optional schedule = repository.findByVenue(venue); + return schedule; + } + + + @Override + public List findAll(String[] sortable, String sortBy, Map filterMap) { + return new GetListHelper(em, Schedule.class).findAll(sortable, sortBy); + } + + @Override + public Map getList(String venue, Integer page, Integer size, String sortBy) { + GetListHelper helper = new GetListHelper<>(em, Schedule.class); + + return helper.getList(repository.searchSchedule(venue, + helper.getPageable(sortBy, page, size)), page, size); + } + + + @Override + @Transactional + public void updateRecordStatus(Integer schedule_id, RecordStatus status) { + Schedule schedule = repository.findById(schedule_id) + .orElseThrow(() -> new ResourceNotFoundException("Schedule Id: " + schedule_id)); + // helper.getUpdatedData(schedule, status); + repository.save(schedule); + } + + +} diff --git a/src/main/java/com/codejam/demo/utils/CommonDataHelper.java b/src/main/java/com/codejam/demo/utils/CommonDataHelper.java new file mode 100644 index 0000000..652c936 --- /dev/null +++ b/src/main/java/com/codejam/demo/utils/CommonDataHelper.java @@ -0,0 +1,30 @@ +package com.codejam.demo.utils; + +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +public class CommonDataHelper { + + public void getCommonData(Integer page, Integer size, Map searchResult, PaginatedResponse response, List list) { + + Integer currentPage = (Integer) searchResult.get("currentPage"); + Integer nextPage = (Integer) searchResult.get("nextPage"); + Integer previousPage = (Integer) searchResult.get("previousPage"); + + Map meta = new HashMap<>(); + meta.put("currentPage", currentPage); + meta.put("nextPage", nextPage); + meta.put("previousPage", previousPage); + meta.put("size", searchResult.get("size")); + meta.put("total", searchResult.get("total")); + + response.setList(list); + response.setMeta(meta); + } + +} + diff --git a/src/main/java/com/codejam/demo/utils/PaginatedResponse.java b/src/main/java/com/codejam/demo/utils/PaginatedResponse.java new file mode 100644 index 0000000..d5ef1db --- /dev/null +++ b/src/main/java/com/codejam/demo/utils/PaginatedResponse.java @@ -0,0 +1,14 @@ +package com.codejam.demo.utils; + +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +public class PaginatedResponse { + + public Object list; + + public Object meta; + +} diff --git a/src/main/java/com/codejam/demo/utils/PaginationParameters.java b/src/main/java/com/codejam/demo/utils/PaginationParameters.java new file mode 100644 index 0000000..9b07afd --- /dev/null +++ b/src/main/java/com/codejam/demo/utils/PaginationParameters.java @@ -0,0 +1,20 @@ +package com.codejam.demo.utils; + +import java.util.List; +import java.util.Map; + +public class PaginationParameters { + + public static void getdata(Map map, Integer page, Long total, Integer size, List lists) { + + Integer nextPage = ((page + 1) < total) ? page + 1 : 0; + Integer previousPage = ((page - 1) >= 0) ? page - 1 : 0; + map.put("currentPage", page); + map.put("nextPage", nextPage); + map.put("previousPage", previousPage); + map.put("size", size); + map.put("total", total); + map.put("lists", lists); + } + +} \ No newline at end of file diff --git a/src/main/java/com/codejam/demo/utils/Response.java b/src/main/java/com/codejam/demo/utils/Response.java new file mode 100644 index 0000000..39eca28 --- /dev/null +++ b/src/main/java/com/codejam/demo/utils/Response.java @@ -0,0 +1,7 @@ +package com.codejam.demo.utils; + +import org.json.JSONObject; + +public interface Response { + JSONObject getJson(); +} \ No newline at end of file diff --git a/src/main/java/com/codejam/demo/utils/ResponseBuilder.java b/src/main/java/com/codejam/demo/utils/ResponseBuilder.java new file mode 100644 index 0000000..a720708 --- /dev/null +++ b/src/main/java/com/codejam/demo/utils/ResponseBuilder.java @@ -0,0 +1,75 @@ +package com.codejam.demo.utils; + +import com.codejam.demo.constants.ResponseStatus; +import lombok.Data; +import org.json.JSONObject; + +import java.util.HashMap; +import java.util.Map; + +@Data +public class ResponseBuilder implements Response { + + private final ResponseType type; + private String status = null; + private Object data = null; + private Object markList = null; + private Object meta = null; + private String message = null; + private Object errors = null; + + public ResponseBuilder(ResponseType type) { + this.type = type; + } + + public static ResponseBuilder success(Object data) { + ResponseBuilder response = new ResponseBuilder(ResponseType.DATA); + response.data = data; + response.status = ResponseStatus.SUCCESS; + return response; + } + + public static ResponseBuilder success(Object data, String message) { + ResponseBuilder response = new ResponseBuilder(ResponseType.DATA); + response.data = data; + response.message = message; + response.status = ResponseStatus.SUCCESS; + return response; + } + + public static ResponseBuilder error(Object errors) { + ResponseBuilder response = new ResponseBuilder(ResponseType.ERROR); + response.errors = errors; + response.status = ResponseStatus.ERROR; + return response; + } + + public static ResponseBuilder error(Object errors, String message) { + ResponseBuilder response = new ResponseBuilder(ResponseType.ERROR); + response.errors = errors; + response.message = message; + response.status = ResponseStatus.ERROR; + return response; + } + + @Override + public JSONObject getJson() { + + Map maps = new HashMap(); + + switch (this.type) { + case DATA: + maps.put("status", status); + maps.put("data", data); + maps.put("meta", meta); + maps.put("message", message); + case ERROR: + maps.put("status", status); + maps.put("message", message); + maps.put("errors", errors); + } + + return new JSONObject(maps); + } + +} diff --git a/src/main/java/com/codejam/demo/utils/ResponseType.java b/src/main/java/com/codejam/demo/utils/ResponseType.java new file mode 100644 index 0000000..e7d732b --- /dev/null +++ b/src/main/java/com/codejam/demo/utils/ResponseType.java @@ -0,0 +1,6 @@ +package com.codejam.demo.utils; + +public enum ResponseType { + DATA, + ERROR +} \ No newline at end of file diff --git a/src/main/java/com/codejam/demo/utils/StringUtils.java b/src/main/java/com/codejam/demo/utils/StringUtils.java new file mode 100644 index 0000000..a5c548a --- /dev/null +++ b/src/main/java/com/codejam/demo/utils/StringUtils.java @@ -0,0 +1,112 @@ +package com.codejam.demo.utils; + +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.ThreadLocalRandom; + +public class StringUtils { + + public static boolean isNotEmpty(String str) { + return Objects.nonNull(str) && str.trim().length() > 0; + } + + public static boolean nonNull(Object boj) { + return Objects.nonNull(boj); + } + + public static boolean isNotEmpty(Integer integer) { + return Objects.nonNull(integer) && integer > 0; + } + + public static boolean isEmpty(String str) { + return !isNotEmpty(str); + } + + public static boolean isEmpty(Integer integer) { + return !isNotEmpty(integer); + } + + public static boolean isEmptyArr(Set strArr) { + return strArr.size() == 0; + } + + public static boolean isNumericString(String code) { + return code.matches("[0-9]+"); + } + + public static boolean isAnyEmpty(String... strings) { + return Arrays.stream(strings).anyMatch(StringUtils::isEmpty); + } + + public static boolean isAllNotEmpty(String... strings) { + return Arrays.stream(strings).noneMatch(StringUtils::isEmpty); + } + + public static String joinWithDelimiter(String delimiter, String... values) { + + List elements = Arrays.asList(values); + + StringBuilder sb = new StringBuilder(); + elements.forEach(s -> { + String str = StringUtils.isNotEmpty(s) ? s.trim() : ""; + + if (sb.length() > 0) { + sb.append(delimiter); + } + sb.append(str); + }); + return sb.toString(); + } + + public static String booleanToStr(Boolean bol) { + return String.valueOf(bol); + } + + public static boolean isNotEmpty(Object obj) { + return Objects.nonNull(obj); + } + + public static String trim(String str) { + return str.trim(); + } + +// public static String objectToJson(Object obj) { +// return toJson(obj); +// } + +// public static String toJson(Object obj) { +// Gson gson = new GsonBuilder() +// .registerTypeAdapterFactory(HibernateProxyTypeAdapter.FACTORY) +// .create(); +// return gson.toJson(obj); +// } + + public static String randomString() { + return String.valueOf(ThreadLocalRandom.current().nextLong(100000000000L, 899999999999L)); + } + + public static Long getRecordId(Long previousId) { + Long i = previousId == null ? 0 : previousId; + i=i+1; + return i; + } + + /** + * A common method for all enums since they can't have another base class + * @param Enum type + * @param c enum type. All enums must be all caps. + * @param string case insensitive + * @return corresponding enum, or null + */ + public static > T getEnumFromString(Class c, String string) { + if( c != null && string != null ) { + try { + return Enum.valueOf(c, string.trim().toUpperCase()); + } catch(IllegalArgumentException ex) { + } + } + return null; + } +} diff --git a/src/main/java/com/codejam/demo/validator/ScheduleValidator.java b/src/main/java/com/codejam/demo/validator/ScheduleValidator.java new file mode 100644 index 0000000..113ded3 --- /dev/null +++ b/src/main/java/com/codejam/demo/validator/ScheduleValidator.java @@ -0,0 +1,38 @@ +package com.codejam.demo.validator; + +import com.codejam.demo.model.Schedule; +import com.codejam.demo.service.ScheduleService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; +import org.springframework.validation.Errors; +import org.springframework.validation.Validator; + +import java.util.Optional; + +import static com.codejam.demo.constants.MessageConstants.SCHEDULE_EXIST; +import static org.apache.logging.log4j.util.Strings.isNotEmpty; + +@Component +@RequiredArgsConstructor +public class ScheduleValidator implements Validator { + + private final ScheduleService service; + + @Override + public boolean supports(Class clazz) { + return Schedule.class.isAssignableFrom(clazz); + } + + @Override + public void validate(Object target, Errors error) { + Schedule schedule = (Schedule) target; + + if (isNotEmpty(schedule.getEvent_name())) { + Optional schedule1 = service.findByVenue(schedule.getEvent_name()); + if (schedule1.isPresent()) { + error.rejectValue("venue", null, SCHEDULE_EXIST); + } + } + } + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 9deaf3e..d0db38a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -7,4 +7,9 @@ spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect #logging level -logging.level.org.springframework.web=DEBUG \ No newline at end of file +logging.level.org.springframework.web=DEBUG + + +#Microservice +demoService: ${demoServiceBaseUrl:https://jsonplaceholder.typicode.com/todos/1/} +spring.cloud.compatibility-verifier.enabled=false \ No newline at end of file diff --git a/target/classes/Data.sql b/target/classes/Data.sql new file mode 100644 index 0000000..4156517 --- /dev/null +++ b/target/classes/Data.sql @@ -0,0 +1,10 @@ +DROP TABLE IF EXISTS PERSONAL_INFORMATION; +CREATE TABLE PERSONAL_INFORMATION (id int,real_name varchar(50),idol_name varchar(60),address varchar(255),idol_status varchar(25)); +DROP TABLE IF EXISTS SCHEDULE; +CREATE TABLE SCHEDULE (id int,venue varchar(50),event_name varchar(60),date_time varchar(50)); +DROP TABLE IF EXISTS REVENUE; +CREATE TABLE REVENUE (id int,monthly_rate varchar(50),event_name varchar(60),date_time varchar(50)); + +INSERT INTO PERSONAL_INFORMATION (id, real_name, idol_name, address, idol_status) VALUES ('1', 'rahimi', 'remy', 'Malaysia', 'ACTIVE'); +INSERT INTO SCHEDULE (id, venue, event_name, date_time) VALUES ('1', 'Stadium Bukit Jalil', 'World Tour-2025', '27/05/2025 08:47:59.751000000'); +INSERT INTO REVENUE (id, monthly_rate, date_time) VALUES ('1', '1000000', '27/05/2025 08:47:59.751000000'); \ No newline at end of file diff --git a/target/classes/application.properties b/target/classes/application.properties new file mode 100644 index 0000000..d0db38a --- /dev/null +++ b/target/classes/application.properties @@ -0,0 +1,15 @@ + +#Database H2 config +spring.datasource.url=jdbc:h2:mem:testdb +spring.h2.console.enabled=true +spring.jpa.hibernate.ddl-auto=none +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect + +#logging level +logging.level.org.springframework.web=DEBUG + + +#Microservice +demoService: ${demoServiceBaseUrl:https://jsonplaceholder.typicode.com/todos/1/} +spring.cloud.compatibility-verifier.enabled=false \ No newline at end of file diff --git a/target/classes/com/codejam/demo/DemoApplication.class b/target/classes/com/codejam/demo/DemoApplication.class new file mode 100644 index 0000000..55445b2 Binary files /dev/null and b/target/classes/com/codejam/demo/DemoApplication.class differ diff --git a/target/classes/com/codejam/demo/config/FeignConfig$CustomErrorDecoder.class b/target/classes/com/codejam/demo/config/FeignConfig$CustomErrorDecoder.class new file mode 100644 index 0000000..b7eb1ba Binary files /dev/null and b/target/classes/com/codejam/demo/config/FeignConfig$CustomErrorDecoder.class differ diff --git a/target/classes/com/codejam/demo/config/FeignConfig.class b/target/classes/com/codejam/demo/config/FeignConfig.class new file mode 100644 index 0000000..5296cb9 Binary files /dev/null and b/target/classes/com/codejam/demo/config/FeignConfig.class differ diff --git a/target/classes/com/codejam/demo/constants/MessageConstants.class b/target/classes/com/codejam/demo/constants/MessageConstants.class new file mode 100644 index 0000000..ae1b5cb Binary files /dev/null and b/target/classes/com/codejam/demo/constants/MessageConstants.class differ diff --git a/target/classes/com/codejam/demo/constants/ResponseStatus.class b/target/classes/com/codejam/demo/constants/ResponseStatus.class new file mode 100644 index 0000000..52c7492 Binary files /dev/null and b/target/classes/com/codejam/demo/constants/ResponseStatus.class differ diff --git a/target/classes/com/codejam/demo/controller/DemoController.class b/target/classes/com/codejam/demo/controller/DemoController.class new file mode 100644 index 0000000..e562b33 Binary files /dev/null and b/target/classes/com/codejam/demo/controller/DemoController.class differ diff --git a/target/classes/com/codejam/demo/controller/PersonalInformationController.class b/target/classes/com/codejam/demo/controller/PersonalInformationController.class new file mode 100644 index 0000000..575e43f Binary files /dev/null and b/target/classes/com/codejam/demo/controller/PersonalInformationController.class differ diff --git a/target/classes/com/codejam/demo/controller/RevenueController.class b/target/classes/com/codejam/demo/controller/RevenueController.class new file mode 100644 index 0000000..cf71af1 Binary files /dev/null and b/target/classes/com/codejam/demo/controller/RevenueController.class differ diff --git a/target/classes/com/codejam/demo/controller/ScheduleController.class b/target/classes/com/codejam/demo/controller/ScheduleController.class new file mode 100644 index 0000000..bd98086 Binary files /dev/null and b/target/classes/com/codejam/demo/controller/ScheduleController.class differ diff --git a/target/classes/com/codejam/demo/dto/ScheduleDto.class b/target/classes/com/codejam/demo/dto/ScheduleDto.class new file mode 100644 index 0000000..2514bb7 Binary files /dev/null and b/target/classes/com/codejam/demo/dto/ScheduleDto.class differ diff --git a/target/classes/com/codejam/demo/dto/ServiceDto.class b/target/classes/com/codejam/demo/dto/ServiceDto.class new file mode 100644 index 0000000..95482f2 Binary files /dev/null and b/target/classes/com/codejam/demo/dto/ServiceDto.class differ diff --git a/target/classes/com/codejam/demo/enums/RecordStatus.class b/target/classes/com/codejam/demo/enums/RecordStatus.class new file mode 100644 index 0000000..bfde985 Binary files /dev/null and b/target/classes/com/codejam/demo/enums/RecordStatus.class differ diff --git a/target/classes/com/codejam/demo/exception/ApiError.class b/target/classes/com/codejam/demo/exception/ApiError.class new file mode 100644 index 0000000..f1f4211 Binary files /dev/null and b/target/classes/com/codejam/demo/exception/ApiError.class differ diff --git a/target/classes/com/codejam/demo/exception/ResourceNotFoundException.class b/target/classes/com/codejam/demo/exception/ResourceNotFoundException.class new file mode 100644 index 0000000..e9e719a Binary files /dev/null and b/target/classes/com/codejam/demo/exception/ResourceNotFoundException.class differ diff --git a/target/classes/com/codejam/demo/helper/GetListHelper.class b/target/classes/com/codejam/demo/helper/GetListHelper.class new file mode 100644 index 0000000..62431ad Binary files /dev/null and b/target/classes/com/codejam/demo/helper/GetListHelper.class differ diff --git a/target/classes/com/codejam/demo/model/PersonalInformation.class b/target/classes/com/codejam/demo/model/PersonalInformation.class new file mode 100644 index 0000000..d232f8f Binary files /dev/null and b/target/classes/com/codejam/demo/model/PersonalInformation.class differ diff --git a/target/classes/com/codejam/demo/model/Revenue.class b/target/classes/com/codejam/demo/model/Revenue.class new file mode 100644 index 0000000..577d1a6 Binary files /dev/null and b/target/classes/com/codejam/demo/model/Revenue.class differ diff --git a/target/classes/com/codejam/demo/model/Schedule.class b/target/classes/com/codejam/demo/model/Schedule.class new file mode 100644 index 0000000..6cd0cba Binary files /dev/null and b/target/classes/com/codejam/demo/model/Schedule.class differ diff --git a/target/classes/com/codejam/demo/repository/DemoServiceRepositiry.class b/target/classes/com/codejam/demo/repository/DemoServiceRepositiry.class new file mode 100644 index 0000000..41ff12d Binary files /dev/null and b/target/classes/com/codejam/demo/repository/DemoServiceRepositiry.class differ diff --git a/target/classes/com/codejam/demo/repository/PersonalInformationRepository.class b/target/classes/com/codejam/demo/repository/PersonalInformationRepository.class new file mode 100644 index 0000000..e83bf00 Binary files /dev/null and b/target/classes/com/codejam/demo/repository/PersonalInformationRepository.class differ diff --git a/target/classes/com/codejam/demo/repository/RevenueRepository.class b/target/classes/com/codejam/demo/repository/RevenueRepository.class new file mode 100644 index 0000000..9789bee Binary files /dev/null and b/target/classes/com/codejam/demo/repository/RevenueRepository.class differ diff --git a/target/classes/com/codejam/demo/repository/ScheduleRepository.class b/target/classes/com/codejam/demo/repository/ScheduleRepository.class new file mode 100644 index 0000000..462b7b5 Binary files /dev/null and b/target/classes/com/codejam/demo/repository/ScheduleRepository.class differ diff --git a/target/classes/com/codejam/demo/service/BaseService.class b/target/classes/com/codejam/demo/service/BaseService.class new file mode 100644 index 0000000..852a482 Binary files /dev/null and b/target/classes/com/codejam/demo/service/BaseService.class differ diff --git a/target/classes/com/codejam/demo/service/RevenueService.class b/target/classes/com/codejam/demo/service/RevenueService.class new file mode 100644 index 0000000..123e4b4 Binary files /dev/null and b/target/classes/com/codejam/demo/service/RevenueService.class differ diff --git a/target/classes/com/codejam/demo/service/ScheduleService.class b/target/classes/com/codejam/demo/service/ScheduleService.class new file mode 100644 index 0000000..85e9bb1 Binary files /dev/null and b/target/classes/com/codejam/demo/service/ScheduleService.class differ diff --git a/target/classes/com/codejam/demo/serviceImplementation/ScheduleServiceImplementation.class b/target/classes/com/codejam/demo/serviceImplementation/ScheduleServiceImplementation.class new file mode 100644 index 0000000..6f908ab Binary files /dev/null and b/target/classes/com/codejam/demo/serviceImplementation/ScheduleServiceImplementation.class differ diff --git a/target/classes/com/codejam/demo/utils/CommonDataHelper.class b/target/classes/com/codejam/demo/utils/CommonDataHelper.class new file mode 100644 index 0000000..380768a Binary files /dev/null and b/target/classes/com/codejam/demo/utils/CommonDataHelper.class differ diff --git a/target/classes/com/codejam/demo/utils/PaginatedResponse.class b/target/classes/com/codejam/demo/utils/PaginatedResponse.class new file mode 100644 index 0000000..a6913f0 Binary files /dev/null and b/target/classes/com/codejam/demo/utils/PaginatedResponse.class differ diff --git a/target/classes/com/codejam/demo/utils/PaginationParameters.class b/target/classes/com/codejam/demo/utils/PaginationParameters.class new file mode 100644 index 0000000..36a05ed Binary files /dev/null and b/target/classes/com/codejam/demo/utils/PaginationParameters.class differ diff --git a/target/classes/com/codejam/demo/utils/Response.class b/target/classes/com/codejam/demo/utils/Response.class new file mode 100644 index 0000000..392ad2a Binary files /dev/null and b/target/classes/com/codejam/demo/utils/Response.class differ diff --git a/target/classes/com/codejam/demo/utils/ResponseBuilder$1.class b/target/classes/com/codejam/demo/utils/ResponseBuilder$1.class new file mode 100644 index 0000000..5d740b6 Binary files /dev/null and b/target/classes/com/codejam/demo/utils/ResponseBuilder$1.class differ diff --git a/target/classes/com/codejam/demo/utils/ResponseBuilder.class b/target/classes/com/codejam/demo/utils/ResponseBuilder.class new file mode 100644 index 0000000..4a980dd Binary files /dev/null and b/target/classes/com/codejam/demo/utils/ResponseBuilder.class differ diff --git a/target/classes/com/codejam/demo/utils/ResponseType.class b/target/classes/com/codejam/demo/utils/ResponseType.class new file mode 100644 index 0000000..4b5fc95 Binary files /dev/null and b/target/classes/com/codejam/demo/utils/ResponseType.class differ diff --git a/target/classes/com/codejam/demo/utils/StringUtils.class b/target/classes/com/codejam/demo/utils/StringUtils.class new file mode 100644 index 0000000..68b4161 Binary files /dev/null and b/target/classes/com/codejam/demo/utils/StringUtils.class differ diff --git a/target/classes/com/codejam/demo/validator/ScheduleValidator.class b/target/classes/com/codejam/demo/validator/ScheduleValidator.class new file mode 100644 index 0000000..3a569be Binary files /dev/null and b/target/classes/com/codejam/demo/validator/ScheduleValidator.class differ diff --git a/target/test-classes/com/codejam/demo/DemoApplicationTests.class b/target/test-classes/com/codejam/demo/DemoApplicationTests.class new file mode 100644 index 0000000..0f6ea62 Binary files /dev/null and b/target/test-classes/com/codejam/demo/DemoApplicationTests.class differ