/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/rwiki/trunk/rwiki-tool/tool/src/java/uk/ac/cam/caret/sakai/rwiki/tool/bean/HistoryBean.java $
* $Id: HistoryBean.java 20354 2007-01-17 10:30:57Z ian@caret.cam.ac.uk $
***********************************************************************************
*
* Copyright (c) 2003, 2004, 2005, 2006 The Sakai Foundation.
*
* Licensed under the Educational Community License, Version 1.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/ecl1.php
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**********************************************************************************/
package uk.ac.cam.caret.sakai.rwiki.tool.bean;
import uk.ac.cam.caret.sakai.rwiki.service.api.model.RWikiObject;
import uk.ac.cam.caret.sakai.rwiki.tool.util.WikiPageAction;
/**
* General value bean for creating history views.
*
* @author andrew
*/
public class HistoryBean extends ViewBean
{
/**
* Parameter name for version. This parameter is sent when reverting a
* RWikiObject. It is used to know when we have a
* <code>VersionException</code
*/
public static final String VERSION_PARAM = "version";
/**
* Parameter name for requesting a left version for a diff. This parameter
* is sent when requesting a diff.
*/
public static final String LEFT_PARAM = "left";
/**
* Parameter name for requesting a right version for a diff. This parameter
* is sent when requesting a diff.
*/
public static final String RIGHT_PARAM = "right";
/**
* Parameter name for requesting a revision. This parameter is sent when
* requesting a review of a particular revision or a reversion.
*/
public static final String REVISION_PARAM = "revision";
private static final String LEFT_URL_ENCODED = urlEncode(LEFT_PARAM);
private static final String RIGHT_URL_ENCODED = urlEncode(RIGHT_PARAM);
private static final String VERSION_URL_ENCODED = urlEncode(VERSION_PARAM);
private static final String REVISION_URL_ENCODED = urlEncode(REVISION_PARAM);
/**
* The revision number that getRevert and getViewRevision refer to
*/
private int interestedRevision;
/**
* The current version of the rwikiObject that is being refered to as a
* long.
*/
private long time;
public HistoryBean()
{
// Must have null constructor!
super();
}
/**
* Creates a HistoryBean using the rwikiObject to fill most of it's fields
*
* @param rwikiObject
* exemplar
* @param defaultRealm
* the defaultRealm
*/
public HistoryBean(RWikiObject rwikiObject, String defaultRealm)
{
super(rwikiObject.getName(), defaultRealm);
this.interestedRevision = rwikiObject.getRevision().intValue();
this.time = rwikiObject.getVersion().getTime();
}
/**
* Creates a HistoryBean
*
* @param pageName
* @param defaultRealm
* @param defaultInterestedRevision
* @param time
*/
public HistoryBean(String pageName, String defaultRealm,
int defaultInterestedRevision, long time)
{
super(pageName, defaultRealm);
this.interestedRevision = defaultInterestedRevision;
this.time = time;
}
/**
* Using the currently set interestedRevision returns an url that will
* generate a diff to the current revision from the interested revision
*
* @return url as String
*/
public String getDiffToCurrentUrl()
{
return "?" + PAGENAME_URL_ENCODED + "=" + urlEncode(getPageName())
+ "&" + ACTION_URL_ENCODED + "="
+ urlEncode(WikiPageAction.DIFF_ACTION.getName()) + "&"
+ PANEL_URL_ENCODED + "=" + MAIN_URL_ENCODED + "&"
+ LEFT_URL_ENCODED + "=" + interestedRevision;
}
/**
* Using the currently set interestedRevision returns an url that will
* generate a diff from that revision to it's previous revision.
*
* @return url as String
*/
public String getDiffToPreviousUrl()
{
return "?" + PAGENAME_URL_ENCODED + "=" + urlEncode(getPageName())
+ "&" + ACTION_URL_ENCODED + "="
+ urlEncode(WikiPageAction.DIFF_ACTION.getName()) + "&"
+ PANEL_URL_ENCODED + "=" + MAIN_URL_ENCODED + "&"
+ RIGHT_URL_ENCODED + "=" + interestedRevision;
}
/**
* Using the currently set interestedRevision returns an url that will
* generate a view of that revision.
*
* @return url as String
*/
public String getViewRevisionUrl()
{
return "?" + PAGENAME_URL_ENCODED + "=" + urlEncode(getPageName())
+ "&" + ACTION_URL_ENCODED + "="
+ urlEncode(WikiPageAction.REVIEW_ACTION.getName()) + "&"
+ PANEL_URL_ENCODED + "=" + MAIN_URL_ENCODED + "&"
+ HistoryBean.REVISION_URL_ENCODED + "=" + interestedRevision;
}
/**
* Using the currently set interestedRevision returns an url that will cause
* a revert to that revision.
*
* @return url as String
*/
public String getRevertToRevisionUrl()
{
return "?" + PAGENAME_URL_ENCODED + "=" + urlEncode(getPageName())
+ "&" + ACTION_URL_ENCODED + "="
+ urlEncode(WikiPageAction.REVERT_ACTION.getName()) + "&"
+ PANEL_URL_ENCODED + "=" + MAIN_URL_ENCODED + "&"
+ HistoryBean.REVISION_URL_ENCODED + "=" + interestedRevision
+ "&" + VERSION_URL_ENCODED + "=" + urlEncode("" + time);
}
/**
* The currently set interestedRevision
*
* @return current interestedRevision
*/
public int getInterestedRevision()
{
return interestedRevision;
}
/**
* Sets the currently interestedRevision
*
* @param interestedRevision
* to set
*/
public void setInterestedRevision(int interestedRevision)
{
this.interestedRevision = interestedRevision;
}
}