// Build the hierarchy of authorizable object for the given entity type.
 private List<DBModelAuthorizable> getAuthzHierarchyFromEntity(Entity entity) {
   List<DBModelAuthorizable> objectHierarchy = new ArrayList<DBModelAuthorizable>();
   switch (entity.getType()) {
     case TABLE:
       objectHierarchy.add(new Database(entity.getTable().getDbName()));
       objectHierarchy.add(new Table(entity.getTable().getTableName()));
       break;
     case PARTITION:
     case DUMMYPARTITION:
       objectHierarchy.add(new Database(entity.getPartition().getTable().getDbName()));
       objectHierarchy.add(new Table(entity.getPartition().getTable().getTableName()));
       break;
     case DFS_DIR:
     case LOCAL_DIR:
       try {
         objectHierarchy.add(
             parseURI(entity.toString(), entity.getType().equals(Entity.Type.LOCAL_DIR)));
       } catch (Exception e) {
         throw new AuthorizationException("Failed to get File URI", e);
       }
       break;
     case DATABASE:
     case FUNCTION:
       // TODO use database entities from compiler instead of capturing from AST
       break;
     default:
       throw new UnsupportedOperationException(
           "Unsupported entity type " + entity.getType().name());
   }
   return objectHierarchy;
 }