libreccm-legacy/ccm-bookmarks/src/com/arsdigita/bookmarks/Bookmark.java

357 lines
8.4 KiB
Java
Executable File

/*
* Copyright (C) 2001, 2002 Red Hat Inc. All Rights Reserved.
*
* The contents of this file are subject to the CCM Public
* License (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.redhat.com/licenses/ccmpl.html
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
*/
package com.arsdigita.bookmarks;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.kernel.Kernel;
import com.arsdigita.kernel.Party;
import com.arsdigita.kernel.permissions.PermissionService;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.util.Assert;
import java.math.BigDecimal;
/**
* Represents a single bookmark.
*
* @author Jim Parsons
*/
public class Bookmark extends ACSObject {
private static final int SORT_KEY_JUMP = 10;
private Bookmarks m_bmrkapp = null;
/**
* The type of the {@link com.arsdigita.persistence.DataObject}
* that stands behind this {@link
* com.arsdigita.domain.DomainObject}.
*/
public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.workspace.Bookmark";
protected String getBaseDataObjectType() {
return BASE_DATA_OBJECT_TYPE;
}
public Bookmark(DataObject dataObject) {
super(dataObject);
}
public Bookmark(String name, String URLstring) {
super(BASE_DATA_OBJECT_TYPE);
setName(name);
setURL(URLstring);
setCreateDate();
setSortKey(50);
setAuthor();
setVisits(0);
}
/**
* Retrieve an existing Bookmark based on an ID.
*
*/
public static Bookmark retrieveBookmark(BigDecimal bmrkID) {
Assert.exists(bmrkID);
return Bookmark.retrieveBookmark(new OID(BASE_DATA_OBJECT_TYPE, bmrkID));
}
/**
* Retrieve an existing Bookmark based on a data object.
*
* @param dataObject the data object of the Bookmark to retrieve.
* @return an existing Bookmark. Note that the return value may be
* null if no Bookmark data object for this ID exists.
* @pre dataObject != null
*/
public static Bookmark retrieveBookmark(DataObject dataObject) {
Assert.exists(dataObject);
return new Bookmark(dataObject);
}
/**
* Retrieve an existing Bookmark based on an OID.
*
* @param oid the OID of the Bookmark to retrieve.
* @pre oid != null
*/
public static Bookmark retrieveBookmark(OID oid) {
Assert.exists(oid);
DataObject dataObject = SessionManager.getSession().retrieve(oid);
return Bookmark.retrieveBookmark(dataObject);
}
public Bookmarks getBookmarkApplication() {
if(m_bmrkapp == null) {
DataObject bmrkdata = (DataObject)get("bookmarkapp");
if(bmrkdata != null) {
m_bmrkapp = new Bookmarks(bmrkdata);
}
}
return m_bmrkapp;
}
public void setBookmarkApplication(Bookmarks bmrkapp) {
m_bmrkapp = bmrkapp;
setAssociation("bookmarkapp",bmrkapp);
}
public static BookmarkCollection retrieveAllBookmarks() {
DataCollection dataCollection =
SessionManager.getSession().retrieve(BASE_DATA_OBJECT_TYPE);
BookmarkCollection bmrkCollection = new BookmarkCollection
(dataCollection);
return bmrkCollection;
}
//
// Accessors
//
/**
* Get the title of this Bookmark.
*
* @return this Bookmarks title.
*/
public String getName() {
String name = (String)get("bookmark_name");
Assert.exists(name);
return name;
}
/**
* Get the URL of this Bookmark.
*
*/
public String getURL() {
String url = (String)get("bookmark_url");
Assert.exists(url);
return url;
}
/**
* Get the Description of this Bookmark.
*
*/
public String getDescription() {
String description = (String)get("bookmark_desc");
Assert.exists(description);
return description;
}
/**
* Get the Creation Date of this Bookmark.
*
*/
public String getCreateDate() {
String creation = (String)get("create_date");
//This could be null...
return creation;
}
/**
* Get the last modification date of this Bookmark.
*
*/
public String getModDate() {
String mod = (String)get("mod_date");
//if mod == null, then bmrk was never modified...
if(mod == null)
mod = (String)get("create_date");
return mod;
}
public boolean getNewWindow() {
return "1".equals(get("new_window"));
}
/**
* Get the original creator's name for this Bookmark.
*
* @return this portal's title.
* @post return != null
*/
public String getAuthor() {
String author = (String)get("author");
return author;
}
/**
* Get the number of times this Bookmark has been visited.
*
*/
private int getVisits() {
int v = ((Integer)get("visits")).intValue();
return v;
}
/**
* Get the number of times this Bookmark has been visited,
* and return value as a String.
*
*/
public String getNumVisits() {
Integer v = (Integer)get("visits");
return v.toString();
}
/**
* Set the title of this Bookmark.
*
*/
public void setName(String name) {
Assert.exists(name);
set("bookmark_name", name);
}
/**
* Set the URL of this Bookmark.
*
*/
public void setURL(String url) {
Assert.exists(url);
if(url.startsWith("http://"))
set("bookmark_url", url);
else if(url.startsWith("HTTP://"))
set("bookmark_url", url);
else if(url.startsWith("https://"))
set("bookmark_url", url);
else if(url.startsWith("HTTPS://"))
set("bookmark_url", url);
else
{
//if someone inputs 'HtTp://', we are in trouble...!
//but the mistake will be visible in the edit form...
String newURL = "http://" + url;
set("bookmark_url", newURL);
}
}
/**
* Set the description for this Bookmark.
*
*/
public void setDescription(String desc) {
//Assert.exists(desc);
set("bookmark_desc",desc);
}
private void setCreateDate() {
java.util.Date currentDate = new java.util.Date();
String date = java.text.DateFormat.getDateTimeInstance().format(currentDate);
set("create_date",date);
}
/**
* Set the mod date for this Bookmark.
*
*/
public void setModDate() {
java.util.Date currentDate = new java.util.Date();
String date = java.text.DateFormat.getDateTimeInstance().format(currentDate);
set("mod_date",date);
}
public void setNewWindow(boolean newWindow) {
set("new_window", (newWindow ? "1" : "0"));
}
/**
* Set the author for this Bookmark.
*
*/
private void setAuthor() {
Party party = Kernel.getContext().getParty();
String name = party.getDisplayName();
set("author", name);
}
/**
* Set the number of visits to this Bookmark.
*
*/
private void setVisits(int visits) {
set("visits",new Integer(visits));
}
/**
* Increment the counter for number of visits to this Bookmark.
*
*/
public void visitsPlusPlus() {
int visits = getVisits();
setVisits(visits++);
}
/**
* Get the sort key of this Bookmark. The sort key is used
* to order a set of bookmarks in a particular Workspace.
*
* @return the bookmark sort key.
*/
public int getSortKey() {
return ((Integer)get("sortKey")).intValue();
}
public void setSortKey(int sortKey) {
set("sortKey", new Integer(sortKey));
}
protected void afterSave() {
super.afterSave();
PermissionService.setContext(this, getBookmarkApplication());
}
}