package com.ese.ils.beta.beans;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import org.icefaces.ace.event.SelectEvent;
import org.icefaces.ace.model.table.RowStateMap;
import com.ese.ils.beta.model.Favorite;
import com.ese.ils.beta.model.Slide;
import com.ese.ils.beta.service.FavoriteLocalServiceUtil;
import com.ese.ils.beta.service.SlideLocalServiceUtil;
import com.liferay.portal.kernel.dao.orm.DynamicQuery;
import com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil;
import com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.repository.model.FileEntry;
import com.liferay.portlet.documentlibrary.model.DLFileEntry;
import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
/**
* behandelt die Favoriten in einem Modul
* @author julien hofer
*
*/
@ManagedBean
@ViewScoped
public class DozentFavoriteBackingBean implements Serializable {
private static final long serialVersionUID = -4469569210586565019L;
private List<Favorite> favorits;
private List<Favorite> favoriteList;
private RowStateMap stateMap = new RowStateMap();
private long favoriteId;
private String slideURL;
private long userId;
private int countFavBySlide;
//Injection
@ManagedProperty(value="#{dozentLogicBean}")
private transient DozentLogicBean dozentLogicBean;
@ManagedProperty(value="#{slideBackingBean}")
private transient SlideBackingBean slideBackingBean;
/**
* holt die <code>userId</code> des angemeldeten Users
*/
public void fetchUserId() {
userId = dozentLogicBean.getUserId();
}
/**
* holt alle Favoriten eines bestimmten Moduls ueber die <code>moduleId</code>
* @param moduleId
*/
public void fetchFavoriteByModule(long moduleId) {
fetchUserId();
favoriteList = new ArrayList<Favorite>();
for(Favorite favorite : FavoriteLocalServiceUtil.fetchModuleFavorites(userId, moduleId)){
System.out.println("Slide Ids ****");
System.out.println(favorite.getSlideId());
favoriteList.add(favorite);
}
}
/**
* holt alle <code>descriptions</code> fuer den Mime-Typ 'image/png'
* @param event
*/
public void fetchDescription(ActionEvent event) {
try {
List<DLFileEntry> pngFiles = DLFileEntryLocalServiceUtil.getFileEntriesByMimeType("image/png");
DLFileEntry fileEntry = pngFiles.get(0);
String description = fileEntry.getDescription();
System.out.println(description);
} catch (SystemException e) {
e.printStackTrace();
}
}
/**
* holt die <code>slideId</code> fuer einen bestimmten Favoriten
* ueber die <code>favoriteId</code>
* @param favoriteId
* @return slideId
*/
public long fetchSlideIdForFavorite(long favoriteId) {
long slideId = -1;
try {
Favorite favorite = FavoriteLocalServiceUtil.getFavorite(favoriteId);
slideId = favorite.getSlideId();
} catch (PortalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return slideId;
}
/**
* holt die Anzahl der Favoriten fuer eine bestimmte Folie
* ueber die <code>slideId</code>
* @param slideId
* @return
*/
public int fetchFavoriteCountPerSlide(long slideId) {
int countFav = FavoriteLocalServiceUtil.countFavBySlideId(slideId);
return countFav;
}
/**
* gibt die URL der Folie anhand gegebener <code>slideId</code>
* zurueck
* @param slideId
* @return slideURL
*/
public String fetchFavoriteSlideURL(long slideId) {
String slideURL = null;
try {
Slide slide = SlideLocalServiceUtil.getSlide(slideId);
long fileEntryId = slide.getFileEntryId();
slideURL = slideBackingBean.getURL(fileEntryId);
countFavBySlide = fetchFavoriteCountPerSlide(slideId);
System.out.println("SlideId: " + slideId + " = " + countFavBySlide);
} catch (PortalException e) {
e.printStackTrace();
} catch (SystemException e) {
e.printStackTrace();
}
return slideURL;
}
/**
* dient zum Abfangen des Select Events
* @param event
*/
public void selectListener(SelectEvent event) {
addEvent((Favorite)event.getObject());
}
/**
* erstellt die <code>slideURL</code> je nach gewaehltem Eintrag aus der
* Favoriten Tabelle
* @param favorite
*/
public void addEvent(Favorite favorite) {
favoriteId = favorite.getFavoriteId();
System.out.println("FavoriteID: " + favoriteId);
long slideId = fetchSlideIdForFavorite(favoriteId);
System.out.println("SlideId: " + slideId);
slideURL = fetchFavoriteSlideURL(slideId);
}
//GETTER UND SETTER
public List<Favorite> getFavorits() {
return favorits;
}
public void setFavorits(List<Favorite> favorits) {
this.favorits = favorits;
}
public List<Favorite> getFavoriteList() {
return favoriteList;
}
public void setFavoriteList(List<Favorite> favoriteList) {
this.favoriteList = favoriteList;
}
public RowStateMap getStateMap() {
return stateMap;
}
public void setStateMap(RowStateMap stateMap) {
this.stateMap = stateMap;
}
public DozentLogicBean getDozentLogicBean() {
return dozentLogicBean;
}
public void setDozentLogicBean(DozentLogicBean dozentLogicBean) {
this.dozentLogicBean = dozentLogicBean;
}
public SlideBackingBean getSlideBackingBean() {
return slideBackingBean;
}
public void setSlideBackingBean(SlideBackingBean slideBackingBean) {
this.slideBackingBean = slideBackingBean;
}
public long getFavoriteId() {
return favoriteId;
}
public void setFavoriteId(long favoriteId) {
this.favoriteId = favoriteId;
}
public String getSlideURL() {
return slideURL;
}
public void setSlideURL(String slideURL) {
this.slideURL = slideURL;
}
public long getUserId() {
return userId;
}
public void setUserId(long userId) {
this.userId = userId;
}
public int getCountFavBySlide() {
return countFavBySlide;
}
public void setCountFavBySlide(int countFavBySlide) {
this.countFavBySlide = countFavBySlide;
}
}