package io.teknek.nibiru.cli; import io.teknek.nibiru.Val; import io.teknek.nibiru.client.Client; import io.teknek.nibiru.client.ClientException; import io.teknek.nibiru.client.ColumnFamilyClient; import io.teknek.nibiru.client.MetaDataClient; import io.teknek.nibiru.client.Session; import io.teknek.nibiru.engine.DefaultColumnFamily; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; public class Cli { public static void main (String [] args) throws IOException{ MetaDataClient meta = null; ColumnFamilyClient client = null; Session session = null; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line; System.out.println("Welcome to a very minimal Cli type 'connect <host> <port>' to get started "); System.out.println("ok> "); while ((line = br.readLine()) != null){ String [] parts = line.split("\\s+"); if ("connect".equalsIgnoreCase(parts[0])){ meta = new MetaDataClient(parts[1], Integer.parseInt(parts[2]), 10000, 10000); client = new ColumnFamilyClient(new Client(parts[1], Integer.parseInt(parts[2]), 10000, 10000)); } else if ("showcluster".equalsIgnoreCase(parts[0])){ try { System.out.println(meta.getLiveMembers()); } catch (ClientException e) { System.out.println(e.getMessage()); } } else if ("use".equalsIgnoreCase(parts[0])){ session = client.createBuilder().withKeyspace(parts[1]).withStore(parts[2]).build(); } else if ("set".equalsIgnoreCase(parts[0])) { try { session.put(parts[1], parts[2], parts[3], System.currentTimeMillis()*1000); } catch (ClientException e) { e.printStackTrace(); } } else if ("get".equalsIgnoreCase(parts[0])) { try { Val v = session.get(parts[1], parts[2]); System.out.println(v); } catch (ClientException e) { e.printStackTrace(); } } else if ("createkeyspace".equalsIgnoreCase(parts[0])) { try { meta.createOrUpdateKeyspace(parts[1], new HashMap<String,Object>(), true); } catch (ClientException e) { System.out.println(e); } } else if ("createcolumnfamily".equalsIgnoreCase(parts[0])) { try { Map<String,Object> m = new HashMap<>(); m.put("implementing_class", DefaultColumnFamily.class.getName()); meta.createOrUpdateStore(parts[1], parts[2], m, true); } catch (ClientException e) { System.out.println(e); } } else if ("showkeyspaces".equalsIgnoreCase(parts[0])) { try { System.out.println(meta.listKeyspaces()); } catch (ClientException e) { System.out.println(e); } } else if ("describekeyspace".equalsIgnoreCase(parts[0])) { try { System.out.println(meta.listStores(parts[1])); } catch (ClientException e) { System.out.println(e); } } else if ("exit".equalsIgnoreCase(parts[0])){ break; } else { System.out.println("no command for "+ parts[0]); } System.out.println("ok>"); } } }