// Path: obridge-main/src/main/java/org/obridge/context/OBridgeConfiguration.java
// public class OBridgeConfiguration {
// 
//     public static final boolean GENERATE_SOURCE_FOR_PLSQL_TYPES = false;
//     public static final boolean ADD_ASSERT = false;
// 
//     private String jdbcUrl;
//     private String sourceRoot;
//     private String rootPackageName;
//     private Packages packages;
//     private Logging logging;
//     private String packagesLike;
//     private String sourceOwner;
//     private String projectName;
//     private String sourcesTableProc;
//     private String sourcesTable;
// 
//     public String getPackagesLike() {
//         if (packagesLike == null) {
//             return "%";
//         }
//         return packagesLike;
//     }
// 
//     public void setPackagesLike(String packagesLike) {
//         this.packagesLike = packagesLike;
//     }
// 
//     public String getSourceOwner() {
//         return sourceOwner;
//     }
// 
//     public void setSourceOwner(String sourceOwner) {
//         this.sourceOwner = sourceOwner;
//     }
// 
//     public String getJdbcUrl() {
//         return jdbcUrl;
//     }
// 
//     public void setJdbcUrl(String jdbcUrl) {
//         this.jdbcUrl = jdbcUrl;
//     }
// 
//     public String getSourceRoot() {
//         return sourceRoot;
//     }
// 
//     public void setSourceRoot(String sourceRoot) {
//         this.sourceRoot = sourceRoot;
//     }
// 
//     public String getRootPackageName() {
//         return rootPackageName;
//     }
// 
//     public void setRootPackageName(String rootPackageName) {
//         this.rootPackageName = rootPackageName;
//     }
// 
//     public Packages getPackages() {
//         return packages;
//     }
// 
//     public void setPackages(Packages packages) {
//         this.packages = packages;
//     }
// 
//     public Logging getLogging() {
//         return logging;
//     }
// 
//     public void setLogging(Logging logging) {
//         this.logging = logging;
//     }
// 
//     public String getSourcesTable() {
//         return sourcesTable;
//     }
// 
//     public void setSourcesTable(String sourcesTable) {
//         this.sourcesTable = sourcesTable;
//     }
// 
//     public String getSourcesTableProc() {
//         return sourcesTableProc;
//     }
// 
//     public String getProjectName() { return projectName == null ? "default": projectName; }
// 
//     public void setProjectName(String projectName) { this.projectName = projectName; }
// }
// 
// Path: obridge-main/src/main/java/org/obridge/util/OBridgeException.java
// public class OBridgeException extends RuntimeException {
// 
//     public OBridgeException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     public OBridgeException(Throwable cause) {
//         super(cause);
//     }
// 
//     public OBridgeException(String message) {
//         super(message);
//     }
// }
// 
// Path: obridge-main/src/main/java/org/obridge/util/XStreamFactory.java
// public class XStreamFactory {
// 
//     private XStreamFactory() {
//     }
// 
//     public static XStream createXStream() {
//         XStream xStream = new XStream();
// 
//         xStream.alias("configuration", OBridgeConfiguration.class);
// 
//         return xStream;
//     }
// 
// }


