@Override @Transactional( readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class) public CollectionItem addResource(String collectionId, String resourceId, User user) { Collection collection = getCollectionDao().getCollectionByType(collectionId, COLLECTION_TYPES); rejectIfNull(collection, GL0056, 404, COLLECTION); Resource resource = getResourceBoService().getResource(resourceId); rejectIfNull(resource, GL0056, 404, RESOURCE); reject(!resource.getContentType().getName().equalsIgnoreCase(QUESTION), GL0056, 404, RESOURCE); updateCollectionMetaDataSummary(collection.getContentId(), RESOURCE, ADD); CollectionItem collectionItem = new CollectionItem(); getCollectionEventLog() .collectionItemEventLog( collectionId, collectionItem, user.getPartyUid(), RESOURCE, null, ADD); collectionItem.setItemType(ADDED); return createCollectionItem(collectionItem, collection, resource, user); }
@Override @Transactional( readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class) public void deleteCollectionItem(String collectionId, String collectionItemId, String userUid) { CollectionItem collectionItem = this.getCollectionDao().getCollectionItem(collectionItemId); rejectIfNull(collectionItem, GL0056, 404, _COLLECTION_ITEM); Resource resource = this.getResourceBoService().getResource(collectionItem.getContent().getGooruOid()); rejectIfNull(resource, GL0056, 404, RESOURCE); String contentType = resource.getContentType().getName(); Long collectionContentId = collectionItem.getCollection().getContentId(); this.resetSequence( collectionId, collectionItem.getCollectionItemId(), userUid, COLLECTION_ITEM); getCollectionEventLog() .collectionItemEventLog(collectionId, collectionItem, userUid, contentType, null, DELETE); if (contentType.equalsIgnoreCase(QUESTION)) { getCollectionDao().remove(resource); } else { getCollectionDao().remove(collectionItem); } updateCollectionMetaDataSummary(collectionContentId, RESOURCE, contentType); }