#include <stdio.h>
#include "jrb.h"

typedef struct {
  char *name;
  int age;
  char *ssn;
} Entry;

main()
{
  JRB t, tmp;
  FILE *f;
  int age;
  char fn[300], ln[300], ssn[100], n[300];
  char command[300];
  Entry *e;

  t = make_jrb();

  f = stdin;

  while(fscanf(f, "%s", command) != EOF) {
    if (strcmp(command, "ADD") == 0) {
      fscanf(f, "%s %s %d %s", fn, ln, &age, ssn);
      e = (Entry *) malloc(sizeof(Entry));
      e->name = (char *) malloc(sizeof(char)*(strlen(ln)+strlen(fn)+3));
      strcpy(e->name, ln);
      strcat(e->name, ", ");
      strcat(e->name, fn);
      e->ssn = (char *) strdup(ssn);
      e->age = age;
      jrb_insert_str(t, e->name, new_jval_v(e));
    } else if (strcmp(command, "PRINT") == 0) {
      printf("__________________________________________________\n");
      jrb_traverse(tmp, t) {
        e = (Entry *) tmp->val.v;
        printf("%-30s -- %11s %4d\n", e->name, e->ssn, e->age);
      }
      printf("--------------------------------------------------\n");
    } else if (strcmp(command, "DELETE") == 0) {
      fscanf(f, "%s %s", fn, ln);
      strcpy(n, ln);
      strcat(n, ", ");
      strcat(n, fn);
      tmp = jrb_find_str(t, n);
      if (tmp == NULL) {
        printf("Error: No %s %s\n", fn, ln);
      } else {
        jrb_delete_node(tmp);
      }
    } else if (strcmp(command, "DONE") == 0) {
      exit(0);
    } else {
      printf("Bad command: %s\n", command);
    }
  }
}
    
  

