001: /*
002: * $Header: /export/home/cvsroot/MyPersonalizerRepository/MyPersonalizer/Subsystems/Kernel/Sources/es/udc/mypersonalizer/kernel/model/editors/DesktopLayoutEditor.java,v 1.1.1.1 2004/03/25 12:08:37 fbellas Exp $
003: * $Revision: 1.1.1.1 $
004: * $Date: 2004/03/25 12:08:37 $
005: *
006: * =============================================================================
007: *
008: * Copyright (c) 2003, The MyPersonalizer Development Group
009: * (http://www.tic.udc.es/~fbellas/mypersonalizer/index.html) at
010: * University Of A Coruna
011: * All rights reserved.
012: *
013: * Redistribution and use in source and binary forms, with or without
014: * modification, are permitted provided that the following conditions are met:
015: *
016: * - Redistributions of source code must retain the above copyright notice,
017: * this list of conditions and the following disclaimer.
018: *
019: * - Redistributions in binary form must reproduce the above copyright notice,
020: * this list of conditions and the following disclaimer in the documentation
021: * and/or other materials provided with the distribution.
022: *
023: * - Neither the name of the University Of A Coruna nor the names of its
024: * contributors may be used to endorse or promote products derived from
025: * this software without specific prior written permission.
026: *
027: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
028: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
029: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
030: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
031: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
032: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
033: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
034: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
035: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
036: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
037: * POSSIBILITY OF SUCH DAMAGE.
038: *
039: */
040:
041: package es.udc.mypersonalizer.kernel.model.editors;
042:
043: import es.udc.mypersonalizer.kernel.model.properties.Property;
044: import es.udc.mypersonalizer.kernel.util.exceptions.InternalErrorException;
045: import java.util.*;
046:
047: /**
048: * This editor accesses the information stored in a DesktopLayout property,
049: * knowing the internals of its structure and hiding them to the object which
050: * might use it.
051: *
052: * @author Daniel Fernandez
053: * @since 1.0
054: */
055: public interface DesktopLayoutEditor {
056:
057: /**
058: * Sets the property on which the editor will work.
059: *
060: * @param property the property.
061: */
062: public void setProperty(Property property);
063:
064: /**
065: * Returns the identifiers (as a List of Long objects) for the Workspace
066: * Layouts that conform the Desktop Layout on which the editor operates.
067: *
068: * @throws InternalErrorException if a fatal error happens while
069: * accessing the property.
070: * @return a List of Longs with the layout identifiers.
071: */
072: public List getWorkspaceLayoutIdentifiers()
073: throws InternalErrorException;
074:
075: /**
076: * Sets the Workspace Layouts (as a List of Long objects) that conform this
077: * Desktop Layout.
078: *
079: * @param identifiers the List of Long objects with the identifiers.
080: * @throws InternalErrorException if any fatal error happens while
081: * accessing the property.
082: */
083: public void setWorkspaceLayoutIdentifiers(List identifiers)
084: throws InternalErrorException;
085:
086: /**
087: * Returns the identifier of the Workspace Layout which is set as "default"
088: * for the Desktop Layout the editor works on.
089: *
090: * @throws InternalErrorException if any error happens when accessing to
091: * the property.
092: * @return a Long being the default workspace layout identifier, or null if
093: * there are no workspace layouts in this desktop.
094: */
095: public Long getDefaultWorkspaceLayoutIdentifier()
096: throws InternalErrorException;
097:
098: /**
099: * Sets a new default Workspace Layout for this Desktop.
100: *
101: * @param identifier the Long identifying the new default workspace, if
102: * the desktop has come to have no workspaces, calling this method
103: * with a <tt>null</tt> parameter will correctly manage that
104: * situation.
105: * @throws InternalErrorException if any error happens during access to
106: * the property.
107: */
108: public void setDefaultWorkspaceLayoutIdentifier(Long identifier)
109: throws InternalErrorException;
110:
111: /**
112: * Returns the time stamp of this Desktop Layout. This time stamp allows
113: * the system to stay aware of problems caused by two or more concurrent
114: * accesses to the Desktop Layout contents, which could cause
115: * inconsistencies because of changes being made to old copies of the
116: * property.
117: *
118: * @throws InternalErrorException if any fatal error happens.
119: * @return a Long being the timestamp
120: */
121: public Long getTimeStamp() throws InternalErrorException;
122:
123: /**
124: * Updates this property's time stamp to the current time so as to avoid
125: * concurrency problems.
126: *
127: * @throws InternalErrorException if any fatal error happens during time
128: * stamp updating.
129: */
130: public void updateTimeStamp() throws InternalErrorException;
131:
132: /**
133: * This method will ask the EmptyPropertyFactory to create a fresh empty
134: * Property suitable for a Desktop Layout. This will be used to fill in
135: * new data.
136: *
137: * @throws InternalErrorException if any fatal error happens.
138: * @return a Property with the adequate structure to handle a
139: * Desktop Layout
140: */
141: public Property createEmptyProperty() throws InternalErrorException;
142:
143: }
|