package be.redtree.bean;
import java.io.Serializable;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.primefaces.model.chart.PieChartModel;
import org.primefaces.model.tagcloud.DefaultTagCloudItem;
import org.primefaces.model.tagcloud.DefaultTagCloudModel;
import org.primefaces.model.tagcloud.TagCloudModel;
import com.liferay.portlet.documentlibrary.model.DLFileEntry;
import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
import be.redtree.model.FieldResult;
import be.redtree.model.ResultItem;
import be.redtree.sql.FormController;
@ManagedBean
@ViewScoped
public class GraphicBean implements Serializable {
private static Log sLog = LogFactory.getLog(GraphicBean.class);
private FormController formController = new FormController();
public GraphicBean() {
}
public TagCloudModel getTagCloud(Long id) {
List<FieldResult> fieldResults = formController.getFieldResults(id);
Map<String, Integer> results = new HashMap<String, Integer>();
for (FieldResult fieldResult : fieldResults) {
String value = fieldResult.getContent();
if (value != null && !value.isEmpty()) {
if (results.containsKey(value)) {
Integer count = results.get(fieldResult.getContent());
count++;
results.put(value, count);
} else {
results.put(value, 1);
}
}
}
TagCloudModel tagModel = new DefaultTagCloudModel();
Iterator<Entry<String, Integer>> itr = results.entrySet().iterator();
while (itr.hasNext()) {
Entry<String, Integer> entry = itr.next();
tagModel.addTag(new DefaultTagCloudItem(entry.getKey(), entry.getValue()));
}
return tagModel;
}
public PieChartModel getPieChart(Long id) {
List<FieldResult> fieldResults = formController.getFieldResults(id);
Map<String, Integer> results = new HashMap<String, Integer>();
for (FieldResult fieldResult : fieldResults) {
String value = fieldResult.getContent();
if (results.containsKey(value)) {
Integer count = results.get(fieldResult.getContent());
count++;
results.put(value, count);
} else {
results.put(value, 1);
}
}
PieChartModel pieChartModel = new PieChartModel();
Iterator<Entry<String, Integer>> itr = results.entrySet().iterator();
while (itr.hasNext()) {
Entry<String, Integer> entry = itr.next();
pieChartModel.set(entry.getKey() + " (" + entry.getValue() + ")", entry.getValue());
}
return pieChartModel;
}
public List<ResultItem> getTextList(Long id) {
List<FieldResult> fieldResults = formController.getFieldResults(id);
List<ResultItem> resultItems = new ArrayList<ResultItem>();
for (FieldResult fieldResult : fieldResults) {
if (fieldResult.getContent() != null && !fieldResult.getContent().isEmpty()) {
Date date = fieldResult.getResult().getCreated();
resultItems.add(new ResultItem(date, fieldResult.getContent()));
}
}
return resultItems;
}
public List<ResultItem> getUploadList(Long id) {
List<FieldResult> fieldResults = formController.getFieldResults(id);
List<ResultItem> resultItems = new ArrayList<ResultItem>();
for (FieldResult fieldResult : fieldResults) {
if (fieldResult.getContent() != null && !fieldResult.getContent().isEmpty()) {
Date date = fieldResult.getResult().getCreated();
List<ResultItem> items = new ArrayList<ResultItem>();
for (String fileEntryId : fieldResult.getContent().split("\\,")) {
try {
DLFileEntry dlFileEntry = DLFileEntryLocalServiceUtil.getDLFileEntry(new Long(fileEntryId));
String name = dlFileEntry.getTitle();
String content = "/../documents/" + dlFileEntry.getGroupId() + "/" + dlFileEntry.getFolderId() + "/" + URLEncoder.encode(dlFileEntry.getTitle(), "UTF-8") + "/" + dlFileEntry.getUuid();
items.add(new ResultItem(name, content));
} catch (Exception e) {
e.printStackTrace();
}
}
resultItems.add(new ResultItem(date, items));
}
}
return resultItems;
}
}