public void update(Product product, Product updatedProduct) {
		
		// Copy the fields.
		Field[] fields = product.getClass().getFields();
		for (Field f : fields) {
			if (!f.getName().equals("id")){
				try {
					f.set(product, f.get(updatedProduct));
				} catch (SecurityException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalArgumentException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
		// Only change status if it is fresh from the database.
		if (list.get(product) == Status.FRESH) {
			list.put(product, Status.UPDATED);
		}
		
		// Fire update event.
		if (productUpdatedListener != null){
			productUpdatedListener.actionPerformed(new ActionEvent(product, 0, null));
		}
		
	}