package org.sakaiproject.tool.assessment.ui.listener.delivery; import java.util.ArrayList; import java.util.Formatter; import java.util.Iterator; import java.util.Set; import javax.faces.event.AbortProcessingException; import javax.faces.event.ActionEvent; import javax.faces.event.ActionListener; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.sakaiproject.tool.assessment.data.dao.grading.ItemGradingData; import org.sakaiproject.tool.assessment.data.ifc.assessment.ItemDataIfc; import org.sakaiproject.tool.assessment.ui.bean.delivery.DeliveryBean; import org.sakaiproject.tool.assessment.ui.bean.delivery.ItemContentsBean; import org.sakaiproject.tool.assessment.ui.bean.delivery.SectionContentsBean; import org.sakaiproject.tool.assessment.ui.listener.util.ContextUtil; public class SaCharCountListener implements ActionListener { private static Log log = LogFactory.getLog(SaCharCountListener.class); public void processAction(ActionEvent ae) throws AbortProcessingException { DeliveryBean delivery = (DeliveryBean) ContextUtil.lookupBean("delivery"); String itemId = ContextUtil.lookupParam("itemId"); if (itemId == null) { return; } StringBuffer redrawAnchorName = new StringBuffer("p"); Iterator iter = delivery.getPageContents().getPartsContents().iterator(); while (iter.hasNext()) { SectionContentsBean part = (SectionContentsBean) iter.next(); String partSeq = part.getNumber(); redrawAnchorName.append(partSeq); Iterator iter2 = part.getItemContents().iterator(); while (iter2.hasNext()) { ItemContentsBean item = (ItemContentsBean) iter2.next(); ItemDataIfc itemData = item.getItemData(); ArrayList itemGradingDataArray = item.getItemGradingDataArray(); if (itemGradingDataArray != null && itemGradingDataArray.size() != 0) { Iterator iter3 = itemGradingDataArray.iterator(); while (iter3.hasNext()) { ItemGradingData itemGrading = (ItemGradingData) iter3.next(); if (itemData != null) { if (itemId.equals(itemData.getItemIdString()) && itemGrading.getAnswerText() != null) { if (itemGrading.getAnswerText() != null) { String processedAnswerText = itemGrading.getAnswerText().replaceAll("\r", "").replaceAll("\n", ""); int saCharCount = processedAnswerText.length(); String formattedCount = String.format("%,d\n",saCharCount); item.setSaCharCount(formattedCount); if (saCharCount > 32000) { item.setIsInvalidSALengthInput(true); } else { item.setIsInvalidSALengthInput(false); } } else { item.setSaCharCount("0"); item.setIsInvalidSALengthInput(false); } redrawAnchorName.append("q"); String itemSeq = itemData.getSequence().toString(); redrawAnchorName.append(itemSeq); delivery.setRedrawAnchorName(redrawAnchorName.toString()); } } } } else { if (itemId.equals(itemData.getItemIdString())) { item.setSaCharCount("0"); redrawAnchorName.append("q"); String itemSeq = itemData.getSequence().toString(); redrawAnchorName.append(itemSeq); delivery.setRedrawAnchorName(redrawAnchorName.toString()); } } } } delivery.syncTimeElapsedWithServer(); } }