/*
* Copyright 2005-2008 the original author or authors.
*
* 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.openuap.cms.data.manager.impl;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.openuap.cms.CmsPlugin;
import org.openuap.cms.data.DataExporter;
import org.openuap.cms.data.manager.AbstractDataManager;
import org.openuap.cms.data.manager.DataExportManager;
import org.openuap.plugin.PluginManager;
import org.openuap.plugin.registry.Extension;
import org.openuap.plugin.registry.ExtensionPoint;
import org.openuap.plugin.registry.Extension.Parameter;
import org.openuap.runtime.plugin.WebPluginManagerUtils;
import org.openuap.runtime.util.ObjectLocator;
import org.springframework.beans.factory.InitializingBean;
/**
* <p>
* 数据备份管理者实现
* </p>
*
* <p>
* $Id: DataExportManagerImpl.java 3947 2010-11-01 14:23:26Z orangeforjava $
* </p>
*
* @author Joseph
* @version 1.0
*/
public class DataExportManagerImpl extends AbstractDataManager implements
DataExportManager, InitializingBean {
private List<DataExporter> exporters = new ArrayList<DataExporter>();
private Map<String, DataExporter> exporterMap = new HashMap<String, DataExporter>();
private boolean inited = false;
/*
* (non-Javadoc)
*
* @see org.openuap.cms.data.manager.DataExportManager#exportAllData()
*/
public void exportAllData() {
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see
* org.openuap.cms.data.manager.DataExportManager#exportData(org.openuap
* .cms.data.model.DataExporter)
*/
public void exportData(DataExporter exporter) {
Map parameters = new HashMap();
exporter.exportData(parameters);
}
public void exportData(String name) {
DataExporter exporter = exporterMap.get(name);
if (exporter != null) {
Map parameters = new HashMap();
exporter.exportData(parameters);
}
}
/*
* (non-Javadoc)
*
* @see org.openuap.cms.data.manager.DataExportManager#getDataExporters()
*/
public List getDataExporters() {
//
refreshData();
return this.exporters;
}
public void refreshData() {
try {
exporters.clear();
exporterMap.clear();
//
PluginManager pluginManager = WebPluginManagerUtils
.getPluginManager("");
//
File dataDir = this.getDataDir();
//
ExtensionPoint dataExportPoint = pluginManager.getRegistry()
.getExtensionPoint(CmsPlugin.PLUGIN_ID,
CmsPlugin.EXPORT_DATA_EXTENSION_POINT);
// System.out.println("dataExportPoint="+dataExportPoint);
for (Iterator it = dataExportPoint.getConnectedExtensions()
.iterator(); it.hasNext();) {
// 获得扩展了此扩展点的扩展
Extension ext = (Extension) it.next();
// 获得此扩展插件Id
String pluginId = ext.getDeclaringPluginDescriptor().getId();
Parameter nameParam = ext
.getParameter(CmsPlugin.EXPORT_DATA_NAME_PARAM);
Parameter titleParam = ext
.getParameter(CmsPlugin.EXPORT_DATA_TITLE_PARAM);
Parameter beanParam = ext
.getParameter(CmsPlugin.EXPORT_DATA_BEAN_PARAM);
if (beanParam != null && nameParam != null
&& titleParam != null) {
String beanName = beanParam.valueAsString();
String title = titleParam.valueAsString();
String name = nameParam.valueAsString();
// 获得以bean名称命名的导出对象
Object oexporter = ObjectLocator.lookup(beanName, pluginId);
if (oexporter != null && oexporter instanceof DataExporter) {
DataExporter exporter = (DataExporter) oexporter;
//
exporter.setName(name);
exporter.setTitle(title);
exporter.setDataDir(dataDir);
exporters.add(exporter);
exporterMap.put(name, exporter);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public List<DataExporter> getExporters() {
return exporters;
}
public void setExporters(List<DataExporter> exporters) {
this.exporters = exporters;
}
public Map<String, DataExporter> getExporterMap() {
return exporterMap;
}
public void setExporterMap(Map<String, DataExporter> exporterMap) {
this.exporterMap = exporterMap;
}
public void afterPropertiesSet() throws Exception {
refreshData();
inited = true;
}
}