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

org.firebirdsql.gds.impl.wire.WireGDSFactoryPlugin Maven / Gradle / Ivy

There is a newer version: 2.2.7
Show newest version
package org.firebirdsql.gds.impl.wire;

import org.firebirdsql.gds.ClassFactory;
import org.firebirdsql.gds.GDS;
import org.firebirdsql.gds.GDSException;
import org.firebirdsql.gds.GDSObjectFactory;
import org.firebirdsql.gds.impl.GDSFactoryPlugin;

public class WireGDSFactoryPlugin implements GDSFactoryPlugin {

    private static final String[] TYPE_ALIASES = new String[]{"TYPE4"};
    private static final String[] JDBC_PROTOCOLS = new String[]{"jdbc:firebirdsql:java:", "jdbc:firebirdsql:"};
    
    private static AbstractJavaGDSImpl gdsImpl;
    
    public String getPluginName() {
        return "Pure Java GDS implementation.";
    }

    public String getTypeName() {
        return AbstractJavaGDSImpl.PURE_JAVA_TYPE_NAME;
    }

    public String[] getTypeAliases() {
        return TYPE_ALIASES;
    }

    public Class getConnectionClass() {
        return ClassFactory.get(ClassFactory.FBConnection);
    }

    public String[] getSupportedProtocols() {
        return JDBC_PROTOCOLS;
    }

    public GDS getGDS() {
        if (gdsImpl == null)
            gdsImpl = GDSObjectFactory.createJavaGDSImpl();

        return gdsImpl;
    }

    public String getDatabasePath(String server, Integer port, String path) throws GDSException{
        if (server == null)
            throw new GDSException("Server name/address is required " +
                    "for pure Java implementation.");
        
        if (path == null)
            throw new GDSException("Database name/path is required.");
        
        StringBuffer sb = new StringBuffer();
        
        sb.append(server);
        if (port != null)
            sb.append("/").append(port.intValue());
        
        sb.append(":").append(path);
        
        return sb.toString();
    }

    public String getDatabasePath(String jdbcUrl) throws GDSException {

        String[] protocols = getSupportedProtocols();
        for (int i = 0; i < protocols.length; i++) {
            if (jdbcUrl.startsWith(protocols[i]))
                return jdbcUrl.substring(protocols[i].length());
        }

        throw new IllegalArgumentException("Incorrect JDBC protocol handling: "
                + jdbcUrl);
    }

    public String getDefaultProtocol() {
        return getSupportedProtocols()[0];
    }

    public int hashCode() {
        return getTypeName().hashCode();
    }
    
    public boolean equals(Object obj) {
        if (obj == this) 
            return true;
        
        if (!(obj instanceof WireGDSFactoryPlugin))
            return false;
        
        return true;
    }   
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy