@Override
 @Transactional(
     readOnly = false,
     propagation = Propagation.REQUIRED,
     rollbackFor = Exception.class)
 public void updateCollectionItem(
     String collectionId,
     final String collectionItemId,
     CollectionItem newCollectionItem,
     User user) {
   final CollectionItem collectionItem =
       this.getCollectionDao().getCollectionItem(collectionItemId);
   rejectIfNull(collectionItem, GL0056, 404, _COLLECTION_ITEM);
   if (newCollectionItem.getNarration() != null) {
     collectionItem.setNarration(newCollectionItem.getNarration());
   }
   if (newCollectionItem.getStart() != null) {
     collectionItem.setStart(newCollectionItem.getStart());
   }
   if (newCollectionItem.getStop() != null) {
     collectionItem.setStop(newCollectionItem.getStop());
   }
   if (newCollectionItem.getPosition() != null) {
     Collection parentCollection =
         getCollectionDao().getCollectionByUser(collectionId, user.getPartyUid());
     this.resetSequence(
         parentCollection,
         collectionItem.getCollectionItemId(),
         newCollectionItem.getPosition(),
         user.getPartyUid(),
         COLLECTION_ITEM);
   }
   this.getCollectionDao().save(collectionItem);
 }