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

com.ibm.watson.visual_recognition.v3.model.ClassifyOptions Maven / Gradle / Ivy

There is a newer version: 9.3.1
Show newest version
/*
 * (C) Copyright IBM Corp. 2017, 2020.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 */
package com.ibm.watson.visual_recognition.v3.model;

import com.ibm.cloud.sdk.core.service.model.GenericModel;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/** The classify options. */
public class ClassifyOptions extends GenericModel {

  /** The desired language of parts of the response. See the response for details. */
  public interface AcceptLanguage {
    /** en. */
    String EN = "en";
    /** ar. */
    String AR = "ar";
    /** de. */
    String DE = "de";
    /** es. */
    String ES = "es";
    /** fr. */
    String FR = "fr";
    /** it. */
    String IT = "it";
    /** ja. */
    String JA = "ja";
    /** ko. */
    String KO = "ko";
    /** pt-br. */
    String PT_BR = "pt-br";
    /** zh-cn. */
    String ZH_CN = "zh-cn";
    /** zh-tw. */
    String ZH_TW = "zh-tw";
  }

  protected InputStream imagesFile;
  protected String imagesFilename;
  protected String imagesFileContentType;
  protected String url;
  protected Float threshold;
  protected List owners;
  protected List classifierIds;
  protected String acceptLanguage;

  /** Builder. */
  public static class Builder {
    private InputStream imagesFile;
    private String imagesFilename;
    private String imagesFileContentType;
    private String url;
    private Float threshold;
    private List owners;
    private List classifierIds;
    private String acceptLanguage;

    private Builder(ClassifyOptions classifyOptions) {
      this.imagesFile = classifyOptions.imagesFile;
      this.imagesFilename = classifyOptions.imagesFilename;
      this.imagesFileContentType = classifyOptions.imagesFileContentType;
      this.url = classifyOptions.url;
      this.threshold = classifyOptions.threshold;
      this.owners = classifyOptions.owners;
      this.classifierIds = classifyOptions.classifierIds;
      this.acceptLanguage = classifyOptions.acceptLanguage;
    }

    /** Instantiates a new builder. */
    public Builder() {}

    /**
     * Builds a ClassifyOptions.
     *
     * @return the classifyOptions
     */
    public ClassifyOptions build() {
      return new ClassifyOptions(this);
    }

    /**
     * Adds an owner to owners.
     *
     * @param owner the new owner
     * @return the ClassifyOptions builder
     */
    public Builder addOwner(String owner) {
      com.ibm.cloud.sdk.core.util.Validator.notNull(owner, "owner cannot be null");
      if (this.owners == null) {
        this.owners = new ArrayList();
      }
      this.owners.add(owner);
      return this;
    }

    /**
     * Adds an classifierId to classifierIds.
     *
     * @param classifierId the new classifierId
     * @return the ClassifyOptions builder
     */
    public Builder addClassifierId(String classifierId) {
      com.ibm.cloud.sdk.core.util.Validator.notNull(classifierId, "classifierId cannot be null");
      if (this.classifierIds == null) {
        this.classifierIds = new ArrayList();
      }
      this.classifierIds.add(classifierId);
      return this;
    }

    /**
     * Set the imagesFile.
     *
     * @param imagesFile the imagesFile
     * @return the ClassifyOptions builder
     */
    public Builder imagesFile(InputStream imagesFile) {
      this.imagesFile = imagesFile;
      return this;
    }

    /**
     * Set the imagesFilename.
     *
     * @param imagesFilename the imagesFilename
     * @return the ClassifyOptions builder
     */
    public Builder imagesFilename(String imagesFilename) {
      this.imagesFilename = imagesFilename;
      return this;
    }

    /**
     * Set the imagesFileContentType.
     *
     * @param imagesFileContentType the imagesFileContentType
     * @return the ClassifyOptions builder
     */
    public Builder imagesFileContentType(String imagesFileContentType) {
      this.imagesFileContentType = imagesFileContentType;
      return this;
    }

    /**
     * Set the url.
     *
     * @param url the url
     * @return the ClassifyOptions builder
     */
    public Builder url(String url) {
      this.url = url;
      return this;
    }

    /**
     * Set the threshold.
     *
     * @param threshold the threshold
     * @return the ClassifyOptions builder
     */
    public Builder threshold(Float threshold) {
      this.threshold = threshold;
      return this;
    }

