001/* 002 * mzTab-M reference implementation and validation API. 003 * This is the mzTab-M reference implementation and validation API service. 004 * 005 * OpenAPI spec version: 2.0.0 006 * Contact: nils.hoffmann@isas.de 007 * 008 * NOTE: This class is auto generated by the swagger code generator program. 009 * https://github.com/swagger-api/swagger-codegen.git 010 * Do not edit the class manually. 011 */ 012 013 014package de.isas.mztab2.model; 015 016import java.util.Objects; 017import java.util.Arrays; 018import com.fasterxml.jackson.annotation.JsonProperty; 019import com.fasterxml.jackson.annotation.JsonCreator; 020import com.fasterxml.jackson.annotation.JsonValue; 021import de.isas.mztab2.model.Parameter; 022import io.swagger.annotations.ApiModel; 023import io.swagger.annotations.ApiModelProperty; 024import java.util.ArrayList; 025import java.util.List; 026import com.fasterxml.jackson.dataformat.xml.annotation.*; 027import javax.xml.bind.annotation.*; 028import javax.validation.constraints.*; 029import javax.validation.Valid; 030import de.isas.lipidomics.mztab2.validation.constraints.*; 031/** 032 * 033 * Software used to analyze the data and obtain the reported results. The parameter’s value SHOULD contain the software’s version. The order (numbering) should reflect the order in which the tools were used. A software setting used. This field MAY occur multiple times for a single software. The value of this field is deliberately set as a String, since there currently do not exist CV terms for every possible setting. 034 035 * 036 * 037 * <p>mzTab-M specification example(s):</p> 038 * <pre><code>MTD software[1] [MS, MS:1002879, Progenesis QI, 3.0] 039MTD software[1]-setting Fragment tolerance = 0.1 Da 040… 041MTD software[2]-setting Parent tolerance = 0.5 Da 042</code></pre> 043 * 044 * 045 */ 046@com.fasterxml.jackson.annotation.JsonIdentityInfo(generator = com.fasterxml.jackson.annotation.ObjectIdGenerators.PropertyGenerator.class, property = "id", scope = Software.class) 047@ApiModel(description = "Software used to analyze the data and obtain the reported results. The parameter’s value SHOULD contain the software’s version. The order (numbering) should reflect the order in which the tools were used. A software setting used. This field MAY occur multiple times for a single software. The value of this field is deliberately set as a String, since there currently do not exist CV terms for every possible setting. ") 048@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2021-01-02T19:26:21.550+01:00") 049@XmlRootElement(name = "Software") 050@XmlAccessorType(XmlAccessType.FIELD) 051@JacksonXmlRootElement(localName = "Software") 052public class Software { 053 054 /** 055 * Property enumeration for Software. 056 */ 057 public static enum Properties { 058 id("id"), 059 parameter("parameter"), 060 setting("setting"); 061 062 private final String propertyName; 063 064 private Properties(String propertyName) { 065 this.propertyName = propertyName; 066 } 067 068 public String getPropertyName() { 069 return propertyName; 070 } 071 072 public String toString() { 073 return propertyName; 074 } 075 076 public String toUpper() { 077 return propertyName.toUpperCase(); 078 } 079 080 public static Properties of(String value) { 081 if(value==null) { 082 throw new NullPointerException("Argument value must not be null!"); 083 } 084 return Arrays.asList(Properties.values()).stream().filter(m -> m.propertyName.equals(value.toLowerCase())).findAny().orElseThrow(IllegalArgumentException::new); 085 } 086 }; 087 088 @JsonProperty("id") 089 @JacksonXmlProperty(localName = "id") 090 @XmlElement(name = "id") 091 private Integer id = null; 092 @JsonProperty("parameter") 093 @JacksonXmlProperty(localName = "parameter") 094 @XmlElement(name = "parameter") 095 private Parameter parameter = null; 096 @JsonProperty("setting") 097 // Is a container wrapped=false 098 // items.name=setting items.baseName=setting items.xmlName= items.xmlNamespace= 099 // items.example= items.type=String 100 @XmlElement(name = "setting") 101 private List<String> setting = null; 102 103 /** 104 * Builder method for id. 105 * 106 * @see Software#setId Software#setId for specification examples 107 * @see Software#getId Software#getId for validation constraints 108 * @param id a {@code Integer} parameter. 109 * @return Software 110 **/ 111 public Software id(Integer id) { 112 this.id = id; 113 return this; 114 } 115 116 /** 117 * <p>Get id.</p> 118 * 119 * <p>Minimum: 1</p> 120 * @return id 121 **/ 122 @Min(1) @ApiModelProperty(value = "") 123 public Integer getId() { 124 return id; 125 } 126 127 /** 128 * Set id. 129 * 130 * 131 * 132 * @see #getId Software#getId for validation constraints 133 * @param id a {@code Integer} parameter. 134 **/ 135 public void setId(Integer id) { 136 this.id = id; 137 } 138 139 140 /** 141 * Builder method for parameter. 142 * 143 * @see Software#setParameter Software#setParameter for specification examples 144 * @see Software#getParameter Software#getParameter for validation constraints 145 * @param parameter a {@code Parameter} parameter. 146 * @return Software 147 **/ 148 public Software parameter(Parameter parameter) { 149 this.parameter = parameter; 150 return this; 151 } 152 153 /** 154 * Parameter defining the software being used. 155 * 156 * @return parameter 157 **/ 158 @Valid 159 @ApiModelProperty(value = "Parameter defining the software being used.") 160 public Parameter getParameter() { 161 return parameter; 162 } 163 164 /** 165 * Set parameter. 166 * 167 * 168 * 169 * @see #getParameter Software#getParameter for validation constraints 170 * @param parameter a {@code Parameter} parameter. 171 **/ 172 public void setParameter(Parameter parameter) { 173 this.parameter = parameter; 174 } 175 176 177 /** 178 * Builder method for setting. 179 * 180 * @see Software#setSetting Software#setSetting for specification examples 181 * @see Software#getSetting Software#getSetting for validation constraints 182 * @param setting a {@code List<String>} parameter. 183 * @return Software 184 **/ 185 public Software setting(List<String> setting) { 186 this.setting = setting; 187 return this; 188 } 189 190 /** 191 * Add a single settingItem to the setting collection. 192 * 193 * @see Software#getSetting Software#getSetting for validation constraints 194 * @param settingItem a {@code String} parameter. 195 * @return Software 196 */ 197 public Software addSettingItem(String settingItem) { 198 if (this.setting == null) { 199 this.setting = new ArrayList<>(); 200 } 201 this.setting.add(settingItem); 202 return this; 203 } 204 205 /** 206 * A software setting used. This field MAY occur multiple times for a 207single software. The value of this field is deliberately set as a 208String, since there currently do not exist cvParams for every 209possible setting. 210 211 * 212 * @return setting 213 **/ 214 @ApiModelProperty(value = "A software setting used. This field MAY occur multiple times for a single software. The value of this field is deliberately set as a String, since there currently do not exist cvParams for every possible setting. ") 215 public List<String> getSetting() { 216 return setting; 217 } 218 219 /** 220 * Set setting. 221 * 222 * 223 * 224 * @see #getSetting Software#getSetting for validation constraints 225 * @param setting a {@code List<String>} parameter. 226 **/ 227 public void setSetting(List<String> setting) { 228 this.setting = setting; 229 } 230 231 232 @Override 233 public boolean equals(java.lang.Object o) { 234 if (this == o) { 235 return true; 236 } 237 if (o == null || getClass() != o.getClass()) { 238 return false; 239 } 240 Software software = (Software) o; 241 return Objects.equals(this.id, software.id) && 242 Objects.equals(this.parameter, software.parameter) && 243 Objects.equals(this.setting, software.setting); 244 } 245 246 @Override 247 public int hashCode() { 248 return Objects.hash(id, parameter, setting); 249 } 250 251 252 @Override 253 public String toString() { 254 StringBuilder sb = new StringBuilder(); 255 sb.append("class Software {\n"); 256 257 sb.append(" id: ").append(toIndentedString(id)).append("\n"); 258 sb.append(" parameter: ").append(toIndentedString(parameter)).append("\n"); 259 sb.append(" setting: ").append(toIndentedString(setting)).append("\n"); 260 sb.append("}"); 261 return sb.toString(); 262 } 263 264 /** 265 * Convert the given object to string with each line indented by 4 spaces 266 * (except the first line). 267 */ 268 private String toIndentedString(java.lang.Object o) { 269 if (o == null) { 270 return "null"; 271 } 272 return o.toString().replace("\n", "\n "); 273 } 274 275} 276