package org.exoplatform.ecm.webui.component.explorer.auditing; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import javax.jcr.Node; import org.exoplatform.commons.utils.LazyPageList; import org.exoplatform.commons.utils.ListAccess; import org.exoplatform.commons.utils.ListAccessImpl; import org.exoplatform.ecm.webui.component.explorer.UIJCRExplorer; import org.exoplatform.ecm.webui.utils.Utils; import org.exoplatform.services.jcr.ext.audit.AuditHistory; import org.exoplatform.services.jcr.ext.audit.AuditRecord; import org.exoplatform.services.jcr.ext.audit.AuditService; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.config.annotation.EventConfig; import org.exoplatform.webui.core.UIContainer; import org.exoplatform.webui.core.UIPageIterator; import org.exoplatform.webui.core.UIPopupComponent; import org.exoplatform.webui.event.Event; import org.exoplatform.webui.event.EventListener; /** * Listing of the log of auditing * * @author CPop */ @ComponentConfig( template = "app:/groovy/webui/component/explorer/auditing/UIAuditingInfo.gtmpl", events = { @EventConfig(listeners = UIAuditingInfo.CloseActionListener.class) } ) public class UIAuditingInfo extends UIContainer implements UIPopupComponent { private UIPageIterator uiPageIterator_ ; private static final Log LOG = ExoLogger.getLogger(UIAuditingInfo.class.getName()); public UIAuditingInfo() throws Exception { uiPageIterator_ = addChild(UIPageIterator.class, null, "AuditingInfoIterator"); } public void activate() { } public void deActivate() { } public Node getCurrentNode() throws Exception { return getAncestorOfType(UIJCRExplorer.class).getCurrentNode(); } public UIPageIterator getUIPageIterator() { return uiPageIterator_; } public List getListRecords() throws Exception { return uiPageIterator_.getCurrentPageData(); } @SuppressWarnings("unchecked") public void updateGrid() throws Exception { ListAccess<AuditRecordData> recordList = new ListAccessImpl<AuditRecordData>(AuditRecordData.class, getRecords()); LazyPageList<AuditRecordData> dataPageList = new LazyPageList<AuditRecordData>(recordList, 10); uiPageIterator_.setPageList(dataPageList); } public List<AuditRecordData> getRecords() throws Exception { List<AuditRecordData> listRec = new ArrayList<AuditRecordData>(); Node currentNode = getCurrentNode(); try { AuditService auditService = getApplicationComponent(AuditService.class); if(Utils.isAuditable(currentNode)){ if (auditService.hasHistory(currentNode)){ AuditHistory auHistory = auditService.getHistory(currentNode); for(AuditRecord auditRecord : auHistory.getAuditRecords()) { listRec.add(new AuditRecordData(auditRecord)); } } } } catch(Exception e){ if (LOG.isErrorEnabled()) { LOG.error("Unexpected error", e); } } return listRec; } static public class CloseActionListener extends EventListener<UIAuditingInfo> { public void execute(Event<UIAuditingInfo> event) throws Exception { UIAuditingInfo uiAuditingInfo = event.getSource(); UIJCRExplorer uiExplorer = uiAuditingInfo.getAncestorOfType(UIJCRExplorer.class); uiExplorer.cancelAction(); } } public static class AuditRecordData { private String versionName_; private String eventType_; private String userId_; private Calendar date_; public AuditRecordData(AuditRecord auditRecord) { versionName_ = null; versionName_ = auditRecord.getVersionName(); eventType_ = String.valueOf(auditRecord.getEventType()); userId_ = auditRecord.getUserId(); date_ = auditRecord.getDate(); } public String getVersionName() { return versionName_; } public void setVersionName(String versionName) { versionName_ = versionName; } public String getEventType() { return eventType_; } public void setEventType(String eventType) { eventType_ = eventType; } public String getUserId() { return userId_; } public void setUserId(String userId) { userId_ = userId; } public Calendar getDate() { return date_; } public void setDate(Calendar date) { date_ = date; } } }