public boolean updateCustomer(String customerJSON) {
		// Read the JSON file and create the customer object
		ObjectMapper mapper = new ObjectMapper();
		Customer originalCustomer = null;
		boolean updateSuccessful = false;

		logger.info("Reading Update JSON !");

		try {
			customer = mapper.readValue(customerJSON, Customer.class);
		} catch (JsonGenerationException e) {
			logger.error("Json Generation Exception: " + e.getMessage());
			e.printStackTrace();

		} catch (JsonMappingException e) {
			logger.error("Json Mapping Exception: " + e.getMessage());
			e.printStackTrace();

		} catch (IOException e) {
			logger.error("IOException: " + e.getMessage());
			e.printStackTrace();
		}

		if(customer == null){
			logger.error("The customer update JSON could not be read");
			return updateSuccessful;
		}
		// Validate the input
		violations = validateCustomer(customer);

		if (!violations.isEmpty()) {
			Iterator<ConstraintViolation<Customer>> itr = violations.iterator();
			while (itr.hasNext()) {
				logger.error(itr.next().getMessage());
			}
			return updateSuccessful;
		}

		
		// Query the customer object from the DB
		if (customer.getId() != null && !customer.getId().trim().equals("")) {
			logger.info("CustomerId is [" + customer.getId() + "]");
			originalCustomer = customerDAO.getRecord(customer.getId());
		}

		
		if (originalCustomer != null) {

			// Update the customer object queried from the DB
			Name name = new Name();
			name.setFirst(customer.getName().getFirst());
			name.setLast(customer.getName().getLast());
			originalCustomer.setName(name);
			originalCustomer.setEmail(customer.getEmail());
			originalCustomer.setPhoneNumber(customer.getPhoneNumber());

			updateSuccessful = customerDAO.updateRecord(originalCustomer);
			
		} else {
			logger.error("The Customer getRecord method failed for CustomerId["+customer.getId()+"]");
			updateSuccessful = false;
		}

		return updateSuccessful;
	}