@Transactional(readOnly = false) @RequestMapping( value = "/editcontact", method = {RequestMethod.POST, RequestMethod.GET}) public void contacteditor( @RequestParam String oper, @RequestParam long ID, Contact contact, BindingResult result, HttpServletResponse response) throws IOException { if (result.hasErrors()) { response.sendError(400, result.toString()); return; } switch (oper) { case "add": { Counterparty counterparty = counterpartyRepository.findOne(ID); if (counterparty != null) { counterparty.addContact(contact); contactRepository.save(contact); counterpartyRepository.save(counterparty); response.setStatus(200); } else { response.sendError(404, "NO COUNTERPART WITH ID " + ID + " FOUND"); } } break; case "edit": { Contact agr = contactRepository.findOne(contact.getId()); if (agr != null && agr.getVersion() <= contact.getVersion()) { agr.setContact(contact.getContact()); agr.setContactType(contact.getContactType()); contactRepository.save(agr); response.setStatus(200); } else { response.sendError(404, "NO Agreement WITH ID " + contact.getId() + " FOUND"); } } break; case "del": { Counterparty counterparty = counterpartyRepository.findOne(ID); if (counterparty != null) { Contact agr = contactRepository.findOne(contact.getId()); if (agr != null) { counterparty.removeContact(agr); contactRepository.delete(agr); counterpartyRepository.save(counterparty); response.setStatus(200); } else { response.sendError(404, "NO Agreement WITH ID " + contact.getId() + " FOUND"); } } else { response.sendError(404, "NO COUNTERPART WITH ID " + ID + " FOUND"); } } break; default: response.sendError(406, "UNKNOWN OPERATION"); } }