public void update(Collection collection) throws EntityDoesNotExistException, InvalidEntityException { this.dao.begin(); Collection originalCollection = this.dao.findBySlug(collection.getSlug(), getTenant()); if (originalCollection == null) { this.dao.commit(); throw new EntityDoesNotExistException(); } collection.setId(originalCollection.getId()); Integer updatedRows = this.dao.update(collection); if (collection.getLocalizedVersions() != null && !collection.getLocalizedVersions().isEmpty()) { Map<Locale, Map<String, Object>> localizedVersions = collection.getLocalizedVersions(); for (Locale locale : localizedVersions.keySet()) { this.dao.createOrUpdateTranslation( collection.getId(), locale, localizedVersions.get(locale)); } } this.dao.commit(); if (updatedRows <= 0) { throw new StoreException("No rows was updated when updating collection"); } getObservationManager().notify(new EntityUpdatedEvent(), collection); }
public Collection create(Collection collection) throws EntityAlreadyExistsException, InvalidEntityException { if (this.dao.findBySlug(collection.getSlug(), getTenant()) != null) { throw new EntityAlreadyExistsException(); } getObservationManager().notify(new EntityCreatingEvent(), collection); this.dao.begin(); UUID entityId = UUID.randomUUID(); collection.setId(entityId); this.dao.createEntity(collection, COLLECTION_TABLE_NAME, getTenant()); Integer lastIndex = this.dao.lastPosition(getTenant()); this.dao.create(lastIndex == null ? 0 : ++lastIndex, collection); // this.dao.insertTranslations(entityId, collection.getTranslations()); this.dao.commit(); getObservationManager().notify(new EntityCreatedEvent(), collection); return collection; }