/*
// $Id: RemoteXmlaTester.java 482 2012-01-05 23:27:27Z jhyde $
//
// Licensed to Julian Hyde under one or more contributor license
// agreements. See the NOTICE file distributed with this work for
// additional information regarding copyright ownership.
//
// Julian Hyde licenses this file to you under the Apache License,
// Version 2.0 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at:
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
*/
package org.olap4j;
import org.olap4j.test.TestContext;
import org.olap4j.test.TestContext.Tester;
import org.olap4j.test.TestContext.Wrapper;
import java.sql.*;
import java.util.Properties;
/**
* Implementation of {@link org.olap4j.test.TestContext.Tester} which speaks
* to remote XML/A servers.
*
* @author Luc Boudreau
* @version $Id: RemoteXmlaTester.java 482 2012-01-05 23:27:27Z jhyde $
*/
public class LdRemoteOlap4jTester implements Tester {
public static final String DRIVER_URL_PREFIX = "jdbc:xmla:";
public static final String DRIVER_CLASS_NAME =
"org.olap4j.driver.olap4ld.Olap4ldDriver";
private String url = null;
private String user = null;
private String password = null;
private final TestContext testContext;
/**
* Creates a RemoteXmlaTester.
*
* <p>The {@link org.olap4j.test.TestContext.Tester} API requires a public
* constructor with a {@link org.olap4j.test.TestContext} parameter.
*
* @param testContext Test context
*/
public LdRemoteOlap4jTester(TestContext testContext) {
this.testContext = testContext;
final Properties properties = testContext.getProperties();
this.url =
properties.getProperty(
TestContext.Property.REMOTE_XMLA_URL.path);
if (url == null) {
throw new RuntimeException(
"Property " + TestContext.Property.REMOTE_XMLA_URL
+ " must be specified");
}
this.user =
properties.getProperty(
TestContext.Property.REMOTE_XMLA_USERNAME.path);
this.password =
properties.getProperty(
TestContext.Property.REMOTE_XMLA_PASSWORD.path);
}
public TestContext getTestContext() {
return testContext;
}
public Connection createConnection() throws SQLException {
return this.createConnection(url, null, null);
}
public Connection createConnectionWithUserPassword() throws SQLException {
return this.createConnection(url, user, password);
}
private Connection createConnection(
String url, String user, String password)
{
try {
Class.forName(DRIVER_CLASS_NAME);
return DriverManager.getConnection(url, user, password);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public String getDriverClassName() {
return DRIVER_CLASS_NAME;
}
public String getDriverUrlPrefix() {
return DRIVER_URL_PREFIX;
}
public Flavor getFlavor() {
return Flavor.REMOTE_XMLA;
}
public String getURL() {
return this.url;
}
public void setUrl(String url) {
this.url = url;
}
public Wrapper getWrapper() {
return TestContext.Wrapper.NONE;
}
}
// End RemoteXmlaTester.java