001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.cocoon.portal.profile;
018:
019: import java.util.Collection;
020: import java.util.List;
021:
022: import org.apache.avalon.framework.component.Component;
023: import org.apache.cocoon.portal.coplet.CopletData;
024: import org.apache.cocoon.portal.coplet.CopletInstanceData;
025: import org.apache.cocoon.portal.layout.Layout;
026:
027: /**
028: * The profile manager.
029: * Via this component you can get the profile (or parts of it) of the
030: * current 'user'.
031: *
032: * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
033: * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
034: *
035: * @version CVS $Id: ProfileManager.java 433543 2006-08-22 06:22:54Z crossley $
036: */
037: public interface ProfileManager extends Component {
038:
039: String ROLE = ProfileManager.class.getName();
040:
041: /**
042: * Get the portal layout defined by the layout key. This
043: * usually addresses the layout profile.
044: * With the optional subKey it's possible to retrieve
045: * a specific layout object in the profile defined by
046: * the layout key.
047: * @param layoutKey A key describing the layout or null for the default
048: * @param layoutID The id of a layout object or null for the root object
049: * @return The layout
050: */
051: Layout getPortalLayout(String layoutKey, String layoutID);
052:
053: CopletInstanceData getCopletInstanceData(String copletID);
054:
055: List getCopletInstanceData(CopletData data);
056:
057: /**
058: * Return the coplet data object
059: */
060: CopletData getCopletData(String copletDataId);
061:
062: /**
063: * This method is invoked when the user logs into the portal.
064: */
065: void login();
066:
067: /**
068: * This method is invoked when the user logs out of the portal
069: *
070: */
071: void logout();
072:
073: /**
074: * New coplet instance datas have to be registered using this method.
075: */
076: void register(CopletInstanceData coplet);
077:
078: /**
079: * Removed coplet instance datas have to be unregistered using this method.
080: */
081: void unregister(CopletInstanceData coplet);
082:
083: /**
084: * New layouts have to be registered using this method.
085: */
086: void register(Layout layout);
087:
088: /**
089: * New layouts have to be unregistered using this method.
090: */
091: void unregister(Layout layout);
092:
093: /**
094: * Save the profile. Usually this just calls {@link #saveUserCopletInstanceDatas(String)}
095: * and {@link #saveUserLayout(String)}, but implementations are free to
096: * implement this method in a different way.
097: * @param layoutKey
098: */
099: void saveUserProfiles(String layoutKey);
100:
101: /**
102: * Save the layout
103: * @param layoutKey
104: */
105: void saveUserLayout(String layoutKey);
106:
107: /**
108: * Save the coplet instance data
109: * @param layoutKey
110: */
111: void saveUserCopletInstanceDatas(String layoutKey);
112:
113: /**
114: * Get all instances
115: */
116: Collection getCopletInstanceDatas();
117:
118: /**
119: * Get all coplets
120: */
121: Collection getCopletDatas();
122:
123: /**
124: * Store the provided profile under the layoutKey.
125: * This method can be used to overwrite a profile with another
126: * one.
127: */
128: void storeProfile(Layout rootLayout, String layoutKey);
129:
130: /**
131: * Get current user information
132: */
133: PortalUser getUser();
134: }
|