    /**
     * Set the owners. Existing owners will be replaced.
     *
     * @param owners the owners
     * @return the ClassifyOptions builder
     */
    public Builder owners(List owners) {
      this.owners = owners;
      return this;
    }

    /**
     * Set the classifierIds. Existing classifierIds will be replaced.
     *
     * @param classifierIds the classifierIds
     * @return the ClassifyOptions builder
     */
    public Builder classifierIds(List classifierIds) {
      this.classifierIds = classifierIds;
      return this;
    }

    /**
     * Set the acceptLanguage.
     *
     * @param acceptLanguage the acceptLanguage
     * @return the ClassifyOptions builder
     */
    public Builder acceptLanguage(String acceptLanguage) {
      this.acceptLanguage = acceptLanguage;
      return this;
    }

    /**
     * Set the imagesFile.
     *
     * @param imagesFile the imagesFile
     * @return the ClassifyOptions builder
     * @throws FileNotFoundException if the file could not be found
     */
    public Builder imagesFile(File imagesFile) throws FileNotFoundException {
      this.imagesFile = new FileInputStream(imagesFile);
      this.imagesFilename = imagesFile.getName();
      return this;
    }
  }

  protected ClassifyOptions(Builder builder) {
    com.ibm.cloud.sdk.core.util.Validator.isTrue(
        (builder.imagesFile == null) || (builder.imagesFilename != null),
        "imagesFilename cannot be null if imagesFile is not null.");
    imagesFile = builder.imagesFile;
    imagesFilename = builder.imagesFilename;
    imagesFileContentType = builder.imagesFileContentType;
    url = builder.url;
    threshold = builder.threshold;
    owners = builder.owners;
    classifierIds = builder.classifierIds;
    acceptLanguage = builder.acceptLanguage;
  }

  /**
   * New builder.
   *
   * @return a ClassifyOptions builder
   */
  public Builder newBuilder() {
    return new Builder(this);
  }

  /**
   * Gets the imagesFile.
   *
   * 

An image file (.gif, .jpg, .png, .tif) or .zip file with images. Maximum image size is 10 * MB. Include no more than 20 images and limit the .zip file to 100 MB. Encode the image and .zip * file names in UTF-8 if they contain non-ASCII characters. The service assumes UTF-8 encoding if * it encounters non-ASCII characters. * *

You can also include an image with the **url** parameter. * * @return the imagesFile */ public InputStream imagesFile() { return imagesFile; } /** * Gets the imagesFilename. * *

The filename for imagesFile. * * @return the imagesFilename */ public String imagesFilename() { return imagesFilename; } /** * Gets the imagesFileContentType. * *

The content type of imagesFile. Values for this parameter can be obtained from the * HttpMediaType class. * * @return the imagesFileContentType */ public String imagesFileContentType() { return imagesFileContentType; } /** * Gets the url. * *

The URL of an image (.gif, .jpg, .png, .tif) to analyze. The minimum recommended pixel * density is 32X32 pixels, but the service tends to perform better with images that are at least * 224 x 224 pixels. The maximum image size is 10 MB. * *

You can also include images with the **images_file** parameter. * * @return the url */ public String url() { return url; } /** * Gets the threshold. * *

The minimum score a class must have to be displayed in the response. Set the threshold to * `0.0` to return all identified classes. * * @return the threshold */ public Float threshold() { return threshold; } /** * Gets the owners. * *

The categories of classifiers to apply. The **classifier_ids** parameter overrides * **owners**, so make sure that **classifier_ids** is empty. - Use `IBM` to classify against the * `default` general classifier. You get the same result if both **classifier_ids** and **owners** * parameters are empty. - Use `me` to classify against all your custom classifiers. However, for * better performance use **classifier_ids** to specify the specific custom classifiers to apply. * - Use both `IBM` and `me` to analyze the image against both classifier categories. * * @return the owners */ public List owners() { return owners; } /** * Gets the classifierIds. * *

Which classifiers to apply. Overrides the **owners** parameter. You can specify both custom * and built-in classifier IDs. The built-in `default` classifier is used if both * **classifier_ids** and **owners** parameters are empty. * *

The following built-in classifier IDs require no training: - `default`: Returns classes from * thousands of general tags. - `food`: Enhances specificity and accuracy for images of food * items. - `explicit`: Evaluates whether the image might be pornographic. * * @return the classifierIds */ public List classifierIds() { return classifierIds; } /** * Gets the acceptLanguage. * *

The desired language of parts of the response. See the response for details. * * @return the acceptLanguage */ public String acceptLanguage() { return acceptLanguage; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy