Untitled

 avatar
unknown
plain_text
2 years ago
9.5 kB
2
Indexable
FoodProductServiceImpl

package com.org.foodapp.serviceImpl;

import java.util.Locale.Category;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;

import com.org.foodapp.JWT.JwtFilter;
import com.org.foodapp.POJO.FoodProduct;
import com.org.foodapp.constents.FoodConstants;
import com.org.foodapp.dao.FoodProductDao;
import com.org.foodapp.service.FoodProductService;
import com.org.foodapp.utils.FoodUtils;
import com.org.foodapp.wrapper.FoodProductWrapper;

@Service
public class FoodProductServiceImpl implements FoodProductService {
	
	@Autowired
	FoodProductDao foodProductDao;
	
	
	@Autowired
	JwtFilter jwtFilter;
	
	@Override
	public 	ResponseEntity<String>addNewProduct(Map<String , String> requestMap){
		try {
			if(jwtFilter.isAdmin()) {
				if(validateProductMap(requestMap,false)) {
					foodProductDao.save(getProductFromMap(requestMap, false));
					return FoodUtils.getResponseEntity("Product Added Successfully.", HttpStatus.OK);
				}
				return FoodUtils.getResponseEntity(FoodConstants.INVALID_DATA, HttpStatus.BAD_REQUEST);
			}
			else
				return FoodUtils.getResponseEntity(FoodConstants.UNAUTHORIZED_ACCESS, HttpStatus.UNAUTHORIZED);
		}catch(Exception ex) {
			ex.printStackTrace();
		}
		return FoodUtils.getResponseEntity(FoodConstants.SOMETHING_WENT_WRONG,HttpStatus.INTERNAL_SERVER_ERROR) ;
	}
	private FoodProduct getProductFromMap(Map<String, String>requestMap, boolean isAdd) {
		Category category = new Category();
		category.setId(Integer.parseInt(requestMap.get("categoryId")));
		
		FoodProduct foodproduct = new FoodProduct();
		if(isAdd) {
			foodproduct.setId(Integer.parseInt(requestMap.get("id")));
		}else {
			foodproduct.setStatus("true");
		}
		foodproduct.setCategory(category);
		foodproduct.setName(requestMap.get("name"));
		foodproduct.setDescription(requestMap.get("description"));
		foodproduct.setPrice(Integer.parseInt(requestMap.get("price")));
		return foodproduct;

	}
	private boolean validateProductMap(Map<String, String> requestMap,boolean validateId) {
		if(requestMap.containsKey("name")) {
		if(requestMap.containsKey("id") && validateId) {
			return true;
			}
		    else if(!validateId) {
				return true;
			}
		return false;
	   }
	    @Override
		public 	ResponseEntity<List<FoodProductWrapper>> getAllProduct(){
			try {
				return new ResponseEntity<>(FoodProductDao.getAllProduct(),HttpStatus.OK);
			}catch (Exception ex) {
				ex.printStackTrace();
			}
			return new ResponseEntity<>(new ArrayList<>(), HttpStatus.INTERNAL_SERVER_ERROR);
		}
		@Override
		public 	ResponseEntity<String> updateProduct(Map<String,String> RequestMap ){
			try {
				return FoodProductService.updateProduct(requestMap);
			}catch (Exception ex) {
				ex.printStackTrace();
			}
		}
		@Override
		public ResponseEntity<String>updateProduct(Map<String, String> requestMap){
			try {
				if(jwtFilter.isAdmin()) {
					if(validateProductMap(requestMap,true)) {
					Optional<Product> optional=	foodProductDao.findById(Integer.parseInt(requestMap.get("id")));
					if(!optional.isEmpty()) {
						Product product = getProductFromMap(requestMap, true);
						product.setStatus(optional.get().getStatus());
						productDao.save(product);
						return FoodUtils.getResponseEntity("Product updated successfully",HttpStatus.OK);
					}
					else {
						return FoodUtils.getResponseEntity("product id does not exist.",HttpStatus.OK);
					}
					}else {
						return FoodUtils.getResponseEntity(FoodConstants.INVALID_DATA,HttpStatus.BAD_REQUEST);
					}
				}
				else {
					return FoodUtils.getResponseEntity(FoodConstants.UNAUTHORIZED_ACCESS,HttpStatus.UNAUTHORIZED);
				}
				
			}catch(Exception ex) {
				ex.printStackTrace();
			}
			return FoodUtils.getResponseEntity(FoodConstants.SOMETHING_WENT_WRONG,HttpStatus.INTERNAL_SERVER_ERROR);
			
		}


	}

}






