/* * JBoss, Home of Professional Open Source. * See the COPYRIGHT.txt file distributed with this work for information * regarding copyright ownership. Some portions may be licensed * to Red Hat, Inc. under one or more contributor license agreements. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. */ package org.teiid.translator.hbase.phoenix; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import org.apache.phoenix.schema.PColumn; import org.apache.phoenix.schema.PTable; import org.teiid.language.SQLConstants.Tokens; public class PhoenixUtils { public static final String QUOTE = "\""; public static String hbaseTableMappingDDL(PTable ptable) { StringBuffer sb = new StringBuffer(); sb.append("CREATE TABLE IF NOT EXISTS").append(Tokens.SPACE).append(ptable.getTableName().getString()); sb.append(Tokens.SPACE).append(Tokens.LPAREN); for (PColumn pColumn : ptable.getColumns()) { if(pColumn.getFamilyName() == null) { String pk = pColumn.getName().getString(); sb.append(pk).append(Tokens.SPACE).append(pColumn.getDataType().getSqlTypeName()).append(Tokens.SPACE).append("PRIMARY KEY").append(Tokens.COMMA).append(Tokens.SPACE); } else { String family = pColumn.getFamilyName().getString(); String qualifier = pColumn.getName().getString(); sb.append(family).append(Tokens.DOT).append(qualifier).append(Tokens.SPACE).append(pColumn.getDataType().getSqlTypeName()).append(Tokens.COMMA).append(Tokens.SPACE); } } // String pks = ""; // for(PColumn pkColumn: ptable.getPKColumns()) { // pks += pkColumn.getName().getString(); // pks += Tokens.COMMA; // pks += Tokens.SPACE; // } // pks = pks.substring(0, pks.length() - 2); // sb.append("CONSTRAINT").append(Tokens.SPACE).append("PK_" + ptable.getTableName().getString()).append(Tokens.SPACE) ; // sb.append("PRIMARY KEY").append(Tokens.SPACE).append(Tokens.LPAREN).append(pks).append(Tokens.RPAREN); String ddl = sb.toString(); ddl = ddl.substring(0, ddl.length() - 2) + Tokens.RPAREN ; return ddl; } public static boolean executeUpdate(Connection conn, String sql) throws SQLException { Statement stmt = null; try { stmt = conn.createStatement(); stmt.executeUpdate(sql); } catch (SQLException e) { throw e; } finally { close(stmt); } return true ; } public static void close(Statement stmt) { if(null != stmt) { try { stmt.close(); stmt = null; } catch (SQLException e) { } } } public static Connection getPhoenixConnection(String zkQuorum) throws Exception { Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); String connectionURL = "jdbc:phoenix:" + zkQuorum; Connection conn = DriverManager.getConnection(connectionURL); conn.setAutoCommit(true); return conn; } }