private String getName(ResourcePermissionType type, AclResourceTokenizer tokenizer) {
      String name = null;
      switch (type) {
        case PROJECT:
          name = tokenizer.getToken(AclResourceTokenizer.ResourceTokens.PROJECT);
          break;

        case DATASOURCE:
          name = translations.allTablesLabel();
          break;

        case TABLE:
          name = tokenizer.getToken(AclResourceTokenizer.ResourceTokens.TABLE);
          break;

        case VARIABLE:
          name =
              tokenizer.getToken(AclResourceTokenizer.ResourceTokens.TABLE)
                  + ":"
                  + tokenizer.getToken(AclResourceTokenizer.ResourceTokens.VARIABLE);
          break;

        case REPORT_TEMPLATE:
          name = tokenizer.getToken(AclResourceTokenizer.ResourceTokens.REPORTTEMPLATE);
          break;
      }

      assert name != null;
      return name;
    }
  private String getNodeUri(
      ResourcePermissionType type, String aclResource, String principal, String typeName) {
    AclResourceTokenizer aclTokenizer = new AclResourceTokenizer(aclResource);

    switch (type) {
      case PROJECT:
        return ResourcePermissionRequestPaths.UriBuilders.PROJECT_PERMISSIONS_PROJECT
            .create()
            .query(ResourcePermissionRequestPaths.PRINCIPAL_QUERY_PARAM, principal)
            .query(ResourcePermissionRequestPaths.TYPE_QUERY_PARAM, typeName)
            .build(aclTokenizer.getToken(AclResourceTokenizer.ResourceTokens.PROJECT));
      case DATASOURCE:
        return ResourcePermissionRequestPaths.UriBuilders.PROJECT_PERMISSIONS_DATASOURCE
            .create()
            .query(ResourcePermissionRequestPaths.PRINCIPAL_QUERY_PARAM, principal)
            .query(ResourcePermissionRequestPaths.TYPE_QUERY_PARAM, typeName)
            .build(aclTokenizer.getToken(AclResourceTokenizer.ResourceTokens.DATASOURCE));
      case VARIABLE:
        return ResourcePermissionRequestPaths.UriBuilders.PROJECT_PERMISSIONS_TABLE_VARIABLE
            .create()
            .query(ResourcePermissionRequestPaths.PRINCIPAL_QUERY_PARAM, principal)
            .query(ResourcePermissionRequestPaths.TYPE_QUERY_PARAM, typeName)
            .build(
                aclTokenizer.getToken(AclResourceTokenizer.ResourceTokens.PROJECT),
                aclTokenizer.getToken(AclResourceTokenizer.ResourceTokens.TABLE),
                aclTokenizer.getToken(AclResourceTokenizer.ResourceTokens.VARIABLE));
      case TABLE:
        return ResourcePermissionRequestPaths.UriBuilders.PROJECT_PERMISSIONS_TABLE
            .create()
            .query(ResourcePermissionRequestPaths.PRINCIPAL_QUERY_PARAM, principal)
            .query(ResourcePermissionRequestPaths.TYPE_QUERY_PARAM, typeName)
            .build(
                aclTokenizer.getToken(AclResourceTokenizer.ResourceTokens.PROJECT),
                aclTokenizer.getToken(AclResourceTokenizer.ResourceTokens.TABLE));
      case REPORT_TEMPLATE:
        return ResourcePermissionRequestPaths.UriBuilders.PROJECT_PERMISSIONS_REPORTTEMPLATE
            .create()
            .query(ResourcePermissionRequestPaths.PRINCIPAL_QUERY_PARAM, principal)
            .query(ResourcePermissionRequestPaths.TYPE_QUERY_PARAM, typeName)
            .build(
                aclTokenizer.getToken(AclResourceTokenizer.ResourceTokens.PROJECT),
                aclTokenizer.getToken(AclResourceTokenizer.ResourceTokens.REPORTTEMPLATE));
      default:
        return null;
    }
  }
    private PlaceRequest getPlaceRequest(
        ResourcePermissionType type, AclResourceTokenizer tokenizer) {
      PlaceRequest placeRequest = null;
      switch (type) {
        case PROJECT:
          placeRequest =
              ProjectPlacesHelper.getProjectPlace(
                  tokenizer.getToken(AclResourceTokenizer.ResourceTokens.PROJECT));
          break;
        case DATASOURCE:
          placeRequest =
              ProjectPlacesHelper.getDatasourcePlace(
                  tokenizer.getToken(AclResourceTokenizer.ResourceTokens.DATASOURCE));
          break;
        case TABLE:
          placeRequest =
              ProjectPlacesHelper.getTablePlace(
                  tokenizer.getToken(AclResourceTokenizer.ResourceTokens.PROJECT),
                  tokenizer.getToken(AclResourceTokenizer.ResourceTokens.TABLE));
          break;
        case VARIABLE:
          placeRequest =
              ProjectPlacesHelper.getVariablePlace(
                  tokenizer.getToken(AclResourceTokenizer.ResourceTokens.PROJECT),
                  tokenizer.getToken(AclResourceTokenizer.ResourceTokens.TABLE),
                  tokenizer.getToken(AclResourceTokenizer.ResourceTokens.VARIABLE));
          break;
        case REPORT_TEMPLATE:
          placeRequest =
              ProjectPlacesHelper.getReportsPlace(
                  tokenizer.getToken(AclResourceTokenizer.ResourceTokens.PROJECT));
          break;
      }

      assert placeRequest != null;
      return placeRequest;
    }