All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.aliyun.odps.ml.ModelResourceBuilder Maven / Gradle / Ivy

There is a newer version: 0.51.2-public
Show newest version
/**
 *
 */
package com.aliyun.odps.ml;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

/**
 * 用来构造RESTful API调用的资源标识符
 *
 * @author [email protected]
 */
public class ModelResourceBuilder {

  public static final String PROJECTS = "/projects";
  public static final String OFFLINEMODELS = "/offlinemodels";
  public static final String ONLINEMODELS = "/onlinemodels";
  public static final String PREDICTIONS = "/predictions";
  public static final String EVALUATIONS = "/evaluations";

  public static String buildOfflineModelResource(String projectName) {
    StringBuilder sb = new StringBuilder();

    sb.append(PROJECTS).append('/').append(encodeObjectName(projectName))
        .append(OFFLINEMODELS);

    return sb.toString();
  }

  public static String buildOfflineModelResource(String projectName,
                                                 String modelName) {
    StringBuilder sb = new StringBuilder();

    sb.append(PROJECTS).append('/').append(encodeObjectName(projectName))
        .append(OFFLINEMODELS).append("/").append(modelName);

    return sb.toString();
  }

  public static String buildOnlineModelResource(String projectName) {
    StringBuilder sb = new StringBuilder();

    sb.append(PROJECTS).append('/').append(encodeObjectName(projectName))
        .append(ONLINEMODELS);

    return sb.toString();
  }

  public static String buildOnlineModelResource(String projectName,
                                                String modelName) {
    StringBuilder sb = new StringBuilder();

    sb.append(PROJECTS).append('/').append(encodeObjectName(projectName))
        .append(ONLINEMODELS).append("/").append(modelName);

    return sb.toString();
  }

  public static String buildTrainingResource(String projectName,
                                             String modelName, String trainingId) {
    StringBuilder sb = new StringBuilder();

    sb.append(PROJECTS).append('/').append(encodeObjectName(projectName))
        .append(OFFLINEMODELS).append("/").append(modelName).append("/")
        .append(trainingId);

    return sb.toString();
  }

  public static String buildPredictionResource(String projectName,
                                               String modelName) {
    StringBuilder sb = new StringBuilder();
    sb.append(PROJECTS).append('/').append(encodeObjectName(projectName))
        .append(OFFLINEMODELS).append("/").append(modelName)
        .append(PREDICTIONS);

    return sb.toString();
  }

  public static String buildPredictionResource(String projectName,
                                               String modelName, String predictionName) {
    StringBuilder sb = new StringBuilder();
    sb.append(PROJECTS).append('/').append(encodeObjectName(projectName))
        .append(OFFLINEMODELS).append("/").append(modelName)
        .append(PREDICTIONS).append("/").append(predictionName);

    return sb.toString();
  }

  public static String buildEvaluationResource(String projectName,
                                               String modelName) {
    StringBuilder sb = new StringBuilder();
    sb.append(PROJECTS).append('/').append(encodeObjectName(projectName))
        .append(OFFLINEMODELS).append("/").append(modelName)
        .append(EVALUATIONS);

    return sb.toString();
  }

  public static String buildEvaluationResource(String projectName,
                                               String modelName, String evaluationName) {
    StringBuilder sb = new StringBuilder();
    sb.append(PROJECTS).append('/').append(encodeObjectName(projectName))
        .append(OFFLINEMODELS).append("/").append(modelName)
        .append(EVALUATIONS).append("/").append(evaluationName);

    return sb.toString();
  }


  public static String encodeObjectName(String name) {
    if (name == null || name.trim().length() != name.length()) {
      throw new IllegalArgumentException("Invalid name: " + name);
    }

    return encode(name);
  }

  public static String encode(String str) {
    if (str == null || str.length() == 0) {
      return str;
    }

    String r = null;
    try {
      r = URLEncoder.encode(str, "UTF-8");
    } catch (UnsupportedEncodingException e) {
      throw new IllegalArgumentException("Encode failed: " + str);
    }
    r = r.replaceAll("\\+", "%20");
    return r;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy