Package com.sivalabs.jacksondemo.rest.endpoints

Source Code of com.sivalabs.jacksondemo.rest.endpoints.ContactRestController

/**
*
*/
package com.sivalabs.jacksondemo.rest.endpoints;

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

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

import com.sivalabs.jacksondemo.entities.Contact;
import com.sivalabs.jacksondemo.entities.User;
import com.sivalabs.jacksondemo.services.ContactService;
import com.sivalabs.jacksondemo.services.UserService;

/**
* @author Siva
*
*/
@RestController
@RequestMapping("/users/{userId}/contacts")
public class ContactRestController
{
  private static final String JSON_TYPE = MediaType.APPLICATION_JSON_VALUE;
  @Autowired
  private UserService userService;
  @Autowired
  private ContactService contactService;
 
  @RequestMapping(value="/{contactId}", method=RequestMethod.GET, produces=JSON_TYPE)
  public ResponseEntity<Contact> findContact(@PathVariable("contactId") Integer contactId) {
    Contact contact = contactService.findContactById(contactId);
    ResponseEntity<Contact> response = new ResponseEntity<>(getCopy(contact), HttpStatus.OK);
    return response;
  }
 
  @RequestMapping(value="", method=RequestMethod.GET, produces=JSON_TYPE)
  public ResponseEntity<List<Contact>> findContacts(@PathVariable("userId") Integer userId) {
    List<Contact> contacts = contactService.findUserContacts(userId);
    ResponseEntity<List<Contact>> response = new ResponseEntity<>(getCopy(contacts), HttpStatus.OK);
    return response;
  }
 
  @RequestMapping(value="", method=RequestMethod.POST, consumes=JSON_TYPE)
  public ResponseEntity<Void> createContact(@RequestBody Contact contact, @PathVariable("userId") Integer userId) {
    contact.setUser(new User(userId));
    contactService.createContact(contact);
    return new ResponseEntity<>(HttpStatus.CREATED);
  }
 
 
  @RequestMapping(value="", method=RequestMethod.PUT, consumes=JSON_TYPE)
  public ResponseEntity<Void> updateContact(@RequestBody Contact contact, @PathVariable("userId") Integer userId) {
    contact.setUser(new User(userId));
    contactService.updateContact(contact);
    return new ResponseEntity<>(HttpStatus.OK);
  }
 
  @RequestMapping(value="/{contactId}", method=RequestMethod.DELETE, consumes=JSON_TYPE)
  public ResponseEntity<Void> deleteContact(@PathVariable("contactId") Integer contactId) {
    contactService.deleteContact(contactId);
    return new ResponseEntity<>(HttpStatus.OK);
  }
 
  List<Contact> getCopy(List<Contact> contacts)
  {
    if(contacts == null){
      return null;
    }
    List<Contact> contactsCopy = new ArrayList<>();
    for (Contact contact : contacts) {
      contactsCopy.add(getCopy(contact));
    }
   
    return contactsCopy;
  }
  Contact getCopy(Contact contact)
  {
    if(contact == null){
      return contact;
    }
    Contact contactCopy = new Contact();
    contactCopy.setId(contact.getId());
    contactCopy.setFirstName(contact.getFirstName());
    contactCopy.setLastName(contact.getLastName());
    contactCopy.setEmail(contact.getEmail());
    contactCopy.setPhone(contact.getPhone());
    contactCopy.setDob(contact.getDob());
   
    return contactCopy;
  }
}
TOP

Related Classes of com.sivalabs.jacksondemo.rest.endpoints.ContactRestController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.