package org.apache.hadoop.hive.mastiff; import helma.xmlrpc.XmlRpcClient; import helma.xmlrpc.XmlRpcException; import java.io.IOException; import java.net.MalformedURLException; import java.util.Hashtable; import java.util.Vector; public class MastiffMetastoreClient { final static public String DEFAULT_PREFIX = "default."; private final String serverIp; public MastiffMetastoreClient(String ip) { this.serverIp = ip; } public Hashtable getMetadata(String table_name) { String tblName = parseName(table_name); try { XmlRpcClient client = new XmlRpcClient(serverIp); Vector params = new Vector(); params.addElement(tblName); Object rs = client.execute("find_table", params); if (rs instanceof Hashtable) { Hashtable result = (Hashtable) rs; return result; } else { if (rs instanceof Boolean && Boolean.FALSE.equals(rs)) { return null; } } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (XmlRpcException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public boolean create_mmtable(String tableName, String columnsMap, String algorithm, String codingType) { try { XmlRpcClient client = new XmlRpcClient(serverIp); Vector params = new Vector(); params.addElement(tableName); params.addElement(columnsMap); params.addElement(algorithm); params.addElement(codingType); Object result = client.execute("create_table", params); if (result instanceof Boolean && Boolean.TRUE.equals(result)) { return true; } else if (result instanceof Boolean && Boolean.FALSE.equals(result)) { return false; } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (XmlRpcException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; } public void delete_mmtable(String tableName) { try { XmlRpcClient client = new XmlRpcClient(serverIp); Vector params = new Vector(); params.addElement(tableName); client.execute("delete_table", params); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (XmlRpcException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String parseName(String name) { if (name.startsWith(DEFAULT_PREFIX)) { name = name.substring(DEFAULT_PREFIX.length()); } return name; } }