import java.io.File;
import java.io.IOException;
import java.util.Properties;
import com.thoughtworks.xstream.XStream;
import org.apache.commons.cli.*;
import org.obridge.context.OBridgeConfiguration;
import org.obridge.generators.*;
import org.obridge.util.OBridgeException;
import org.obridge.util.XStreamFactory;
                Option.builder("c")
                        .desc("OBridge XML config file")
                        .longOpt("config")
                        .hasArg()
                        .argName("file")
                        .build()
        );

        CommandLineParser parser = new PosixParser();
        return parser.parse(o, args);
    }

    public void generate(OBridgeConfiguration c) {
        // populate objects table
        PopulateObjectsTable.run(c);

        // generate objects
        EntityObjectGenerator.generate(c);

        // generate converters
        ConverterObjectGenerator.generate(c);

        // generate contexts
        ProcedureContextGenerator.generate(c);

        // generate packages
        PackageObjectGenerator.generate(c);
    }

    public OBridgeConfiguration loadConfiguration(File f) {
// Path: obridge-main/src/main/java/org/obridge/context/OBridgeConfiguration.java
// public class OBridgeConfiguration {
// 
//     public static final boolean GENERATE_SOURCE_FOR_PLSQL_TYPES = false;
//     public static final boolean ADD_ASSERT = false;
// 
//     private String jdbcUrl;
//     private String sourceRoot;
//     private String rootPackageName;
//     private Packages packages;
//     private Logging logging;
//     private String packagesLike;
//     private String sourceOwner;
//     private String projectName;
//     private String sourcesTableProc;
//     private String sourcesTable;
// 
//     public String getPackagesLike() {
//         if (packagesLike == null) {
//             return "%";
//         }
//         return packagesLike;
//     }
// 
//     public void setPackagesLike(String packagesLike) {
//         this.packagesLike = packagesLike;
//     }
// 
//     public String getSourceOwner() {
//         return sourceOwner;
//     }
// 
//     public void setSourceOwner(String sourceOwner) {
//         this.sourceOwner = sourceOwner;
//     }
// 
//     public String getJdbcUrl() {
//         return jdbcUrl;
//     }
// 
//     public void setJdbcUrl(String jdbcUrl) {
//         this.jdbcUrl = jdbcUrl;
//     }
// 
//     public String getSourceRoot() {
//         return sourceRoot;
//     }
// 
//     public void setSourceRoot(String sourceRoot) {
//         this.sourceRoot = sourceRoot;
//     }
// 
//     public String getRootPackageName() {
//         return rootPackageName;
//     }
// 
//     public void setRootPackageName(String rootPackageName) {
//         this.rootPackageName = rootPackageName;
//     }
// 
//     public Packages getPackages() {
//         return packages;
//     }
// 
//     public void setPackages(Packages packages) {
//         this.packages = packages;
//     }
// 
//     public Logging getLogging() {
//         return logging;
//     }
// 
//     public void setLogging(Logging logging) {
//         this.logging = logging;
//     }
// 
//     public String getSourcesTable() {
//         return sourcesTable;
//     }
// 
//     public void setSourcesTable(String sourcesTable) {
//         this.sourcesTable = sourcesTable;
//     }
// 
//     public String getSourcesTableProc() {
//         return sourcesTableProc;
//     }
// 
//     public String getProjectName() { return projectName == null ? "default": projectName; }
// 
//     public void setProjectName(String projectName) { this.projectName = projectName; }
// }
// 
// Path: obridge-main/src/main/java/org/obridge/util/OBridgeException.java
// public class OBridgeException extends RuntimeException {
// 
//     public OBridgeException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     public OBridgeException(Throwable cause) {
//         super(cause);
//     }
// 
//     public OBridgeException(String message) {
//         super(message);
//     }
// }
// 
// Path: obridge-main/src/main/java/org/obridge/util/XStreamFactory.java
// public class XStreamFactory {
// 
//     private XStreamFactory() {
//     }
// 
//     public static XStream createXStream() {
//         XStream xStream = new XStream();
// 
//         xStream.alias("configuration", OBridgeConfiguration.class);
// 
//         return xStream;
//     }
// 
// }


// Path: obridge-main/src/main/java/org/obridge/OBridge.java
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import com.thoughtworks.xstream.XStream;
import org.apache.commons.cli.*;
import org.obridge.context.OBridgeConfiguration;
import org.obridge.generators.*;
import org.obridge.util.OBridgeException;
import org.obridge.util.XStreamFactory;

                Option.builder("c")
                        .desc("OBridge XML config file")
                        .longOpt("config")
                        .hasArg()
                        .argName("file")
                        .build()
        );

        CommandLineParser parser = new PosixParser();
        return parser.parse(o, args);
    }

    public void generate(OBridgeConfiguration c) {
        // populate objects table
        PopulateObjectsTable.run(c);

        // generate objects
        EntityObjectGenerator.generate(c);

        // generate converters
        ConverterObjectGenerator.generate(c);

        // generate contexts
        ProcedureContextGenerator.generate(c);

        // generate packages
        PackageObjectGenerator.generate(c);
    }

    public OBridgeConfiguration loadConfiguration(File f) {
        XStream xs = XStreamFactory.createXStream();