/*
* Copyright 2000-2004 The Apache Software Foundation.
*
* Licensed under the Apache 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.apache.org/licenses/LICENSE-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.
*/
package org.apache.jetspeed.om.profile;
import org.apache.jetspeed.portal.PortletSet;
import org.apache.jetspeed.services.PortalToolkit;
import org.apache.jetspeed.services.PsmlManager;
/**
* Provides base functionality within a Registry.
*
* @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
*/
public class BaseProfile extends BaseProfileLocator implements Profile {
protected PSMLDocument document = null;
public BaseProfile() {
}
public BaseProfile(ProfileLocator locator) {
init(locator);
}
public void init(ProfileLocator locator) {
this.setAnonymous(locator.getAnonymous());
this.setCountry(locator.getCountry());
this.setGroup(locator.getGroup());
this.setLanguage(locator.getLanguage());
this.setMediaType(locator.getMediaType());
this.setName(locator.getName());
this.setRole(locator.getRole());
this.setUser(locator.getUser());
this.setOrgName(locator.getOrgName());
}
/**
* @see Object#clone
* @return an instance copy of this object
*/
public Object clone() throws java.lang.CloneNotSupportedException {
Object cloned = super.clone();
// clone the document
((BaseProfile) cloned).document = ((this.document == null) ? null
: (PSMLDocument) this.document.clone());
return cloned;
}
/**
* Gets the root set of portlets for this profile object.
*
* @return The root portlet set for this profile.
*/
public PortletSet getRootSet() {
return PortalToolkit.getSet(getDocument().getPortlets());
}
/**
* Gets the root set of portlets for this profile object.
*
* @return The root portlet set for this profile.
*/
public PSMLDocument getDocument() {
synchronized (this) {
if ((this.document == null) || (this.document.getPortlets() == null)) {
this.document = PsmlManager.getDocument(this);
}
}
return this.document;
}
/*
* Sets the psml document attached to this profile
*
* @param The PSML document for this profile.
*/
public void setDocument(PSMLDocument document) {
this.document = document;
}
/**
* stores the resource by merging and rewriting the psml file
*
* @throws ProfileException
* if an error occurs storing the profile
*/
public void store() throws ProfileException {
if (document != null) {
PsmlManager.store(this);
}
}
/**
* provide useful info for ease of debugging
*/
public String toString() {
return "BaseProfile[" + getId() + "]"; /*
* getUser().getUserName()+","+
* getGroup().getName()+","+
* getRole().getName()+","+
* (getAnonymous() ? "anon,":"")+
* getMediaType()+","+
* getCountry()+","+
* getLanguage()+","+ getName()+"]";
*/
}
}