Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/main/java/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Manifest-Version: 1.0
Class-Path:

Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.zoomcare.candidatechallenge.controller;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.zoomcare.candidatechallenge.model.EmployeeEntity;
import com.zoomcare.candidatechallenge.repository.EmployeeRepository;
import com.zoomcare.candidatechallenge.repository.PropertyRepository;

@CrossOrigin(origins = "http://localhost:8080")
@RestController
@RequestMapping("/api")
public class CandidateChallengeController {

@Autowired
EmployeeRepository employeeRepository;

@Autowired
PropertyRepository propertiesRepository;

@GetMapping("/employees")
public ResponseEntity<List<EmployeeEntity>> getAllEmployees(@RequestParam(required = false) String title) {
try {
List<EmployeeEntity> employeeData = new ArrayList<EmployeeEntity>();
employeeRepository.findAll().forEach(employeeData::add);

if (employeeData.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<>(employeeData, HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}

@GetMapping("/employees/{id}")
public ResponseEntity<EmployeeEntity> getEmployeeById(@PathVariable("id") long id) {
Optional<EmployeeEntity> employeeData = employeeRepository.findById(id);

if (employeeData.isPresent()) {
return new ResponseEntity<>(employeeData.get(), HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}



}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.zoomcare.candidatechallenge.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "employee")
public class EmployeeEntity implements Serializable {

/**
*
*/
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column(name = "supervisor_id")
private Long supervisorId;

public EmployeeEntity() {

}

public EmployeeEntity(Long id, Long supervisorId) {
this.id = id;
this.supervisorId = supervisorId;
}

/**
* @return the id
*/
public Long getId() {
return id;
}

/**
* @param id the id to set
*/
public void setId(Long id) {
this.id = id;
}

/**
* @return the supervisorId
*/
public Long getSupervisorId() {
return supervisorId;
}

/**
* @param supervisorId the supervisorId to set
*/
public void setSupervisorId(Long supervisorId) {
this.supervisorId = supervisorId;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package com.zoomcare.candidatechallenge.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "property")
public class PropertyEntity implements Serializable {

/**
*
*/
private static final long serialVersionUID = 1L;

@Id
@Column(name = "employee_id")
private Long employeeId;

@Column(name = "key")
private String keyValue;

@Column(name = "value")
private String valueDescription;

public PropertyEntity() {

}

public PropertyEntity(Long employeeId, String keyValue, String valueDescription) {
this.employeeId = employeeId;
this.keyValue = keyValue;
this.valueDescription = valueDescription;
}

/**
* @return the employeeId
*/
public Long getEmployeeId() {
return employeeId;
}

/**
* @param employeeId the employeeId to set
*/
public void setEmployeeId(Long employeeId) {
this.employeeId = employeeId;
}

/**
* @return the keyValue
*/
public String getKeyValue() {
return keyValue;
}

/**
* @param keyValue the keyValue to set
*/
public void setKeyValue(String keyValue) {
this.keyValue = keyValue;
}

/**
* @return the valueDescription
*/
public String getValueDescription() {
return valueDescription;
}

/**
* @param valueDescription the valueDescription to set
*/
public void setValueDescription(String valueDescription) {
this.valueDescription = valueDescription;
}

/**
* @return the serialversionuid
*/
public static long getSerialversionuid() {
return serialVersionUID;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.zoomcare.candidatechallenge.repository;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;

import com.company.model.EmployeeEntity;

@SuppressWarnings("unused")
public interface EmployeeRepository extends JpaRepository<EmployeeEntity, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.zoomcare.candidatechallenge.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.company.model.PropertiesEntity;

public interface PropertyRepository extends JpaRepository<PropertyEntity, Long> {

}
10 changes: 10 additions & 0 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
server.port=8080

spring.datasource.url: jdbc:h2:mem:testdb
spring.datasource.driverClassName: org.h2.Driver
spring.datasource.username: sa
spring.datasource.password: password
spring.jpa.database-platform: org.hibernate.dialect.H2Dialect
spring.h2.console.enabled: true

spring.jpa.defer-datasource-initialization=true