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; } }