/* * 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.wcm.publication.lifecycle.stageversion.ui; import java.util.ArrayList; import java.util.List; import javax.jcr.Node; import javax.jcr.Value; import org.exoplatform.commons.utils.LazyPageList; import org.exoplatform.commons.utils.ListAccess; import org.exoplatform.commons.utils.ListAccessImpl; import org.exoplatform.services.ecm.publication.NotInPublicationLifecycleException; import org.exoplatform.services.wcm.core.NodeLocation; import org.exoplatform.services.wcm.publication.lifecycle.stageversion.StageAndVersionPublicationConstant; import org.exoplatform.services.wcm.publication.lifecycle.stageversion.config.VersionLog; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.core.UIComponentDecorator; import org.exoplatform.webui.core.UIPageIterator; /** * Created by The eXo Platform SARL * Author : Dang Van Minh * minh.dang@exoplatform.com * Edited : Phan Le Thanh Chuong * chuong.phan@exoplatform.com * June 4, 2009 13:42:23 AM */ @SuppressWarnings("deprecation") @ComponentConfig( template = "classpath:groovy/wcm/webui/publication/lifecycle/stageversion/ui/UIPublicationHistory.gtmpl" ) public class UIPublicationHistory extends UIComponentDecorator { /** The ui page iterator_. */ private UIPageIterator uiPageIterator_ ; /** The current node_. */ private NodeLocation currentNodeLocation ; /** * Instantiates a new uI publication history. * * @throws Exception the exception */ public UIPublicationHistory() throws Exception { uiPageIterator_ = createUIComponent(UIPageIterator.class, null, "PublicationLogListIterator"); setUIComponent(uiPageIterator_) ; } /** * Inits the. * * @param node the node */ public void init(Node node) { currentNodeLocation = NodeLocation.getNodeLocationByNode(node); } /** * Gets the log. * * @return the log * * @throws NotInPublicationLifecycleException the not in publication lifecycle exception * @throws Exception the exception */ public List<VersionLog> getLog() throws NotInPublicationLifecycleException, Exception { if (currentNodeLocation == null) return new ArrayList<VersionLog>(); List<VersionLog> logs = new ArrayList<VersionLog>(); Node currentNode_ = NodeLocation.getNodeByLocation(currentNodeLocation); Value[] values = currentNode_.getProperty(StageAndVersionPublicationConstant.HISTORY).getValues(); for (Value value : values) { String logString = value.getString(); VersionLog bean = VersionLog.toVersionLog(logString); logs.add(bean); } return logs; } /** * Update grid. * * @throws Exception the exception */ public void updateGrid() throws Exception { ListAccess<VersionLog> verLogList = new ListAccessImpl<VersionLog>(VersionLog.class, getLog()); LazyPageList<VersionLog> dataPageList = new LazyPageList<VersionLog>(verLogList, 10); uiPageIterator_.setPageList(dataPageList); } /** * Gets the uI page iterator. * * @return the uI page iterator */ public UIPageIterator getUIPageIterator() { return uiPageIterator_ ; } /** * Gets the log list. * * @return the log list * * @throws Exception the exception */ public List getLogList() throws Exception { return uiPageIterator_.getCurrentPageData() ; } /** * Gets the actions. * * @return the actions */ public String[] getActions() {return new String[]{"Close"} ;} /** * The Class HistoryBean. */ public class HistoryBean { /** The date. */ private String date; /** The new state. */ private String newState; /** The user. */ private String user; /** The description. */ private String description; /** * Gets the date. * * @return the date */ public String getDate() { return date; } /** * Sets the date. * * @param date the new date */ public void setDate(String date) { this.date = date; } /** * Gets the description. * * @return the description */ public String getDescription() { return description; } /** * Sets the description. * * @param description the new description */ public void setDescription(String description) { this.description = description; } /** * Gets the new state. * * @return the new state */ public String getNewState() { return newState; } /** * Sets the new state. * * @param newState the new new state */ public void setNewState(String newState) { this.newState = newState; } /** * Gets the user. * * @return the user */ public String getUser() { return user; } /** * Sets the user. * * @param user the new user */ public void setUser(String user) { this.user = user; } /** * Updated by Nguyen Van Chien. * * @param stringInput the string input * * @return the string */ 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(); } } }