/*
* Copyright 2003-2010 Tufts University Licensed under the
* Educational Community License, Version 2.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.osedu.org/licenses/ECL-2.0
*
* 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.
*/
/*
* CabinetEntry.java
*
* Created on September 16, 2003, 9:54 AM
*
* The software contained in this file is copyright 2003 by Mark J. Norton, all rights reserved.
*/
package tufts.oki.remoteFiling;
import tufts.oki.shared.*;
import java.util.*;
import osid.OsidException;
/**
* Cabinet Entires are the superclass of Cabinet and ByteStore. Entries contain
* a number of data items common to both including:
* <table>
* <tr><td>Id </td><td>Unique identifier for this entry.</td></tr>
* <tr><td>Display Name </td><td>Display name for this entry.</td></tr>
* <tr><td>Agent </td><td>Agent-owner of this entry.</td></tr>
* <tr><td>Created Time </td><td>Time this entry was created.</td></tr>
* <tr><td>Modified Time </td><td>Last time this entry was modified.</td></tr>
* <tr><td>Accessed Time </td><td>Last time this entry was accessed.</td></tr>
* <tr><td>Modified Times </td><td>A list of all time this entry was modified.</td></tr>
* <tr><td>Parent< /td><td>The parent cabinet of this entry, or null if it is a root.</td></tr>
* </table>
* CabinetEntry is fully implemented.
*
* @author Mark Norton
*/
public class RemoteCabinetEntry implements osid.filing.CabinetEntry {
private osid.shared.Id id;
private String display_name;
private osid.shared.Agent agent_owner;
private java.util.Date created_time;
private java.util.Date modified_time;
private java.util.Date accessed_time;
private Vector modified_times;
private osid.filing.Cabinet parent = null;
protected RemoteClient rc;
/**
* Creates a new instance of CabinetEntry.
* Requires that a display name, agent owner, and parent cabinet be passed.
*
* @author Mark Norton
*
*/
public RemoteCabinetEntry(String displayName, osid.shared.Agent agentOwner, osid.filing.Cabinet parentCabinet, RemoteClient rc) {
this.rc = rc;
/* Get a new unique ID for this CabinetEntry. */
try {
id = new Id();
}
catch (osid.shared.SharedException e) {}
/* Set the display name and agent-owner. */
display_name = displayName;
agent_owner = agentOwner;
parent = parentCabinet;
/* Initialize the various timestamps. */
java.util.Date now = new Date();
created_time = (java.util.Date) now.clone();
modified_time = (java.util.Date) now.clone();
accessed_time = (java.util.Date) now.clone();
modified_times = new Vector(100);
modified_times.add(modified_time);
}
/**
* Get the Id of this cabinet entry.
* @author Mark Norton
*
* @return The id of this CabinetEntry.
*/
public osid.shared.Id getId() throws osid.filing.FilingException {
return (osid.shared.Id) id;
}
/**
* Get the display name of this cabinet entry.
*
* @author Mark Norton
*
* @return The display name of this CabinetEntry.
*/
public String getDisplayName () {
return display_name;
}
/**
* Update the modified time of this entry.
*
* @author Mark Norton
*/
public void touch () throws osid.filing.FilingException {
modified_time = new Date();
modified_times.add(modified_time);
}
/**
* Update the display name of this entry to the new name given.
*
* @author Mark Norton
*/
public void updateDisplayName (String new_disp_name) {
//System.out.println ("CabinetEntry.updateDisplayName - name: " + new_disp_name);
display_name = new_disp_name;
modified_time = new Date();
modified_times.add(modified_time);
}
/**
* Get the parent of this cabinet entry.
* Note that a ByteStore cannot be a root cabinet.
* @author Mark Norton
*
* @return The parent cabinet of this entry, or null if it is a root cabinet.
*/
public osid.filing.Cabinet getParent () {
return parent;
}
/**
* Get the agent-ower of this entry.
*
* @author Mark Norton
*/
public osid.shared.Agent getCabinetEntryAgent() throws osid.filing.FilingException {
return agent_owner;
}
/**
* Create an interator over a all times that this entry was modified.
*
* @author Mark Norton
*
* @return A CalendarIterator which lists all times this entry was modified.
*/
public osid.shared.CalendarIterator getAllModifiedTimes() throws osid.filing.FilingException {
CalendarIterator it = new CalendarIterator(modified_times);
return it;
}
/**
* Get the time this entry was created.
*
* @author Mark Norton
*
* @return The time this entry was created.
*/
public java.util.Calendar getCreatedTime() throws osid.filing.FilingException {
Calendar cal = Calendar.getInstance();
cal.setTime (created_time);
return cal;
}
/**
* Get the time when thsi entry was last accessed.
*
* @author Mark Norton
*
* @return The time this entry was last accessed.
*/
public java.util.Calendar getLastAccessedTime() throws osid.filing.FilingException {
Calendar cal = Calendar.getInstance();
cal.setTime (accessed_time);
return cal;
}
/**
* Get the last modified time for this entry.
*
* @author Mark Norton
*
* @return The time this entry was last modified.
*/
public java.util.Calendar getLastModifiedTime() throws osid.filing.FilingException {
Calendar cal = Calendar.getInstance();
cal.setTime (modified_time);
return cal;
}
public osid.shared.Agent getOwner() {
return agent_owner;
}
public boolean isCabinet() {
return (this instanceof RemoteCabinet);
}
}