MediaService.java
package sk.iway.iwcm.editor.service;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Service;
import org.springframework.web.context.annotation.RequestScope;
import sk.iway.iwcm.Identity;
import sk.iway.iwcm.Logger;
import sk.iway.iwcm.common.CloudToolsForCore;
import sk.iway.iwcm.components.media.MediaRepository;
import sk.iway.iwcm.doc.DocDB;
import sk.iway.iwcm.users.UsersDB;
import sk.iway.spirit.MediaDB;
import sk.iway.spirit.model.Media;
/**
* Praca s mediami vo web stranke
*/
@Service
@RequestScope
public class MediaService {
private MediaRepository mediaRepo;
private HttpServletRequest request;
private Identity user;
public MediaService(MediaRepository mediaRepo, HttpServletRequest request) {
this.mediaRepo = mediaRepo;
this.request = request;
this.user = UsersDB.getCurrentUser(request);
}
/**
* V novo vytvorenej stranke sa media ukladaju s hodnotou -user_id, po ulozeni je potrebne im nastavit doc_id hodnotu
* @param docId
*/
public void assignDocIdToMedia(int docId) {
if (docId > 0) {
//find media with media_fk_table_name = "documents_temp" and media_fk_id = userId
MediaDB mediaDB = new MediaDB();
List<Media> mediaList = MediaDB.getMedia(request.getSession(), "documents_temp", user.getUserId(), null, 0, false);
//ak som nasiel take media, tak im priradim spravne media_fk_id a media_fk_table_name
if (mediaList != null && mediaList.isEmpty()==false) {
for (Media media : mediaList) {
try {
media.setMediaFkId(Integer.valueOf(docId));
media.setMediaFkTableName("documents");
mediaDB.save(media);
} catch (Exception e) {
Logger.println(MediaService.class, "editor.save.mediaError");
}
}
}
}
}
/**
* Zmaze v databaze docasne media (ulozene ako -user_id) ak novo vytvorena stranka nebola ulozena
*/
public void deleteTempMedia(){
try {
MediaDB mediaDB = new MediaDB();
List<Media> mediaList = MediaDB.getMedia(request.getSession(), "documents_temp", user.getUserId(), null, 0, false);
// ak som nasiel take media, tak im priradim spravne media_fk_id a
// media_fk_table_name
if (mediaList != null && mediaList.isEmpty()==false) {
for (Media media : mediaList) {
mediaDB.delete(media);
}
}
} catch (Exception e) {
Logger.println(MediaService.class, "ERROR: Nastal problem pri mazani docasne ulozenych medii");
}
}
/**
* Pri premenovani URL adresy aktualizuje zaznamy v databaze na novu hodnotu
* @param oldLinkURL
* @param newLinkURL
* @param domain
*/
public void updateMediaLink(String oldLinkURL, String newLinkURL, String domain) {
DocDB docDB = DocDB.getInstance();
if(domain != null) {
List<Long> mediasIdsAll = mediaRepo.findMediaIds(oldLinkURL, "documents");
List<Long> mediasIdsFiltered = new ArrayList<>();
//ponechaj len tie, v aktualnej domene
for(Long id : mediasIdsAll) {
String docDomain = docDB.getDomain(id.intValue());
if (docDomain.equals(domain)) {
mediasIdsFiltered.add(id);
}
}
if(mediasIdsFiltered.isEmpty() == false) {
mediaRepo.updateMedia(newLinkURL, oldLinkURL, mediasIdsFiltered);
}
} else {
mediaRepo.updateMedia(newLinkURL, oldLinkURL);
}
}
public List<Media> getAllMedia(Integer mediaFkId, String mediaFkTableName) {
return mediaRepo.findAllByMediaFkIdAndMediaFkTableNameAndDomainId(mediaFkId, mediaFkTableName, CloudToolsForCore.getDomainId());
}
}