Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package edu.asu.diging.vspace.core.services;

import edu.asu.diging.vspace.core.exception.BlockDoesNotExistException;
import edu.asu.diging.vspace.core.model.IBiblioBlock;
import edu.asu.diging.vspace.core.model.impl.BiblioBlock;

public interface IBiblioBlockManager extends IGenericContentBlockManager<IBiblioBlock> {

IBiblioBlock createBiblioBlock(String slideId, String title, String description);

void deleteBiblioBlockById(String id) throws BlockDoesNotExistException;

void updateBiblioBlock(BiblioBlock biblioBlock);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package edu.asu.diging.vspace.core.services;

import java.util.List;

import edu.asu.diging.vspace.core.model.IChoiceBlock;

public interface IChoiceBlockManager extends IGenericContentBlockManager<IChoiceBlock> {

IChoiceBlock createChoiceBlock(String slideId, List<String> selectedChoices, boolean showsAll);
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,17 @@

public interface IContentBlockManager {

IBiblioBlock createBiblioBlock(String slideId, String title, String description, Integer contentOrder);
IBiblioBlock createBiblioBlock(String slideId, String title, String description);

List<IContentBlock> getAllContentBlocks(String slideId);

ITextBlock createTextBlock(String slideId, String content, Integer contentOrder);
ITextBlock createTextBlock(String slideId, String content);

CreationReturnValue createImageBlock(String slideId, byte[] image, String filename, Integer contentOrder) throws ImageCouldNotBeStoredException;
CreationReturnValue createImageBlock(String slideId, byte[] image, String filename) throws ImageCouldNotBeStoredException;

CreationReturnValue createImageBlock(String slideId, IVSImage image, Integer contentOrder);
CreationReturnValue createImageBlock(String slideId, IVSImage image);

public CreationReturnValue createVideoBlock(String slideId, byte[] video, Long size, String fileName, String url, Integer contentOrder, String title) throws VideoCouldNotBeStoredException;
public CreationReturnValue createVideoBlock(String slideId, byte[] video, Long size, String fileName, String url, String title) throws VideoCouldNotBeStoredException;

void deleteTextBlockById(String blockid, String slideId) throws BlockDoesNotExistException;

Expand Down Expand Up @@ -65,11 +65,11 @@ public interface IContentBlockManager {

void updateVideoBlock(IVideoBlock videoBlock, byte[] video, Long fileSize, String url, String filename, String title) throws VideoCouldNotBeStoredException;

IChoiceBlock createChoiceBlock(String slideId, List<String> selectedChoices, Integer contentOrder, boolean showsAll);
IChoiceBlock createChoiceBlock(String slideId, List<String> selectedChoices, boolean showsAll);

Integer findMaxContentOrder(String slideId);

ISpaceBlock createSpaceBlock(String slideId, String title, Integer contentOrder, ISpace space);
ISpaceBlock createSpaceBlock(String slideId, String title, ISpace space);

ISpaceBlock getSpaceBlock(String spaceBlockId);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package edu.asu.diging.vspace.core.services;

import edu.asu.diging.vspace.core.exception.BlockDoesNotExistException;
import edu.asu.diging.vspace.core.model.IContentBlock;

public interface IGenericContentBlockManager<T extends IContentBlock> {

T createContentBlock(String slideId);

void updateContentBlock(T contentBlock);

T getContentBlock(String blockId);

void deleteContentBlock(String blockId, String slideId) throws BlockDoesNotExistException;

void saveContentBlock(T contentBlock);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package edu.asu.diging.vspace.core.services;

import edu.asu.diging.vspace.core.exception.ImageCouldNotBeStoredException;
import edu.asu.diging.vspace.core.model.IImageBlock;
import edu.asu.diging.vspace.core.model.IVSImage;
import edu.asu.diging.vspace.core.services.impl.CreationReturnValue;

public interface IImageBlockManager extends IGenericContentBlockManager<IImageBlock> {

CreationReturnValue createImageBlock(String slideId, byte[] image, String filename)
throws ImageCouldNotBeStoredException;

CreationReturnValue createImageBlock(String slideId, IVSImage image);

void updateImageBlock(IImageBlock imageBlock, byte[] image, String filename)
throws ImageCouldNotBeStoredException;

void updateImageBlock(IImageBlock imageBlock, IVSImage image);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package edu.asu.diging.vspace.core.services;

import edu.asu.diging.vspace.core.model.ISpace;
import edu.asu.diging.vspace.core.model.ISpaceBlock;

public interface ISpaceBlockManager extends IGenericContentBlockManager<ISpaceBlock> {

ISpaceBlock createSpaceBlock(String slideId, String title, ISpace space);

void saveSpaceBlock(ISpaceBlock spaceBlock);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package edu.asu.diging.vspace.core.services;

import edu.asu.diging.vspace.core.model.ITextBlock;
import edu.asu.diging.vspace.core.model.impl.TextBlock;

public interface ITextBlockManager extends IGenericContentBlockManager<ITextBlock> {

ITextBlock createTextBlock(String slideId, String text);

void updateTextBlock(TextBlock textBlock);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package edu.asu.diging.vspace.core.services;

import edu.asu.diging.vspace.core.exception.VideoCouldNotBeStoredException;
import edu.asu.diging.vspace.core.model.IVideoBlock;
import edu.asu.diging.vspace.core.services.impl.CreationReturnValue;

public interface IVideoBlockManager extends IGenericContentBlockManager<IVideoBlock> {

CreationReturnValue createVideoBlock(String slideId, byte[] video, Long size, String fileName,
String url, String title) throws VideoCouldNotBeStoredException;

void updateVideoBlock(IVideoBlock videoBlock, byte[] video, Long fileSize, String url,
String filename, String title) throws VideoCouldNotBeStoredException;

void saveVideoBlock(IVideoBlock videoBlock);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package edu.asu.diging.vspace.core.services.impl;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import edu.asu.diging.vspace.core.data.BiblioBlockRepository;
import edu.asu.diging.vspace.core.exception.BlockDoesNotExistException;
import edu.asu.diging.vspace.core.model.IBiblioBlock;
import edu.asu.diging.vspace.core.model.ISlide;
import edu.asu.diging.vspace.core.model.impl.BiblioBlock;
import edu.asu.diging.vspace.core.services.IBiblioBlockManager;

@Service
public class BiblioBlockManager extends GenericContentBlockManager<IBiblioBlock, BiblioBlockRepository>
implements IBiblioBlockManager {

private final Logger logger = LoggerFactory.getLogger(getClass());

@Autowired
private BiblioBlockRepository biblioBlockRepo;

@Override
protected BiblioBlockRepository getRepository() {
return biblioBlockRepo;
}

@Override
public IBiblioBlock createContentBlock(String slideId) {
return createBiblioBlock(slideId, "Default Bibliography", "Default Description");
}

@Override
public IBiblioBlock createBiblioBlock(String slideId, String title, String description) {
ISlide slide = slideManager.getSlide(slideId);
Integer contentOrder = getNextContentOrder(slideId);

IBiblioBlock biblioBlock = new BiblioBlock();
biblioBlock.setDescription(description);
biblioBlock.setBiblioTitle(title);
biblioBlock.setSlide(slide);
biblioBlock.setContentOrder(contentOrder);
return biblioBlockRepo.save((BiblioBlock) biblioBlock);
}

@Override
public void deleteBiblioBlockById(String id) throws BlockDoesNotExistException {
if (id == null) {
logger.warn("Attempted to delete biblio block with null id.");
return;
}

try {
biblioBlockRepo.deleteById(id);
} catch (IllegalArgumentException e) {
throw new BlockDoesNotExistException("Biblio block with id " + id + " does not exist.", e);
}
}

@Override
public void updateContentBlock(IBiblioBlock biblioBlock) {
updateBiblioBlock((BiblioBlock) biblioBlock);
}

@Override
public void updateBiblioBlock(BiblioBlock biblioBlock) {
biblioBlockRepo.save(biblioBlock);
}

@Override
public void saveContentBlock(IBiblioBlock biblioBlock) {
biblioBlockRepo.save((BiblioBlock) biblioBlock);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package edu.asu.diging.vspace.core.services.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import edu.asu.diging.vspace.core.data.ChoiceContentBlockRepository;
import edu.asu.diging.vspace.core.factory.IChoiceBlockFactory;
import edu.asu.diging.vspace.core.model.IChoice;
import edu.asu.diging.vspace.core.model.IChoiceBlock;
import edu.asu.diging.vspace.core.model.impl.ChoiceBlock;
import edu.asu.diging.vspace.core.services.IChoiceBlockManager;

@Service
public class ChoiceBlockManager extends GenericContentBlockManager<IChoiceBlock, ChoiceContentBlockRepository>
implements IChoiceBlockManager {

@Autowired
private IChoiceBlockFactory choiceBlockFactory;

@Autowired
private ChoiceContentBlockRepository choiceBlockRepo;

@Override
protected ChoiceContentBlockRepository getRepository() {
return choiceBlockRepo;
}

@Override
public IChoiceBlock createContentBlock(String slideId) {
return createChoiceBlock(slideId, new ArrayList<>(), true);
}

@Override
public IChoiceBlock createChoiceBlock(String slideId, List<String> selectedChoices, boolean showsAll) {
Integer contentOrder = getNextContentOrder(slideId);

List<IChoice> choices = new ArrayList<IChoice>();
if (!showsAll) {
choices = selectedChoices.stream()
.map(choice -> slideManager.getChoice(choice))
.collect(Collectors.toList());
}

IChoiceBlock choiceBlock = choiceBlockFactory.createChoiceBlock(
slideManager.getSlide(slideId),
contentOrder,
choices,
showsAll
);
return choiceBlockRepo.save((ChoiceBlock) choiceBlock);
}

@Override
public void updateContentBlock(IChoiceBlock choiceBlock) {
choiceBlockRepo.save((ChoiceBlock) choiceBlock);
}

@Override
public void saveContentBlock(IChoiceBlock choiceBlock) {
choiceBlockRepo.save((ChoiceBlock) choiceBlock);
}
}
Loading