org.pepstock.jem.junit.test.antutils.java.CreateJemJdbcResource.java Source code

Java tutorial

Introduction

Here is the source code for org.pepstock.jem.junit.test.antutils.java.CreateJemJdbcResource.java

Source

/**
JEM, the BEE - Job Entry Manager, the Batch Execution Environment
Copyright (C) 2012-2015   Andrea "Stock" Stocchero
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, either version 3 of the License, or
any later version.
    
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 General Public License for more details.
    
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package org.pepstock.jem.junit.test.antutils.java;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.naming.InitialContext;

import org.apache.commons.io.FileUtils;
import org.pepstock.jem.ant.AntKeys;
import org.pepstock.jem.node.DataPathsContainer;
import org.pepstock.jem.node.configuration.ConfigKeys;
import org.pepstock.jem.node.configuration.Configuration;
import org.pepstock.jem.node.resources.Resource;
import org.pepstock.jem.node.resources.ResourcePropertiesUtil;
import org.pepstock.jem.node.resources.XmlUtil;
import org.pepstock.jem.node.resources.impl.CommonKeys;
import org.pepstock.jem.node.resources.impl.jdbc.JdbcResourceKeys;
import org.pepstock.jem.node.sgm.PathsContainer;
import org.pepstock.jem.node.tasks.jndi.ContextUtils;
import org.pepstock.jem.util.CharSet;

import com.thoughtworks.xstream.XStream;

/**
 * This class will create a dataset containing the definition of the data source
 * containing the information to connect to JEM-DB in read only mode. This
 * dataset will then be used by the junit-test to create the JDBC resource that
 * will be used to make an example of jdbc connection through the use of JEM
 * resource
 * 
 * @author Simone "busy" Businaro
 * 
 */
public class CreateJemJdbcResource {
    /**
     * config file of the environment
     */
    public static final String JEM_ENV_CONFIG = "config/jem-env.xml";

    /**
     * name of the dataset that will contain the JDBC resource information
     */
    public static final String DATA_SET_NAME = "test_common/JEM_JDBC_RESOURCE";

    /**
     * 
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        String persistencePath = System.getProperty(ConfigKeys.JEM_PERSISTENCE_PATH_NAME);
        //      String dataPath = System.getProperty(ConfigKeys.JEM_DATA_PATH_NAME);

        File file = new File(persistencePath);
        String[] directories = file.list(new FilenameFilter() {
            @Override
            public boolean accept(File current, String name) {
                return new File(current, name).isDirectory();
            }
        });
        // get first directory that should be one of the JEM environment
        String jemEnv = directories[0];
        File configFile = new File(persistencePath + "/" + jemEnv + "/" + JEM_ENV_CONFIG);
        String xmlConfig = FileUtils.readFileToString(configFile, CharSet.DEFAULT_CHARSET_NAME);
        Configuration jemEnvConf = Configuration.unmarshall(xmlConfig);
        // create dataSource with JEM Dabase info read from configuration file
        Resource resource = new Resource();
        resource.setType("jdbc");
        resource.setName("JUNIT_JDBC_JEM");
        resource.setUser("root");
        resource.setLastModified(new Date());

        ResourcePropertiesUtil.addProperty(resource, JdbcResourceKeys.DRIVER_CLASS_NAME,
                jemEnvConf.getDatabase().getDriver(), true, false);
        ResourcePropertiesUtil.addProperty(resource, CommonKeys.URL, jemEnvConf.getDatabase().getUrl(), true,
                false);
        ResourcePropertiesUtil.addProperty(resource, CommonKeys.USERID, jemEnvConf.getDatabase().getUser(), true,
                false);
        ResourcePropertiesUtil.addProperty(resource, CommonKeys.PASSWORD, jemEnvConf.getDatabase().getPassword(),
                false, false);

        ResourcePropertiesUtil.addProperty(resource, JdbcResourceKeys.DEFAULT_READONLY, "true", true, false);
        ResourcePropertiesUtil.addProperty(resource, JdbcResourceKeys.DEFAULT_AUTOCOMMIT, "true", true, false);

        Map<String, String> customProps = new HashMap<String, String>();
        customProps.put("useCompression", "false");

        InitialContext ic = ContextUtils.getContext();
        // loads datapath container
        DataPathsContainer dc = (DataPathsContainer) ic.lookup(AntKeys.ANT_DATAPATHS_BIND_NAME);
        PathsContainer container = dc.getPaths(DATA_SET_NAME);
        String dataPath = container.getCurrent().getContent();

        XStream xStream = XmlUtil.getXStream();
        // write the resource to a file that will than be use to import the
        // resource on JEM
        String xmlResource = xStream.toXML(resource);

        File dataSet = new File(dataPath, DATA_SET_NAME);
        System.out.println("Generated reousrce:");
        System.out.println(xmlResource);
        System.out.println("");
        System.out.println("Writing resource to dataset:" + dataSet);
        FileUtils.writeStringToFile(dataSet, xmlResource);
    }
}