/*
* EuroCarbDB, a framework for carbohydrate bioinformatics
*
* Copyright (c) 2006-2009, Eurocarb project, or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
* A copy of this license accompanies this distribution in the file LICENSE.txt.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* Last commit: $Rev: 1932 $ by $Author: glycoslave $ on $Date:: 2010-08-05 #$
*/
package org.eurocarbdb.action.admin;
// stdlib imports
import java.util.Map;
import java.util.List;
import java.util.Iterator;
import java.util.zip.ZipFile;
import java.util.zip.ZipEntry;
import java.io.InputStream;
import java.io.IOException;
// 3rd party imports
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
// eurocarb imports
import org.eurocarbdb.dataaccess.Eurocarb;
import org.eurocarbdb.action.EurocarbAction;
import org.eurocarbdb.dataaccess.EntityManager;
// static imports
import static org.eurocarbdb.dataaccess.Eurocarb.getEntityManager;
/* class LoadTaxonomy *//******************************************
*
* Parses taxonomy information from a given input stream, and loads
* the resultant taxonomy data as Taxonomy objects into the data model
* backed by a given EntityManager.
*
* @author mjh <glycoslave@gmail.com>
* @version $Rev: 1932 $
*/
public class LoadTaxonomy extends EurocarbAction implements org.eurocarbdb.action.RequiresAdminLogin
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~ FIELDS ~~~~~~~~~~~~~~~~~~~~~~~~~~~//
/** Logging handle. */
protected static final Log log = LogFactory.getLog( LoadTaxonomy.class );
/** EntityManager to which taxonomy objects parsed from the given
* input stream will be stored. */
private EntityManager em;
/** Input stream from which to read & parse taxonomy data. */
private InputStream instreamNames, instreamNodes;
//~~~~~~~~~~~~~~~~~~~~~~~~~ METHODS ~~~~~~~~~~~~~~~~~~~~~~~~~~~//
/** Gets the EntityManager to which taxonomy objects parsed from the given
* input stream will be stored.
*/
public EntityManager getEntityManager() { return em; }
/** Sets the EntityManager to which taxonomy objects parsed from the given
* input stream will be stored.
*/
public void setEntityManager( EntityManager em ) { this.em = em; }
/** Gets the input stream from which to read & parse taxonomy name data. */
public InputStream getNamesInputStream() throws IOException
{
if ( instreamNames == null ) initDefaultInputStreams();
return instreamNames;
}
/** Gets the input stream from which to read & parse taxonomy nodes data. */
public InputStream getNodesInputStream() throws IOException
{
if ( instreamNodes == null )
initDefaultInputStreams();
return instreamNodes;
}
/* setNamesInputStream *//*************************************
*
* Sets the input stream from which to read & parse taxonomy names
* (ie: the NCBI taxonomy "names.dmp" file).
*
* Setting to null forces re-initialisation of default streams --
* see the initDefaultInputStreams method.
*
* @see #initDefaultInputStreams
*/
public void setNamesInputStream( InputStream in ) { instreamNames = in; }
/* setNodesInputStream *//*************************************
*
* Sets the input stream from which to read & parse taxonomy nodes
* (ie: the NCBI taxonomy "nodes.dmp" file).
*
* Setting to null forces re-initialisation of default streams --
* see the initDefaultInputStreams method.
*
* @see #initDefaultInputStreams
*/
public void setNodesInputStream( InputStream in ) { instreamNodes = in; }
/* initDefaultInputStreams *//*********************************
*
* Open zip file from local file, extract names & nodes files from the
* zip stream, assign to local fields for later parsing.
*/
protected void initDefaultInputStreams()
throws IOException
{
log.debug("initialising default input streams for NCBI names/nodes files");
String ncbi_zipfile_name = Eurocarb.getProperty("ncbi.taxonomy.localfile");
ZipFile ncbi_zipfile = new ZipFile( ncbi_zipfile_name );
ZipEntry names_file = ncbi_zipfile.getEntry("names.dmp");
ZipEntry nodes_file = ncbi_zipfile.getEntry("nodes.dmp");
this.instreamNames = ncbi_zipfile.getInputStream( names_file );
this.instreamNodes = ncbi_zipfile.getInputStream( nodes_file );
}
/* execute *//*************************************************
*
*/
public String execute()
{
return SUCCESS;
}
} // end class