/*
* 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.DataImporter;
import org.openuap.cms.data.manager.AbstractDataManager;
import org.openuap.cms.data.manager.DataImportManager;
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;
/**
* <p>
* 数据导入管理实现
* </p>
*
* <p>
* $Id: DataImportManagerImpl.java 3947 2010-11-01 14:23:26Z orangeforjava $
* </p>
*
* @author Joseph
* @version 1.0
*/
public class DataImportManagerImpl extends AbstractDataManager implements DataImportManager {
private List<DataImporter> importers = new ArrayList<DataImporter>();
private Map<String, DataImporter> importerMap = new HashMap<String, DataImporter>();
private boolean inited = false;
public List getDataFiles(String name) {
DataImporter importer=importerMap.get(name);
if(importer!=null){
return importer.getImportFiles();
}
return null;
}
public List getDataImporters() {
refreshData();
return importers;
}
public void importAllData() {
if(importers!=null){
int size=importers.size();
for(int i=0;i<size;i++){
DataImporter importer=importers.get(i);
Map parameters = new HashMap();
importer.importData(parameters);
}
}
}
public void importData(DataImporter importer) {
Map parameters = new HashMap();
importer.importData(parameters);
}
public void importData(String name) {
DataImporter importer=importerMap.get(name);
if(importer!=null){
importData(importer);
}
}
public void importData(String name, String fileName) {
DataImporter importer=importerMap.get(name);
if(importer!=null){
Map parameters = new HashMap();
parameters.put("fileName", fileName);
importer.importData(parameters);
}
}
public void refreshData() {
try {
importers.clear();
importerMap.clear();
//
PluginManager pluginManager = WebPluginManagerUtils.getPluginManager("");
//
File dataDir = this.getDataDir();
//
ExtensionPoint dataExportPoint = pluginManager.getRegistry().getExtensionPoint(CmsPlugin.PLUGIN_ID,
CmsPlugin.IMPORT_DATA_EXTENSION_POINT);
//
for (Iterator it = dataExportPoint.getConnectedExtensions().iterator(); it.hasNext();) {
// 获得扩展了此扩展点的扩展
Extension ext = (Extension) it.next();
// 获得此扩展插件Id
String pluginId = ext.getDeclaringPluginDescriptor().getId();
Parameter nameParam = ext.getParameter(CmsPlugin.IMPORT_DATA_NAME_PARAM);
Parameter titleParam = ext.getParameter(CmsPlugin.IMPORT_DATA_TITLE_PARAM);
Parameter beanParam = ext.getParameter(CmsPlugin.IMPORT_DATA_BEAN_PARAM);
if (beanParam != null && nameParam != null && titleParam != null) {
String beanName = beanParam.valueAsString();
String title = titleParam.valueAsString();
String name = nameParam.valueAsString();
//
Object oimporter = ObjectLocator.lookup(beanName, pluginId);
if (oimporter != null && oimporter instanceof DataImporter) {
DataImporter importer = (DataImporter) oimporter;
//
importer.setName(name);
importer.setTitle(title);
importer.setDataDir(dataDir);
importers.add(importer);
importerMap.put(name, importer);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public DataImporter getDateImporter(String name) {
refreshData();
return importerMap.get(name);
}
}