// Path: src/main/java/com/myjeeva/digitalocean/common/ImageStatus.java
// public enum ImageStatus {
//   @SerializedName("new")
//   NEW("new"),
// 
//   @SerializedName("available")
//   AVAILABLE("available"),
// 
//   @SerializedName("pending")
//   PENDING("pending"),
// 
//   @SerializedName("deleted")
//   DELETED("deleted");
// 
//   private String value;
// 
//   private ImageStatus(String value) {
//     this.value = value;
//   }
// 
//   @Override
//   public String toString() {
//     return this.value;
//   }
// 
//   public static ImageStatus fromValue(String value) {
//     if (StringUtils.isBlank(value)) {
//       throw new IllegalArgumentException("Value cannot be null or empty!");
//     }
// 
//     for (ImageStatus s : ImageStatus.values()) {
//       if (value.equalsIgnoreCase(s.value)) {
//         return s;
//       }
//     }
// 
//     throw new IllegalArgumentException("Cannot create enum from " + value + " value!");
//   }
// }
// 
// Path: src/main/java/com/myjeeva/digitalocean/common/ImageType.java
// public enum ImageType {
//   @SerializedName("snapshot")
//   SNAPSHOT("snapshot"),
// 
//   @SerializedName("backup")
//   BACKUP("backup"),
// 
//   /**
//    * #89 -
//    * https://developers.digitalocean.com/documentation/changelog/api-v2/support-for-custom-images-and-image-tagging/
//    */
//   @SerializedName("custom")
//   CUSTOM("custom");
// 
//   private String value;
// 
//   private ImageType(String value) {
//     this.value = value;
//   }
// 
//   @Override
//   public String toString() {
//     return this.value;
//   }
// 
//   public static ImageType fromValue(String value) {
//     if (StringUtils.isBlank(value)) {
//       throw new IllegalArgumentException("Value cannot be null or empty!");
//     }
// 
//     for (ImageType rt : ImageType.values()) {
//       if (value.equalsIgnoreCase(rt.value)) {
//         return rt;
//       }
//     }
// 
//     throw new IllegalArgumentException("Cannot create enum from " + value + " value!");
//   }
// }


import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import com.myjeeva.digitalocean.common.ImageStatus;
import com.myjeeva.digitalocean.common.ImageType;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
/**
 * The MIT License
 *
 * <p>Copyright (c) 2013-2020 Jeevanandam M. (jeeva@myjeeva.com)
 *
 * <p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software
 * and associated documentation files (the "Software"), to deal in the Software without restriction,
 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * <p>The above copyright notice and this permission notice shall be included in all copies or
 * substantial portions of the Software.
 *
 * <p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
package com.myjeeva.digitalocean.pojo;


/**
 * Represents Droplet Image (also public images aka Distribution) attributes of DigitalOcean
 * (distribution, snapshots or backups). Revised as per v2 API data structure.
 *
 * @author Jeevanandam M. (jeeva@myjeeva.com)
 */
public class Image extends Base {

  private static final long serialVersionUID = 1321111459154107563L;

  private Integer id;

  @Expose private String name;

  @Expose private String distribution;

  private String slug;

  @SerializedName("public")
  private boolean availablePublic;

  private List<String> regions;

  @SerializedName("created_at")
  private Date createdDate;

  @SerializedName("min_disk_size")
  private Integer minDiskSize;

  @SerializedName("size_gigabytes")
  private Double size;

// Path: src/main/java/com/myjeeva/digitalocean/common/ImageStatus.java
// public enum ImageStatus {
//   @SerializedName("new")
//   NEW("new"),
// 
//   @SerializedName("available")
//   AVAILABLE("available"),
// 
//   @SerializedName("pending")
//   PENDING("pending"),
// 
//   @SerializedName("deleted")
//   DELETED("deleted");
// 
//   private String value;
// 
//   private ImageStatus(String value) {
//     this.value = value;
//   }
// 
//   @Override
//   public String toString() {
//     return this.value;
//   }
// 
//   public static ImageStatus fromValue(String value) {
//     if (StringUtils.isBlank(value)) {
//       throw new IllegalArgumentException("Value cannot be null or empty!");
//     }
// 
//     for (ImageStatus s : ImageStatus.values()) {
//       if (value.equalsIgnoreCase(s.value)) {
//         return s;
//       }
//     }
// 
//     throw new IllegalArgumentException("Cannot create enum from " + value + " value!");
//   }
// }
// 
// Path: src/main/java/com/myjeeva/digitalocean/common/ImageType.java
// public enum ImageType {
//   @SerializedName("snapshot")
//   SNAPSHOT("snapshot"),
// 
//   @SerializedName("backup")
//   BACKUP("backup"),
// 
//   /**
//    * #89 -
//    * https://developers.digitalocean.com/documentation/changelog/api-v2/support-for-custom-images-and-image-tagging/
//    */
//   @SerializedName("custom")
//   CUSTOM("custom");
// 
//   private String value;
// 
//   private ImageType(String value) {
//     this.value = value;
//   }
// 
//   @Override
//   public String toString() {
//     return this.value;
//   }
// 
//   public static ImageType fromValue(String value) {
//     if (StringUtils.isBlank(value)) {
//       throw new IllegalArgumentException("Value cannot be null or empty!");
//     }
// 
//     for (ImageType rt : ImageType.values()) {
//       if (value.equalsIgnoreCase(rt.value)) {
//         return rt;
//       }
//     }
// 
//     throw new IllegalArgumentException("Cannot create enum from " + value + " value!");
//   }
// }


// Path: src/main/java/com/myjeeva/digitalocean/pojo/Image.java
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import com.myjeeva.digitalocean.common.ImageStatus;
import com.myjeeva.digitalocean.common.ImageType;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;

/**
 * The MIT License
 *
 * <p>Copyright (c) 2013-2020 Jeevanandam M. (jeeva@myjeeva.com)
 *
 * <p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software
 * and associated documentation files (the "Software"), to deal in the Software without restriction,
 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * <p>The above copyright notice and this permission notice shall be included in all copies or
 * substantial portions of the Software.
 *
 * <p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
package com.myjeeva.digitalocean.pojo;


/**
 * Represents Droplet Image (also public images aka Distribution) attributes of DigitalOcean
 * (distribution, snapshots or backups). Revised as per v2 API data structure.
 *
 * @author Jeevanandam M. (jeeva@myjeeva.com)
 */
public class Image extends Base {

  private static final long serialVersionUID = 1321111459154107563L;

  private Integer id;

  @Expose private String name;

  @Expose private String distribution;

  private String slug;

  @SerializedName("public")
  private boolean availablePublic;

  private List<String> regions;

  @SerializedName("created_at")
  private Date createdDate;

  @SerializedName("min_disk_size")
  private Integer minDiskSize;

  @SerializedName("size_gigabytes")
  private Double size;

  private ImageType type;