// Если тэга с таким именем не было - просто создается, если был, но был удален без очистки линков // - восстанавливается // Если имя тэга уникально, при попытке добавления такого-же будет ошибка public void create(String name, Long pkId) { if (adminService.tarifIsNotExpired(pkId)) { boolean unique = true; boolean deleted = false; Tag existingTag = getTagByNameAndPkId(name, pkId); Tag deletedTag = getDeletedTagByNameAndPkId(name, pkId); if (existingTag != null) { unique = false; if (deletedTag != null) { deleted = true; } } if (unique) { Tag tag = new Tag(); tag.setCabinet(pkDao.find(pkId)); tag.setName(name); if (validate(tag)) { tagDao.save(tag); } } else { if (deleted) { deletedTag.setDeleteDate(null); if (validate(deletedTag)) { tagDao.update(deletedTag); } } else { addError("Такой тэг уже есть"); } } } else { addError("Не удалось добваить тэг в связи с ограничениями тарифа"); } }
public void changeName(Long tagId, String newName, Long pkId) { if (tagId != null && newName != null && pkId != null) { Tag tag = tagDao.find(tagId); boolean unique = true; boolean deleted = false; Tag existingTag = getTagByNameAndPkId(newName, pkId); Tag deletedTag = getDeletedTagByNameAndPkId(newName, pkId); if (existingTag != null) { unique = false; ; if (deletedTag != null) { deleted = true; } } if (unique) { if (tag != null) { tag.setName(newName); if (validate(tag)) { tagDao.update(tag); } } else { addError("Не удалось найти тэг"); } } else { if (deleted) { tagDao.delete(deletedTag); tag.setName(newName); if (validate(tag)) { tagDao.update(tag); } } else { addError("Такой тэг уже есть"); } } } else { if (tagId == null) { addError("Ид тэга не получен"); } if (newName == null) { addError("Имя не получено"); } if (pkId == null) { addError("Ошибка личного кабинета"); } } }