FoodProductWrapper





package com.org.foodapp.wrapper;

import lombok.Data;

@Data

public class FoodProductWrapper {
	
	Integer id;
	String name;
	String description;
	Integer price;
	String status;
	Integer categoryId;
	String categoryName;
	public FoodProductWrapper() {
		
	}
	
    public FoodProductWrapper(Integer id,String name, String description,Integer price,String status,Integer categoryId,String categoryName) {
    	this.id=id;
    	this.name=name;
    	this.description=description;
    	this.price=price;
    	this.status=status;
    	this.categoryId=categoryId;
    	this.categoryName=categoryName;
    	
    }
}




FoodProductService


package com.org.foodapp.service;

import java.util.List;
import java.util.Map;

import org.springframework.http.ResponseEntity;

import com.org.foodapp.wrapper.FoodProductWrapper;

public interface FoodProductService {
   
	ResponseEntity<String>addNewProduct(Map<String , String> requestMap);
	
	ResponseEntity<List<FoodProductWrapper>>getAllProduct();
	
	ResponseEntity<String>updateProduct(Map<String,String>requestMap);
}




FoodProductRestImpl


package com.org.foodapp.restImpl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.org.foodapp.constents.FoodConstants;
import com.org.foodapp.rest.FoodProductRest;
import com.org.foodapp.service.FoodProductService;
import com.org.foodapp.utils.FoodUtils;
import com.org.foodapp.wrapper.FoodProductWrapper;
@RestController
public class FoodProductRestImpl  implements FoodProductRest{
	
	
	@Autowired
	FoodProductService foodProductService;
	
	@Override
	public 	ResponseEntity<String> addNewProduct(@RequestBody Map<String,String> RequestMap ){
		try {
			return FoodProductService.addNewProduct(requestMap);
		}catch(Exception ex) {
			ex.printStackTrace();
		}
		return FoodUtils.getResponseEntity(FoodConstants.SOMETHING_WENT_WRONG,HttpStatus.INTERNAL_SERVER_ERROR);
	}
	
	@Override
	public ResponseEntity<List<FoodProductWrapper>>getAllProduct(){
		try {
			return FoodProductService.getAllProduct();
		}catch(Exception ex) {
			ex.printStackTrace();
		}
		return new ResponseEntity<>(new ArrayList<>(),HttpStatus.INTERNAL_SERVER_ERROR);
	}


}


}





FoodProductRest


package com.org.foodapp.rest;

import java.util.List;
import java.util.Map;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import com.org.foodapp.wrapper.FoodProductWrapper;



@RequestMapping(path = "/foodproduct")
public interface FoodProductRest {

	@PostMapping(path="/add")
	ResponseEntity<String> addNewProduct(@RequestBody Map<String,String> RequestMap );
	
	@GetMapping(path="/get")
	ResponseEntity<List<FoodProductWrapper>>getAllProduct();
	
	@PostMapping(path="/update")
	ResponseEntity<String> updateProduct(@RequestBody Map<String,String> RequestMap );
	
}





FoodProduct



package com.org.foodapp.POJO;

import java.io.Serializable;
import java.util.Locale.Category;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;

import lombok.Data;


@NamedQuery(name= "product.getAllProduct", query= "select new com.org.foodapp.wrapper.FoodProductWrapper(p.id,p.name,p.description,p.price,p.status,p.category.id,p.category.name) from Product p")
@Data
@Entity
@DynamicInsert
@DynamicUpdate
@Table(name= "foodproduct")
public class FoodProduct implements Serializable {
	public static final long serialVersionUid = 1234456L;
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	
	@Column(name = "id")
	private Integer id;
	
	@Column(name = "name")
	private String name;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "category_fk", nullable = false)
	private Category category;
	
	@Column(name="description")
	private String description;
	
     @Column(name = "price")
     private Integer price;
     
     @Column(name="status")
     private String status;
}




FoodProductDao


package com.org.foodapp.dao;

import java.util.List;

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

import com.org.foodapp.POJO.FoodProduct;
import com.org.foodapp.wrapper.FoodProductWrapper;

public interface FoodProductDao extends JpaRepository<FoodProduct, Integer> {

	List<FoodProductWrapper>getAllProduct();
	
}



FoodProductConstants


package com.org.foodapp.constents;

public class FoodConstants {
	public static final String SOMETHING_WENT_WRONG ="Something went wrong.";
	 
	public static final String INVALID_DATA = "Invalid data.";
	
	public static final String UNAUTHORIZED_ACCESS = "Unauthorized access.";


}