importexportmanagerimpl.java

来自「Rapla是一个灵活的多用户资源管理系统。它提供的一些功能有:日历GUI」· Java 代码 · 共 90 行

JAVA
90
字号
/*--------------------------------------------------------------------------*
 | Copyright (C) 2006 Christopher Kohlhaas                                  |
 |                                                                          |
 | This program is free software; you can redistribute it and/or modify     |
 | it under the terms of the GNU General Public License as published by the |
 | Free Software Foundation. A copy of the license has been included with   |
 | these distribution in the COPYING file, if not go to www.fsf.org         |
 |                                                                          |
 | As a special exception, you are granted the permissions to link this     |
 | program with every library, which license fulfills the Open Source       |
 | Definition as published by the Open Source Initiative (OSI).             |
 *--------------------------------------------------------------------------*/
package org.rapla.storage.impl;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.logger.Logger;
import org.rapla.framework.RaplaContext;
import org.rapla.framework.RaplaContextException;
import org.rapla.framework.RaplaException;
import org.rapla.storage.CachableStorageOperator;
import org.rapla.storage.ImportExportManager;
/**  Imports the content of on store into another.
 Export does an import with source and destination exchanged.
<p>Configuration:</p>
<pre>
  <importexport id="importexport" activation="request">
    <source>file</source>
    <dest>sql</dest>
  </importexport>
</pre>
*/
public class ImportExportManagerImpl implements ImportExportManager {

    RaplaContext serviceManager;
    String sourceString;
    String destString;
    Logger logger;
    
    public ImportExportManagerImpl(RaplaContext serviceManager,Configuration configuration) throws RaplaException
    {
        this.logger = (Logger) serviceManager.lookup( Logger.class.getName());
        this.serviceManager = serviceManager;
        try {
            sourceString = configuration.getChild("source").getValue();
            destString = configuration.getChild("dest").getValue();
        } catch (ConfigurationException e) {
            throw new RaplaException( e);
        }
    }
    
    protected Logger getLogger() {
        return logger;
    }

    /* Import the source into dest.   */
    public void doImport() throws RaplaException {
        doConvert(sourceString,destString);
        getLogger().info("Convertion from XML to SQL complete");
    }

    /* Export the dest into source.   */
    public void doExport() throws RaplaException {
        doConvert(destString,sourceString);
        getLogger().info("Convertion from SQL to XML complete");
    }

    private void doConvert(String source,String dest) throws RaplaException {
        CachableStorageOperator sourceOperator;
        CachableStorageOperator destOperator;
        getLogger().info("Start converting from " + source + " to " + dest);
        try {
            sourceOperator = ( CachableStorageOperator)
                serviceManager.lookup(CachableStorageOperator.ROLE + "/" + source);
            destOperator = ( CachableStorageOperator)
                serviceManager.lookup(CachableStorageOperator.ROLE + "/" + dest);
        } catch (RaplaContextException ex) {
            throw new RaplaException(ex);
        }
        sourceOperator.connect();
        destOperator.setCache(sourceOperator.getCache());
        destOperator.saveData();
        sourceOperator.disconnect();
        destOperator.disconnect();
    }
}




⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?