package no.dusken.aranea.admin.control;
import no.dusken.aranea.model.Image;
import no.dusken.aranea.model.PageImage;
import no.dusken.aranea.model.Person;
import no.dusken.aranea.service.PersonService;
import no.dusken.aranea.service.StoreImageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
* @author Marvin B. Lillehaug <lillehau@underdusken.no>
*/
public class PageImageOnSubmit {
private PersonService personService;
private StoreImageService storeImageService;
public PageImage handlePageImageSubmit(PageImage pageImage, HttpServletRequest request) throws IOException {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile file = multipartRequest.getFile("file");
if (file != null && file.getSize() > 0) {
Image image = storeImageService.createImage(file);
// is illustration?
Boolean illustration = ServletRequestUtils.getBooleanParameter(
multipartRequest, "illustration", false);
image.setIllustration(illustration);
image.setDescription(ServletRequestUtils.getStringParameter(request, "description", ""));
// set the author
Long authorID = ServletRequestUtils.getLongParameter(multipartRequest,
"photographer", 0L);
Person person = personService.getEntity(authorID);
image.setPhotographer(person);
if (person == null) {
image.setExternalSource(ServletRequestUtils
.getStringParameter(multipartRequest, "external_source",
"missing external source"));
}
//so that, if the person forget to set paragraph all images doesnt have paragraph 1.
pageImage.setParagraph(pageImage.getPage().getPageImages().size() + 1);
pageImage.setImage(image);
}
return pageImage;
}
@Autowired
public void setPersonService(PersonService personService) {
this.personService = personService;
}
@Autowired
public void setStoreImageService(StoreImageService storeImageService) {
this.storeImageService = storeImageService;
}
}