/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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 ro.nextreports.server.api;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import ro.nextreports.server.api.client.IndexDTO;
import ro.nextreports.server.api.client.KeyDTO;
import ro.nextreports.server.api.client.ProcedureColumnDTO;
import ro.nextreports.server.api.client.ProcedureDTO;
import ro.nextreports.server.api.client.ResultSetDTO;
import ro.nextreports.server.api.client.ResultSetTypeDTO;
import ro.nextreports.server.api.client.TableDTO;
/**
* @author Decebal Suiu
*/
@Path("jdbc/databaseMetaData")
public class DatabaseMetaDataWebService {
// private static final Logger LOG = LoggerFactory.getLogger(DatabaseMetaDataWebService.class);
@POST
@Path("getDatabaseProductName")
public String getDatabaseProductName(String id) throws SQLException {
return DatabaseMetaDataHolder.get().get(id).getDatabaseProductName();
}
@POST
@Path("getDatabaseProductVersion")
public String getDatabaseProductVersion(String id) throws SQLException {
return DatabaseMetaDataHolder.get().get(id).getDatabaseProductVersion();
}
@POST
@Path("getDriverName")
public String getDriverName(String id) throws SQLException {
return DatabaseMetaDataHolder.get().get(id).getDriverName();
}
@POST
@Path("getDriverVersion")
public String getDriverVersion(String id) throws SQLException {
return DatabaseMetaDataHolder.get().get(id).getDriverVersion();
}
@POST
@Path("getUserName")
public String getUserName(String id) throws SQLException {
return DatabaseMetaDataHolder.get().get(id).getUserName();
}
@POST
@Path("getSQLKeywords")
public String getSQLKeywords(String id) throws SQLException {
return DatabaseMetaDataHolder.get().get(id).getSQLKeywords();
}
@POST
@Path("getSchemas")
public ResultSetDTO getSchemas(String id) {
try {
ResultSet resultSet = DatabaseMetaDataHolder.get().get(id).getSchemas();
return new ResultSetDTO(resultSet, false);
} catch (SQLException e) {
// TODO
e.printStackTrace();
return null;
}
}
@POST
@Path("getTables")
public ResultSetDTO getTables(TableDTO tableDTO) {
try {
ResultSet resultSet = DatabaseMetaDataHolder.get().get(tableDTO.id).getTables(tableDTO.catalog,
tableDTO.schemaPattern, tableDTO.tableNamePattern, tableDTO.types);
return new ResultSetDTO(resultSet, false);
} catch (SQLException e) {
// TODO
e.printStackTrace();
return null;
}
}
@POST
@Path("getProcedures")
public ResultSetDTO getProcedures(ProcedureDTO procedureDTO) {
try {
ResultSet resultSet = DatabaseMetaDataHolder.get().get(procedureDTO.id).getProcedures(procedureDTO.catalog,
procedureDTO.schemaPattern, procedureDTO.procedureNamePattern);
return new ResultSetDTO(resultSet, false);
} catch (SQLException e) {
// TODO
e.printStackTrace();
return null;
}
}
@POST
@Path("getPrimaryKeys")
public ResultSetDTO getPrimaryKeys(KeyDTO keyDTO) {
try {
ResultSet resultSet = DatabaseMetaDataHolder.get().get(keyDTO.id).getPrimaryKeys(keyDTO.catalog,
keyDTO.schema, keyDTO.table);
return new ResultSetDTO(resultSet, false);
} catch (SQLException e) {
// TODO
e.printStackTrace();
return null;
}
}
@POST
@Path("getImportedKeys")
public ResultSetDTO getImportedKeys(KeyDTO keyDTO) {
try {
ResultSet resultSet = DatabaseMetaDataHolder.get().get(keyDTO.id).getImportedKeys(keyDTO.catalog,
keyDTO.schema, keyDTO.table);
return new ResultSetDTO(resultSet, false);
} catch (SQLException e) {
// TODO
e.printStackTrace();
return null;
}
}
@POST
@Path("getProcedureColumns")
public ResultSetDTO getProcedureColumns(ProcedureColumnDTO procedureColumnDTO) {
try {
ResultSet resultSet = DatabaseMetaDataHolder.get().get(procedureColumnDTO.id).getProcedureColumns(procedureColumnDTO.catalog,
procedureColumnDTO.schemaPattern, procedureColumnDTO.procedureNamePattern, procedureColumnDTO.columnNamePattern);
return new ResultSetDTO(resultSet, false);
} catch (SQLException e) {
// TODO
e.printStackTrace();
return null;
}
}
@POST
@Path("getIndexInfo")
public ResultSetDTO getIndexInfo(IndexDTO indexDTO) {
try {
ResultSet resultSet = DatabaseMetaDataHolder.get().get(indexDTO.id).getIndexInfo(indexDTO.catalog,
indexDTO.schema, indexDTO.table, indexDTO.unique, indexDTO.approximate);
return new ResultSetDTO(resultSet, false);
} catch (SQLException e) {
// TODO
e.printStackTrace();
return null;
}
}
@POST
@Path("supportsResultSetType")
public boolean supportsResultSetType(ResultSetTypeDTO rstDTO) {
try {
boolean result = DatabaseMetaDataHolder.get().get(rstDTO.id).supportsResultSetType(rstDTO.type);
return result;
} catch (SQLException e) {
// TODO
e.printStackTrace();
return false;
}
}
}