Commit 56624ee1 authored by Narendar Vakiti's avatar Narendar Vakiti

mystatus integration changes

parent a040a26a
package com.nisum.myteam.status.exceptions;
package com.nisum.myteam.exception.handler;
import com.nisum.myteam.exception.handler.EmployeeNotFoundException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
......@@ -25,7 +26,7 @@ public class ControllerAdvisor extends ResponseEntityExceptionHandler {
}
@ExceptionHandler(EmployeeRecordsNotFound.class)
public ResponseEntity<Object> handleEmployeeRecordsNotFoundException(
EmployeeRecordsNotFound ex, WebRequest request) {
EmployeeRecordsNotFound ex, WebRequest request) {
Map<String, Object> body = new LinkedHashMap<>();
body.put("timestamp", LocalDateTime.now());
......
package com.nisum.myteam.status.exceptions;
package com.nisum.myteam.exception.handler;
public class EmployeeRecordsNotFound extends RuntimeException {
public EmployeeRecordsNotFound(Integer id) {
......
package com.nisum.myteam.status.fileexport;
package com.nisum.myteam.fileexport;
import com.nisum.myteam.status.model.Status;
import com.nisum.myteam.status.util.FileUtil;
import com.nisum.myteam.model.dao.MyStatus;
import com.nisum.myteam.utils.MyStatusFileUtil;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
......@@ -11,8 +11,8 @@ import java.io.IOException;
import java.sql.Date;
import java.util.List;
public class GenerateExcelReport {
public static ByteArrayInputStream generateExcelStatusReport(List<Status> statusList) throws IOException {
public class GenerateStatusExcelReport {
public static ByteArrayInputStream generateExcelStatusReport(List<MyStatus> statusList) throws IOException {
try (Workbook workbook = new XSSFWorkbook()) {
......@@ -60,31 +60,31 @@ public class GenerateExcelReport {
int rowCount = 1;
for (Status status : statusList) {
for (MyStatus status : statusList) {
Row statusRow = sheet.createRow(rowCount++);
Cell taksDateCell = statusRow.createCell(0);
taksDateCell.setCellValue(Date.valueOf(status.getTaskDate()));
taksDateCell.setCellStyle(FileUtil.cellStyleDate(workbook));
taksDateCell.setCellValue(status.getTaskDate());
taksDateCell.setCellStyle(MyStatusFileUtil.cellStyleDate(workbook));
statusRow.createCell(1).setCellValue(status.getTaskType());
statusRow.createCell(2).setCellValue(status.getTicketNumber());
statusRow.createCell(3).setCellValue(status.getStoryPoints());
Cell planedTaskStartDateCell = statusRow.createCell(4);
planedTaskStartDateCell.setCellValue(Date.valueOf(status.getPlanedStartDate()));
planedTaskStartDateCell.setCellStyle(FileUtil.cellStyleDate(workbook));
planedTaskStartDateCell.setCellValue(status.getPlanedStartDate());
planedTaskStartDateCell.setCellStyle(MyStatusFileUtil.cellStyleDate(workbook));
Cell planedTaskEndDateCell = statusRow.createCell(5);
planedTaskEndDateCell.setCellValue(Date.valueOf(status.getPlanedEndDate()));
planedTaskEndDateCell.setCellStyle(FileUtil.cellStyleDate(workbook));
planedTaskEndDateCell.setCellValue(status.getPlanedEndDate());
planedTaskEndDateCell.setCellStyle(MyStatusFileUtil.cellStyleDate(workbook));
Cell actualStartDateCell = statusRow.createCell(6);
actualStartDateCell.setCellValue(Date.valueOf(status.getActualEndDate()));
actualStartDateCell.setCellStyle(FileUtil.cellStyleDate(workbook));
actualStartDateCell.setCellValue(status.getActualEndDate());
actualStartDateCell.setCellStyle(MyStatusFileUtil.cellStyleDate(workbook));
Cell actualEndDateCell = statusRow.createCell(7);
actualEndDateCell.setCellValue(Date.valueOf(status.getActualEndDate()));
actualEndDateCell.setCellStyle(FileUtil.cellStyleDate(workbook));
actualEndDateCell.setCellValue(status.getActualEndDate());
actualEndDateCell.setCellStyle(MyStatusFileUtil.cellStyleDate(workbook));
statusRow.createCell(8).setCellValue(status.getHoursSpent());
statusRow.createCell(9).setCellValue(status.getPriority());
......
package com.nisum.myteam.status.fileexport;
package com.nisum.myteam.fileexport;
import com.itextpdf.io.source.ByteArrayOutputStream;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import com.nisum.myteam.status.model.Status;
import com.nisum.myteam.status.util.FileUtil;
import com.nisum.myteam.model.dao.MyStatus;
import com.nisum.myteam.utils.MyStatusFileUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.ByteArrayInputStream;
import java.util.List;
public class GeneratePdfReport {
public static ByteArrayInputStream statusReport(List<Status> statusResponse) {
public class GenerateStatusPdfReport {
public static ByteArrayInputStream statusReport(List<MyStatus> statusResponse) {
final Logger log = LoggerFactory.getLogger(GeneratePdfReport.class);
final Logger log = LoggerFactory.getLogger(GenerateStatusPdfReport.class);
Document document = new Document();
ByteArrayOutputStream out = new ByteArrayOutputStream();
......@@ -82,10 +82,10 @@ public class GeneratePdfReport {
hcell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(hcell);
for(Status status: statusResponse){
for(MyStatus status: statusResponse){
PdfPCell cell;
cell = new PdfPCell(new Phrase(FileUtil.dateToStringFormatter(status.getTaskDate())));
cell = new PdfPCell(new Phrase(MyStatusFileUtil.dateToStringFormatter(status.getTaskDate())));
table.addCell(cell);
cell = new PdfPCell(new Phrase(status.getTaskType()));
table.addCell(cell);
......@@ -93,13 +93,13 @@ public class GeneratePdfReport {
table.addCell(cell);
cell = new PdfPCell(new Phrase(String.valueOf(status.getStoryPoints())));
table.addCell(cell);
cell = new PdfPCell(new Phrase(FileUtil.dateToStringFormatter((status.getPlanedStartDate()))));
cell = new PdfPCell(new Phrase(MyStatusFileUtil.dateToStringFormatter((status.getPlanedStartDate()))));
table.addCell(cell);
cell = new PdfPCell(new Phrase(FileUtil.dateToStringFormatter(status.getPlanedEndDate())));
cell = new PdfPCell(new Phrase(MyStatusFileUtil.dateToStringFormatter(status.getPlanedEndDate())));
table.addCell(cell);
cell = new PdfPCell(new Phrase(FileUtil.dateToStringFormatter(status.getActualStartDate())));
cell = new PdfPCell(new Phrase(MyStatusFileUtil.dateToStringFormatter(status.getActualStartDate())));
table.addCell(cell);
cell = new PdfPCell(new Phrase(FileUtil.dateToStringFormatter(status.getActualEndDate())));
cell = new PdfPCell(new Phrase(MyStatusFileUtil.dateToStringFormatter(status.getActualEndDate())));
table.addCell(cell);
cell = new PdfPCell(new Phrase(String.valueOf(status.getHoursSpent())));
table.addCell(cell);
......
package com.nisum.myteam.model;
import lombok.*;
import java.time.LocalDate;
import java.util.Date;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Book {
private int bookId;
private String bookName;
private Date date;
}
package com.nisum.myteam.status.model;
package com.nisum.myteam.model;
import lombok.*;
import java.time.LocalDate;
import java.util.Date;
@Getter
......@@ -13,6 +14,6 @@ import java.time.LocalDate;
@Data
public class FromToDates {
private LocalDate fromDate;
private LocalDate toDate;
private Date fromDate;
private Date toDate;
}
package com.nisum.myteam.status.model;
package com.nisum.myteam.model.dao;
import lombok.*;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
@Getter @Setter @ToString
@NoArgsConstructor @AllArgsConstructor
@Document(collection = "database_sequences")
public class DatabaseSequence {
public class DatabaseSequence implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String id;
......
package com.nisum.myteam.status.model;
package com.nisum.myteam.model.dao;
import lombok.*;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.mapping.Document;
import java.time.LocalDate;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
@Getter @Setter
@ToString
......@@ -14,20 +15,22 @@ import java.time.LocalDateTime;
@Data
@Document(collection = "mystatus")
public class Status {
public class MyStatus implements Serializable {
private static final long serialVersionUID = 1L;
@Transient
public static final String SEQUENCE_NAME = "users_sequence";
@Id
private Integer id;
private LocalDate taskDate;
private Date taskDate;
private String ticketNumber;
private int storyPoints;
private LocalDate planedStartDate;
private LocalDate planedEndDate;
private LocalDate actualStartDate;
private LocalDate actualEndDate;
private Date planedStartDate;
private Date planedEndDate;
private Date actualStartDate;
private Date actualEndDate;
private String hoursSpent;
private String comments;
private String taskDetails;
......
package com.nisum.myteam.status.repository;
package com.nisum.myteam.repository;
import com.nisum.myteam.model.dao.MyStatus;
import org.springframework.data.mongodb.repository.MongoRepository;
import com.nisum.myteam.status.model.Status;
import org.springframework.stereotype.Repository;
import java.util.Optional;
//@Repository
public interface StatusRepository extends MongoRepository<Status, Integer> {
public interface MyStatusRepository extends MongoRepository<MyStatus, Integer> {
public Optional<Status> findById(Integer id);
public Optional<MyStatus> findById(Integer id);
public Boolean existsById(Integer id);
public void deleteById(Integer id);
......
package com.nisum.myteam.status.repository;
package com.nisum.myteam.repository;
import org.springframework.data.domain.Sort;
import com.nisum.myteam.model.dao.MyStatus;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository;
import com.nisum.myteam.status.model.Status;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
@Repository
public class StatusRepositoryImpl{
public class MyStatusRepositoryImpl {
private final MongoTemplate mongoTemplate;
public StatusRepositoryImpl(MongoTemplate mongoTemplate) {
public MyStatusRepositoryImpl(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
public List<Status> findByempId(String empId){
public List<MyStatus> findByempId(String empId){
try{
Query query = new Query().addCriteria(Criteria.where("empId").is(empId));
return mongoTemplate.find(query, Status.class);
return mongoTemplate.find(query, MyStatus.class);
}
catch(Exception e){
throw e;
}
}
public List<Status> findByDateRange(LocalDate fromDate, LocalDate toDate, String empId){
public List<MyStatus> findByDateRange(Date fromDate, Date toDate, String empId){
try{
Query query = new Query().addCriteria(Criteria.where("empId").is(empId)
.andOperator(
......@@ -38,7 +37,7 @@ public class StatusRepositoryImpl{
Criteria.where("taskDate").lte(toDate))
);
//query.with(Sort.by(Sort.Order.desc("taskDate")));
return mongoTemplate.find(query, Status.class);
return mongoTemplate.find(query, MyStatus.class);
}
catch(Exception e){
throw e;
......@@ -46,23 +45,23 @@ public class StatusRepositoryImpl{
}
//@Query(value = "SELECT *FROM mystatus_db.mystatus t WHERE t.emp_id =?1 and (select count(distinct t2.task_date) from mystatus_db.mystatus t2 where t2.emp_id = t.emp_id and t2.task_date >= t.task_date) <= 5 order by t.task_date desc")
public List<Status> findByLastFiveDays(String empId){
public List<MyStatus> findByLastFiveDays(String empId){
try{
Query query = new Query().addCriteria(Criteria.where("empId").is(empId)
);
query.limit(20);
//query.with(Sort.by(Sort.Order.desc("taskDate"))).limit(20);
return mongoTemplate.find(query, Status.class);
return mongoTemplate.find(query, MyStatus.class);
}
catch(Exception e){
throw e;
}
}
public List<Status> findTodayStatus(String empId, LocalDate today){
public List<MyStatus> findTodayStatus(String empId, LocalDate today){
try{
Query query = new Query().addCriteria(Criteria.where("empId").is(empId).and("taskDate").is(today));
return mongoTemplate.find(query, Status.class);
return mongoTemplate.find(query, MyStatus.class);
}
catch(Exception e){
throw e;
......
package com.nisum.myteam.service;
import com.nisum.myteam.model.dao.MyStatus;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
public interface MyStatusService {
public MyStatus saveStatusDetails(MyStatus status);
public List<MyStatus> findTodayStatus(String empId);
public List<MyStatus> findTaskDataByTaskDate(String empId, LocalDate date);
public List<MyStatus> getStatusDetailsByEmpId(String empId);
public List<MyStatus> getByDateRange(Date fromDate, Date toDate, String empId);
public List<MyStatus> getEmployeeStatusDetails();
public MyStatus updateStatusDetails(MyStatus status);
public void deleteEmployeeStatusDetails(Integer id);
public List<MyStatus> getDefaultStatusDetails(String empId);
}
package com.nisum.myteam.status.service;
package com.nisum.myteam.service;
import com.nisum.myteam.model.dao.DatabaseSequence;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import com.nisum.myteam.status.model.DatabaseSequence;
import java.util.Objects;
import static org.springframework.data.mongodb.core.FindAndModifyOptions.options;
import static org.springframework.data.mongodb.core.query.Criteria.where;
import static org.springframework.data.mongodb.core.query.Query.query;
import java.util.Objects;
@Service
public class SequenceGeneratorService {
......
package com.nisum.myteam.status.service;
package com.nisum.myteam.service.impl;
import com.itextpdf.styledxmlparser.jsoup.helper.StringUtil;
import com.nisum.myteam.exception.handler.EmployeeNotFoundException;
import com.nisum.myteam.service.MyStatusService;
import com.nisum.myteam.service.SequenceGeneratorService;
import com.nisum.myteam.model.dao.MyStatus;
import com.nisum.myteam.repository.MyStatusRepository;
import com.nisum.myteam.repository.MyStatusRepositoryImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.LocalDataSourceJobStore;
import org.springframework.stereotype.Service;
import com.nisum.myteam.status.exceptions.EmployeeNotFoundException;
import com.nisum.myteam.status.model.Status;
import com.nisum.myteam.status.repository.StatusRepository;
import com.nisum.myteam.status.repository.StatusRepositoryImpl;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Optional;
@Service
public class StatusServiceImpl implements StatusService {
public class MyStatusServiceImpl implements MyStatusService {
private static final Logger LOGGER = LoggerFactory.getLogger(StatusServiceImpl.class);
private static final Logger LOGGER = LoggerFactory.getLogger(MyStatusServiceImpl.class);
@Autowired
private StatusRepository repository;
private MyStatusRepository repository;
@Autowired
private SequenceGeneratorService sequenceGeneratorService;
@Autowired
private StatusRepositoryImpl statusRepositoryImpl;
private MyStatusRepositoryImpl statusRepositoryImpl;
/**
* Save the task details
* @param status
* @return
*/
public Status saveStatusDetails(Status status) {
Optional<Status> s = Optional.ofNullable(status);
public MyStatus saveStatusDetails(MyStatus status) {
Optional<MyStatus> s = Optional.ofNullable(status);
if(s.isPresent()){
status.setId((int) sequenceGeneratorService.generateSequence(Status.SEQUENCE_NAME));
status.setId((int) sequenceGeneratorService.generateSequence(MyStatus.SEQUENCE_NAME));
if(StringUtil.isBlank(status.getTicketNumber())){
status.setTicketNumber("NA");
}
......@@ -57,7 +61,7 @@ public class StatusServiceImpl implements StatusService {
status.setStatus("NA");
}
}
Status saveStatus = s.get();
MyStatus saveStatus = s.get();
LOGGER.info("Request for saving task details : "+saveStatus);
return repository.save(saveStatus);
}
......@@ -67,9 +71,9 @@ public class StatusServiceImpl implements StatusService {
* @param empId
* @return
*/
public List<Status> findTodayStatus(String empId){
public List<MyStatus> findTodayStatus(String empId){
LocalDate today = LocalDate.now();
List<Status> status = null;
List<MyStatus> status = null;
try{
if(empId != null){
status = statusRepositoryImpl.findTodayStatus(empId, today);
......@@ -87,8 +91,8 @@ public class StatusServiceImpl implements StatusService {
* @param date
* @return status
*/
public List<Status> findTaskDataByTaskDate(String empId, LocalDate date){
List<Status> status = null;
public List<MyStatus> findTaskDataByTaskDate(String empId, LocalDate date){
List<MyStatus> status = null;
try{
if(!StringUtil.isBlank(empId) && date != null){
status = statusRepositoryImpl.findTodayStatus(empId, date);
......@@ -107,7 +111,7 @@ public class StatusServiceImpl implements StatusService {
* @param empId
* @return
*/
public List<Status> getStatusDetailsByEmpId(String empId){
public List<MyStatus> getStatusDetailsByEmpId(String empId){
try{
return statusRepositoryImpl.findByempId(empId);
}catch(Exception e){
......@@ -122,7 +126,7 @@ public class StatusServiceImpl implements StatusService {
* @param empId
* @return
*/
public List<Status> getByDateRange(LocalDate fromDate, LocalDate toDate, String empId){
public List<MyStatus> getByDateRange(Date fromDate, Date toDate, String empId){
try{
return statusRepositoryImpl.findByDateRange(fromDate, toDate, empId);
}catch(Exception e){
......@@ -134,7 +138,7 @@ public class StatusServiceImpl implements StatusService {
* Find the all employees task details
* @return
*/
public List<Status> getEmployeeStatusDetails() {
public List<MyStatus> getEmployeeStatusDetails() {
try{
return repository.findAll();
}
......@@ -148,10 +152,10 @@ public class StatusServiceImpl implements StatusService {
* @param status
* @return
*/
public Status updateStatusDetails(Status status) {
Optional<Status> optionalStatus = repository.findById(status.getId());
public MyStatus updateStatusDetails(MyStatus status) {
Optional<MyStatus> optionalStatus = repository.findById(status.getId());
if (optionalStatus.isPresent()) {
Status updatedStatus = optionalStatus.get();
MyStatus updatedStatus = optionalStatus.get();
updatedStatus.setTaskType(status.getTaskType());
updatedStatus.setTaskDate(status.getTaskDate());
updatedStatus.setStoryPoints(status.getStoryPoints());
......@@ -165,10 +169,11 @@ public class StatusServiceImpl implements StatusService {
updatedStatus.setComments(status.getComments());
updatedStatus.setStatus(status.getStatus());
updatedStatus.setTaskDetails(status.getTaskDetails());
updatedStatus.setTaskAddedTime(LocalDateTime.now());
repository.save(updatedStatus);
return updatedStatus;
} else {
throw new EmployeeNotFoundException(status.getId());
throw new EmployeeNotFoundException("Employee not found on "+status.getId() + " Id");
}
}
......@@ -191,9 +196,9 @@ public class StatusServiceImpl implements StatusService {
* @param empId
* @return
*/
public List<Status> getDefaultStatusDetails(String empId) {
public List<MyStatus> getDefaultStatusDetails(String empId) {
try{
List<Status> status = statusRepositoryImpl.findByLastFiveDays(empId);
List<MyStatus> status = statusRepositoryImpl.findByLastFiveDays(empId);
LOGGER.info("Response for last five dates task details : "+status);
return status;
}catch(Exception e){
......
package com.nisum.myteam.status.exceptions;
public class EmployeeNotFoundException extends RuntimeException {
public EmployeeNotFoundException(Integer id) {
super("Employee Id Not Found");
}
}
package com.nisum.myteam.status.service;
import java.time.LocalDate;
import java.util.List;
import com.nisum.myteam.status.model.Status;
public interface StatusService {
public Status saveStatusDetails(Status status);
public List<Status> findTodayStatus(String empId);
public List<Status> findTaskDataByTaskDate(String empId, LocalDate date);
public List<Status> getStatusDetailsByEmpId(String empId);
public List<Status> getByDateRange(LocalDate fromDate, LocalDate toDate, String empId);
public List<Status> getEmployeeStatusDetails();
public Status updateStatusDetails(Status status);
public void deleteEmployeeStatusDetails(Integer id);
public List<Status> getDefaultStatusDetails(String empId);
}
package com.nisum.myteam.status.util;
package com.nisum.myteam.utils;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Workbook;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Date;
public class FileUtil {
public class MyStatusFileUtil {
public static CellStyle cellStyleDate(Workbook workbook) {
try{
CellStyle cellStyle = workbook.createCellStyle();
......@@ -20,7 +20,7 @@ public class FileUtil {
}
}
public static String dateToStringFormatter(LocalDate date){
public static String dateToStringFormatter(Date date){
String strDate = "";
try{
if(date != null){
......
......@@ -77,5 +77,5 @@ myTeam.exemptHours.toemail=offshore_funtional_leads@nisum.com
email.exemptHours.notification.cron=00 00 09 * * 1-1
email.exempt.hours.employeelist.template.file.path=email/employeesExemptHours.html
spring.profiles.active=production
spring.profiles.active=development
message=this is from default configuration
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment