/*
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.serializer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.jetspeed.components.portletpreferences.JetspeedPreferenceImpl;
import org.apache.jetspeed.components.portletpreferences.PortletPreferencesProvider;
import org.apache.jetspeed.components.portletregistry.PortletRegistry;
import org.apache.jetspeed.om.portlet.PortletApplication;
import org.apache.jetspeed.om.portlet.PortletDefinition;
import org.apache.jetspeed.search.SearchEngine;
import org.apache.jetspeed.serializer.objects.JSApplication;
import org.apache.jetspeed.serializer.objects.JSApplications;
import org.apache.jetspeed.serializer.objects.JSEntities;
import org.apache.jetspeed.serializer.objects.JSEntity;
import org.apache.jetspeed.serializer.objects.JSEntityPreference;
import org.apache.jetspeed.serializer.objects.JSEntityPreferenceCompat;
import org.apache.jetspeed.serializer.objects.JSEntityPreferences;
import org.apache.jetspeed.serializer.objects.JSNVPElement;
import org.apache.jetspeed.serializer.objects.JSNVPElements;
import org.apache.jetspeed.serializer.objects.JSPortlet;
import org.apache.jetspeed.serializer.objects.JSPortlets;
import org.apache.jetspeed.serializer.objects.JSSnapshot;
import org.apache.pluto.container.PortletPreference;
import org.slf4j.Logger;
/**
* JetspeedRegistrySerializer - Registry component serializer
*
* @author Ate Douma
* @version $Id$
*/
public class JetspeedRegistrySerializer extends AbstractJetspeedComponentSerializer
{
protected PortletRegistry registry;
protected PortletPreferencesProvider prefsProvider;
protected SearchEngine searchEngine;
/**
* @param registry
* @param entityAccess
* @param searchEngine
*/
public JetspeedRegistrySerializer(PortletRegistry registry, PortletPreferencesProvider prefsProvider,
SearchEngine searchEngine)
{
this.registry = registry;
this.prefsProvider = prefsProvider;
this.searchEngine = searchEngine;
}
/*
* (non-Javadoc)
* @see org.apache.jetspeed.serializer.JetspeedComponentSerializer#processExport(org.apache.jetspeed.serializer.objects.JSSnapshot, java.util.Map,
* org.apache.commons.logging.Log)
*/
protected void processExport(JSSnapshot snapshot, Map settings, Logger log) throws SerializerException
{
if (isSettingSet(settings, JetspeedSerializer.KEY_PROCESS_USER_PREFERENCES))
{
log.info("collecting applications and entities");
exportEntities(snapshot, settings, log);
}
}
/*
* (non-Javadoc)
* @see org.apache.jetspeed.serializer.JetspeedComponentSerializer#processImport(org.apache.jetspeed.serializer.objects.JSSnapshot, java.util.Map,
* org.apache.commons.logging.Log)
*/
protected void processImport(JSSnapshot snapshot, Map settings, Logger log) throws SerializerException
{
if (isSettingSet(settings, JetspeedSerializer.KEY_PROCESS_USER_PREFERENCES))
{
log.info("creating entities");
importEntities(snapshot, settings, log);
}
}
protected void deleteData(Map settings, Logger log) throws SerializerException
{
if (isSettingSet(settings, JetspeedSerializer.KEY_PROCESS_USER_PREFERENCES))
{
log.info("deleting applications");
try
{
for (PortletApplication pa : registry.getPortletApplications())
{
List portlets = pa.getPortlets();
List clones = pa.getClones();
if (searchEngine != null)
{
List