/* * Copyright (C) 2003-2007 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see<http://www.gnu.org/licenses/>. */ package org.exoplatform.services.ecm.publication.plugins.webui; import java.util.ArrayList; 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.portal.webui.util.Util; import org.exoplatform.portal.webui.workspace.UIPortalApplication; import org.exoplatform.services.ecm.publication.NotInPublicationLifecycleException; import org.exoplatform.services.ecm.publication.PublicationService; import org.exoplatform.services.wcm.core.NodeLocation; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.config.annotation.EventConfig; import org.exoplatform.webui.core.UIComponentDecorator; import org.exoplatform.webui.core.UIPageIterator; import org.exoplatform.webui.core.UIPopupWindow; import org.exoplatform.webui.event.Event; import org.exoplatform.webui.event.EventListener; /** * Created by The eXo Platform SARL * Author : Dang Van Minh * minh.dang@exoplatform.com * Jun 26, 2008 1:16:08 AM */ @ComponentConfig( template = "classpath:groovy/workflow/webui/UIPublicationLogList.gtmpl", events = { @EventConfig(listeners = UIPublicationLogList.CloseActionListener.class) } ) public class UIPublicationLogList extends UIComponentDecorator { private UIPageIterator uiPageIterator_ ; private NodeLocation currentNode_ ; public UIPublicationLogList() throws Exception { uiPageIterator_ = createUIComponent(UIPageIterator.class, null, "PublicationLogListIterator"); setUIComponent(uiPageIterator_) ; } public void setNode(Node node) throws Exception { currentNode_ = NodeLocation.getNodeLocationByNode(node); } private Node getCurrentNode() { return NodeLocation.getNodeByLocation(currentNode_); } public List<HistoryBean> getLog() throws NotInPublicationLifecycleException, Exception { PublicationService publicationService = getApplicationComponent(PublicationService.class); String[][] array = publicationService.getLog(getCurrentNode()); List<HistoryBean> list = new ArrayList<HistoryBean>(); for (int i = 0; i < array.length; i++) { HistoryBean bean = new HistoryBean(); String[] currentLog = array[i]; bean.setDate(bean.formatStringByDateTime(currentLog[0])); bean.setNewState(currentLog[1]); bean.setUser(currentLog[2]); String[] values = new String[currentLog.length - 4]; System.arraycopy(currentLog, 4, values, 0, currentLog.length-4); String description = publicationService.getLocalizedAndSubstituteLog(getCurrentNode(), Util.getUIPortal().getAncestorOfType(UIPortalApplication.class).getLocale(), currentLog[3], values); bean.setDescription(description); list.add(bean); } return list; } @SuppressWarnings("unchecked") public void updateGrid() throws Exception { ListAccess<HistoryBean> historyList = new ListAccessImpl<HistoryBean>(HistoryBean.class, getLog()); LazyPageList<HistoryBean> dataPageList = new LazyPageList<HistoryBean>(historyList, 10); uiPageIterator_.setPageList(dataPageList); } public UIPageIterator getUIPageIterator() { return uiPageIterator_ ; } public List getLogList() throws Exception { return uiPageIterator_.getCurrentPageData() ; } public String[] getActions() {return new String[]{"Close"} ;} static public class CloseActionListener extends EventListener<UIPublicationLogList> { public void execute(Event<UIPublicationLogList> event) throws Exception { UIPublicationLogList uiPublicationLogList = event.getSource() ; UIPopupWindow uiPopup = uiPublicationLogList.getAncestorOfType(UIPopupWindow.class) ; uiPopup.setRendered(false) ; uiPopup.setShow(false) ; } } public class HistoryBean { private String date; private String newState; private String user; private String description; public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getNewState() { return newState; } public void setNewState(String newState) { this.newState = newState; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } /** * Updated by Nguyen Van Chien * @param stringInput * @return */ public String formatStringByDateTime(String stringInput) { String dateYear = stringInput.substring(0, 4); String dateMonth = stringInput.substring(4, 6); String dateDay = stringInput.substring(6, 8); String dateHour = stringInput.substring(9, 11); String dateMinute = stringInput.substring(11, 13); String dateSecond = stringInput.substring(13, 15); StringBuilder builder = new StringBuilder(); builder.append(dateMonth).append("/") .append(dateDay).append("/") .append(dateYear).append(" ") .append(dateHour).append(":") .append(dateMinute).append(":") .append(dateSecond); return builder.toString(); } } }