All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.fugerit.java.daogen.base.tool.DaoGenToolHandler Maven / Gradle / Ivy

package org.fugerit.java.daogen.base.tool;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;

import org.fugerit.java.core.cfg.ConfigException;
import org.fugerit.java.core.db.connect.ConnectionFactory;
import org.fugerit.java.core.db.connect.ConnectionFactoryImpl;
import org.fugerit.java.core.lang.helpers.StringUtils;
import org.fugerit.java.core.util.PropsIO;
import org.fugerit.java.daogen.base.config.DaogenFacade;
import org.fugerit.java.daogen.base.config.DaogenConfigDump;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DaoGenToolHandler {

	private static final Logger logger = LoggerFactory.getLogger( DaoGenToolHandler.class ); 
	
	public static final String ARG_DAOGEN_CONFIG = "daogen-config";
	
	public static final String ARG_DB_CONFIG = "db-config";
	
	public static final String ARG_TABLE_LIST = "table-list";
	public static final String ARG_TABLE_LIST_DEFAULT = DaogenConfigDump.PARAM_TABLE_LIST_ALL;
	
	public static final String ARG_ACTION = "action";
	public static final String ARG_ACTION_DAOGEN = "daogen";
	public static final String ARG_ACTION_DUMP = "dump";
	
	public static void handle( Properties params ) throws Exception {
		String action = params.getProperty( ARG_ACTION );
		if ( ARG_ACTION_DAOGEN.equalsIgnoreCase( action ) ) {
			handleDaogen(params);
		} else if ( ARG_ACTION_DUMP.equalsIgnoreCase( action ) ) {
			handleDump(params);
		} else {
			throw new ConfigException( "Reuired parameter : "+ARG_ACTION+" ("+ARG_ACTION_DAOGEN+"|"+ARG_ACTION_DUMP+")" );
		}
	}
	
	public static void  handleDaogen( Properties params ) throws Exception {
		String daogenConfig = params.getProperty( ARG_DAOGEN_CONFIG );
		if ( StringUtils.isEmpty( daogenConfig ) ) {
			throw new ConfigException( "Argument "+ARG_DAOGEN_CONFIG+" must be provided" );
		} else {
			logger.info( "DAOGEN START!" );
			try ( FileInputStream fis = new FileInputStream( new File( daogenConfig ) ) ) {
				DaogenFacade.generate( fis );
			}
			logger.info( "DAOGEN END!" );
		}
	}
	
	public static void  handleDump( Properties params ) throws Exception {
		String dbConfig = params.getProperty( ARG_DB_CONFIG );
		String daogenConfig = params.getProperty( ARG_DAOGEN_CONFIG );
		String tableList = params.getProperty( ARG_TABLE_LIST, ARG_TABLE_LIST_DEFAULT );
		if ( dbConfig == null || daogenConfig == null ) {
			throw new ConfigException( "Missing required parameter "+ARG_DAOGEN_CONFIG+", "+ARG_DB_CONFIG );
		}
		Properties dbProps = PropsIO.loadFromFile( dbConfig );
		ConnectionFactory cf = ConnectionFactoryImpl.newInstance( dbProps );
		try ( FileWriter writer = new FileWriter( new File( daogenConfig ) ) ) {
			List tableNameList = Arrays.asList( tableList.split( "," ) );
			DaogenConfigDump.dumpConfig( cf , params, writer, tableNameList );	
		}
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy