com.tesora.dve.sql.util.PortalDBHelperConnectionResource.java Source code

Java tutorial

Introduction

Here is the source code for com.tesora.dve.sql.util.PortalDBHelperConnectionResource.java

Source

package com.tesora.dve.sql.util;

/*
 * #%L
 * Tesora Inc.
 * Database Virtualization Engine
 * %%
 * Copyright (C) 2011 - 2014 Tesora Inc.
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License, version 3,
 * as published by the Free Software Foundation.
 * 
 * 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 Affero General Public License for more details.
 * 
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 * #L%
 */

import java.util.Properties;

import org.apache.commons.lang.StringUtils;

import com.tesora.dve.common.DBHelper;
import com.tesora.dve.common.PEConstants;
import com.tesora.dve.common.PEUrl;
import com.tesora.dve.common.catalog.TestCatalogHelper;
import com.tesora.dve.standalone.PETest;

public class PortalDBHelperConnectionResource extends DBHelperConnectionResource {

    public PortalDBHelperConnectionResource() throws Throwable {
        super();
    }

    public PortalDBHelperConnectionResource(final boolean useUTF8) throws Throwable {
        super(useUTF8);
    }

    public PortalDBHelperConnectionResource(Properties urlConnectOptions) throws Throwable {
        super(urlConnectOptions);
    }

    public PortalDBHelperConnectionResource(String userName, String password) throws Throwable {
        super(userName, password);
    }

    protected PortalDBHelperConnectionResource(PortalDBHelperConnectionResource other) throws Throwable {
        super(other);
    }

    @Override
    public JdbcConnectParams getConnectParams() throws Throwable {
        if (connParams != null)
            return connParams;
        Properties catalogProps = TestCatalogHelper.getTestCatalogProps(PETest.class);
        String portalPort = catalogProps.getProperty(PEConstants.MYSQL_PORTAL_PORT_PROPERTY,
                PEConstants.MYSQL_PORTAL_DEFAULT_PORT);

        PEUrl peurl = PEUrl.fromUrlString(catalogProps.getProperty(DBHelper.CONN_URL));
        peurl.setQueryOptions(new Properties());
        peurl.setPort(portalPort);
        JdbcConnectParams jcp = new JdbcConnectParams(peurl.getURL(), catalogProps.getProperty(DBHelper.CONN_USER),
                catalogProps.getProperty(DBHelper.CONN_PASSWORD));

        return jcp;
    }

    @Override
    public ConnectionResource getNewConnection() throws Throwable {
        return new PortalDBHelperConnectionResource(this);
    }

    @Override
    public ExceptionClassification classifyException(Throwable t) {
        String msg = t.getMessage().trim();
        if (msg == null)
            return null;
        if (StringUtils.endsWithIgnoreCase(msg, "expected exception"))
            return ExceptionClassification.DNE;
        if (StringUtils.containsIgnoreCase(msg, "No such Table:")
                || StringUtils.containsIgnoreCase(msg, "No such Table(s)")
                || StringUtils.containsIgnoreCase(msg, "No such Column:"))
            return ExceptionClassification.DNE;
        if (StringUtils.containsIgnoreCase(msg, "Unsupported statement kind for planning:")
                && StringUtils.endsWithIgnoreCase(msg, "RollbackTransactionStatement"))
            return ExceptionClassification.DNE;
        if (StringUtils.containsIgnoreCase(msg, "Data Truncation:"))
            return ExceptionClassification.OUT_OF_RANGE;
        if (StringUtils.containsIgnoreCase(msg, "ParserException")
                || StringUtils.containsIgnoreCase(msg, "Exception: Unable to build plan")
                || StringUtils.containsIgnoreCase(msg, "Parsing Failed:"))
            return ExceptionClassification.SYNTAX;
        if (StringUtils.containsIgnoreCase(msg, "Duplicate entry"))
            return ExceptionClassification.DUPLICATE;
        // this one should be removed ASAP we know we have a parser error when we get this
        if (StringUtils.containsIgnoreCase(msg, "java.lang.NullPointerException"))
            return ExceptionClassification.SYNTAX;
        return super.classifyException(t);
    }
}