/*
* Copyright 2000-2001,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.services.psmlmanager.PsmlManagerService;
/**
Represents a Profile object specially for importing PSML from one service to another (ex. file -> db or db -> file)
For getDocument, the provider service provides the PSML document.
For saveDocument, the consumer service writes the PSML document.
@author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
@version $Id: ImportProfile.java,v 1.4 2004/02/23 03:05:01 jford Exp $
*/
public class ImportProfile extends BaseProfile implements Profile
{
private final PsmlManagerService provider;
private final PsmlManagerService consumer;
public ImportProfile(PsmlManagerService provider, PsmlManagerService consumer)
{
super();
this.provider = provider;
this.consumer = consumer;
}
public ImportProfile(PsmlManagerService provider, PsmlManagerService consumer, ProfileLocator locator)
{
super(locator);
this.provider = provider;
this.consumer = consumer;
}
/**
* @see Object#clone
* @return an instance copy of this object
*/
public Object clone() throws java.lang.CloneNotSupportedException
{
return super.clone();
}
/**
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 = provider.getDocument(this);
}
}
return this.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)
{
consumer.store(this);
}
}
}