void removeGroupByColumn(ColumnDefinition cd) {
   try {
     TableUtil.get()
         .atomicRemoveGroupByColumn(
             Tables.getInstance(), getAppName(), getTableId(), cd.getElementKey());
   } catch (ServicesAvailabilityException e) {
     Toast.makeText(getActivity(), "Unable to remove column from Group By list", Toast.LENGTH_LONG)
         .show();
   }
 }
 void setColumnAsIndexedCol(ColumnDefinition cd) {
   try {
     TableUtil.get()
         .atomicSetIndexColumn(
             Tables.getInstance(),
             getAppName(),
             getTableId(),
             (cd == null) ? null : cd.getElementKey());
   } catch (ServicesAvailabilityException e) {
     Toast.makeText(getActivity(), "Unable to set Index Column", Toast.LENGTH_LONG).show();
   }
 }
  @Override
  public void prepHeaderCellOccm(ContextMenu menu, CellInfo cellInfo)
      throws ServicesAvailabilityException {
    this.mLastHeaderCellMenued = cellInfo;

    String sortColumn;
    String indexColumn;
    ArrayList<String> groupByColumns;
    DbHandle db = null;
    try {
      db = Tables.getInstance().getDatabase().openDatabase(getAppName());
      sortColumn =
          TableUtil.get().getSortColumn(Tables.getInstance(), getAppName(), db, getTableId());
      indexColumn =
          TableUtil.get().getIndexColumn(Tables.getInstance(), getAppName(), db, getTableId());
      groupByColumns =
          TableUtil.get()
              .getColumnOrder(
                  Tables.getInstance(),
                  getAppName(),
                  db,
                  getTableId(),
                  spreadsheetTable.getColumnDefinitions());
    } finally {
      if (db != null) {
        Tables.getInstance().getDatabase().closeDatabase(getAppName(), db);
      }
    }

    ColumnDefinition cd = spreadsheetTable.getColumnByElementKey(cellInfo.elementKey);
    if (groupByColumns.contains(cd.getElementKey())) {
      menu.add(
          ContextMenu.NONE,
          MENU_ITEM_ID_UNSET_COLUMN_AS_GROUP_BY,
          ContextMenu.NONE,
          "Unset as Group By");
    } else if ((sortColumn != null) && cellInfo.elementKey.equals(sortColumn)) {
      menu.add(
          ContextMenu.NONE, MENU_ITEM_ID_UNSET_COLUMN_AS_SORT, ContextMenu.NONE, "Unset as Sort");
    } else {
      menu.add(
          ContextMenu.NONE,
          MENU_ITEM_ID_SET_COLUMN_AS_GROUP_BY,
          ContextMenu.NONE,
          "Set as Group By");
      menu.add(ContextMenu.NONE, MENU_ITEM_ID_SET_COLUMN_AS_SORT, ContextMenu.NONE, "Set as Sort");
    }
    if (cellInfo.elementKey.equals(indexColumn)) {
      menu.add(
          ContextMenu.NONE, MENU_ITEM_ID_UNSET_AS_INDEXED_COL, ContextMenu.NONE, "Unfreeze Column");
    } else {
      menu.add(
          ContextMenu.NONE, MENU_ITEM_ID_SET_AS_INDEXED_COL, ContextMenu.NONE, "Freeze Column");
    }

    menu.add(
        ContextMenu.NONE,
        MENU_ITEM_ID_EDIT_COLUMN_COLOR_RULES,
        ContextMenu.NONE,
        getString(R.string.edit_column_color_rules));
  }