001package org.galaxyproject.gxformat2.v19_09;
002
003import org.galaxyproject.gxformat2.v19_09.utils.LoaderInstances;
004import org.galaxyproject.gxformat2.v19_09.utils.LoadingOptions;
005import org.galaxyproject.gxformat2.v19_09.utils.LoadingOptionsBuilder;
006import org.galaxyproject.gxformat2.v19_09.utils.SavableImpl;
007import org.galaxyproject.gxformat2.v19_09.utils.ValidationException;
008
009/**
010 * Auto-generated class implementation for
011 * <I>https://galaxyproject.org/gxformat2/v19_09#WorkflowStepOutput</I><br>
012 *
013 * <BLOCKQUOTE>
014 *
015 * Associate an output parameter of the underlying process with a workflow parameter. The workflow
016 * parameter (given in the `id` field) be may be used as a `source` to connect with input parameters
017 * of other workflow steps, or with an output parameter of the process.
018 *
019 * <p>A unique identifier for this workflow output parameter. This is the identifier to use in the
020 * `source` field of `WorkflowStepInput` to connect the output value to downstream parameters.
021 *
022 * </BLOCKQUOTE>
023 */
024public class WorkflowStepOutputImpl extends SavableImpl implements WorkflowStepOutput {
025  private LoadingOptions loadingOptions_ = new LoadingOptionsBuilder().build();
026  private java.util.Map<String, Object> extensionFields_ = new java.util.HashMap<String, Object>();
027
028  private java.util.Optional<String> id;
029
030  /**
031   * Getter for property <I>https://w3id.org/cwl/cwl#Identified/id</I><br>
032   *
033   * <BLOCKQUOTE>
034   *
035   * The unique identifier for this object. *
036   *
037   * </BLOCKQUOTE>
038   */
039  public java.util.Optional<String> getId() {
040    return this.id;
041  }
042
043  private java.util.Optional<java.util.List<Object>> add_tags;
044
045  /**
046   * Getter for property
047   * <I>https://galaxyproject.org/gxformat2/v19_09#WorkflowStepOutput/add_tags</I><br>
048   */
049  public java.util.Optional<java.util.List<Object>> getAdd_tags() {
050    return this.add_tags;
051  }
052
053  private java.util.Optional<String> change_datatype;
054
055  /**
056   * Getter for property
057   * <I>https://galaxyproject.org/gxformat2/v19_09#WorkflowStepOutput/change_datatype</I><br>
058   */
059  public java.util.Optional<String> getChange_datatype() {
060    return this.change_datatype;
061  }
062
063  private java.util.Optional<Boolean> delete_intermediate_datasets;
064
065  /**
066   * Getter for property
067   * <I>https://galaxyproject.org/gxformat2/v19_09#WorkflowStepOutput/delete_intermediate_datasets</I>
068   * <br>
069   */
070  public java.util.Optional<Boolean> getDelete_intermediate_datasets() {
071    return this.delete_intermediate_datasets;
072  }
073
074  private java.util.Optional<Boolean> hide;
075
076  /**
077   * Getter for property <I>https://galaxyproject.org/gxformat2/v19_09#WorkflowStepOutput/hide</I>
078   * <br>
079   */
080  public java.util.Optional<Boolean> getHide() {
081    return this.hide;
082  }
083
084  private java.util.Optional<java.util.List<Object>> remove_tags;
085
086  /**
087   * Getter for property
088   * <I>https://galaxyproject.org/gxformat2/v19_09#WorkflowStepOutput/remove_tags</I><br>
089   */
090  public java.util.Optional<java.util.List<Object>> getRemove_tags() {
091    return this.remove_tags;
092  }
093
094  private java.util.Optional<String> rename;
095
096  /**
097   * Getter for property <I>https://galaxyproject.org/gxformat2/v19_09#WorkflowStepOutput/rename</I>
098   * <br>
099   */
100  public java.util.Optional<String> getRename() {
101    return this.rename;
102  }
103
104  private java.util.Optional<java.util.List<Object>> set_columns;
105
106  /**
107   * Getter for property
108   * <I>https://galaxyproject.org/gxformat2/v19_09#WorkflowStepOutput/set_columns</I><br>
109   */
110  public java.util.Optional<java.util.List<Object>> getSet_columns() {
111    return this.set_columns;
112  }
113
114  /**
115   * Used by {@link org.galaxyproject.gxformat2.v19_09.utils.RootLoader} to construct instances of
116   * WorkflowStepOutputImpl.
117   *
118   * @param __doc_ Document fragment to load this record object from (presumably a {@link
119   *     java.util.Map}).
120   * @param __baseUri_ Base URI to generate child document IDs against.
121   * @param __loadingOptions Context for loading URIs and populating objects.
122   * @param __docRoot_ ID at this position in the document (if available) (maybe?)
123   * @throws ValidationException If the document fragment is not a {@link java.util.Map} or
124   *     validation of fields fails.
125   */
126  public WorkflowStepOutputImpl(
127      final Object __doc_,
128      final String __baseUri_,
129      LoadingOptions __loadingOptions,
130      final String __docRoot_) {
131    super(__doc_, __baseUri_, __loadingOptions, __docRoot_);
132    // Prefix plumbing variables with '__' to reduce likelihood of collision with
133    // generated names.
134    String __baseUri = __baseUri_;
135    String __docRoot = __docRoot_;
136    if (!(__doc_ instanceof java.util.Map)) {
137      throw new ValidationException("WorkflowStepOutputImpl called on non-map");
138    }
139    final java.util.Map<String, Object> __doc = (java.util.Map<String, Object>) __doc_;
140    final java.util.List<ValidationException> __errors =
141        new java.util.ArrayList<ValidationException>();
142    if (__loadingOptions != null) {
143      this.loadingOptions_ = __loadingOptions;
144    }
145    java.util.Optional<String> id;
146
147    if (__doc.containsKey("id")) {
148      try {
149        id =
150            LoaderInstances.uri_optional_StringInstance_True_False_None.loadField(
151                __doc.get("id"), __baseUri, __loadingOptions);
152      } catch (ValidationException e) {
153        id = null; // won't be used but prevents compiler from complaining.
154        final String __message = "the `id` field is not valid because:";
155        __errors.add(new ValidationException(__message, e));
156      }
157
158    } else {
159      id = null;
160    }
161
162    if (id == null) {
163      if (__docRoot != null) {
164        id = java.util.Optional.of(__docRoot);
165      } else {
166        id = java.util.Optional.of("_:" + java.util.UUID.randomUUID().toString());
167      }
168    }
169    __baseUri = (String) id.orElse(null);
170    java.util.Optional<java.util.List<Object>> add_tags;
171
172    if (__doc.containsKey("add_tags")) {
173      try {
174        add_tags =
175            LoaderInstances.optional_array_of_StringInstance.loadField(
176                __doc.get("add_tags"), __baseUri, __loadingOptions);
177      } catch (ValidationException e) {
178        add_tags = null; // won't be used but prevents compiler from complaining.
179        final String __message = "the `add_tags` field is not valid because:";
180        __errors.add(new ValidationException(__message, e));
181      }
182
183    } else {
184      add_tags = null;
185    }
186    java.util.Optional<String> change_datatype;
187
188    if (__doc.containsKey("change_datatype")) {
189      try {
190        change_datatype =
191            LoaderInstances.optional_StringInstance.loadField(
192                __doc.get("change_datatype"), __baseUri, __loadingOptions);
193      } catch (ValidationException e) {
194        change_datatype = null; // won't be used but prevents compiler from complaining.
195        final String __message = "the `change_datatype` field is not valid because:";
196        __errors.add(new ValidationException(__message, e));
197      }
198
199    } else {
200      change_datatype = null;
201    }
202    java.util.Optional<Boolean> delete_intermediate_datasets;
203
204    if (__doc.containsKey("delete_intermediate_datasets")) {
205      try {
206        delete_intermediate_datasets =
207            LoaderInstances.optional_BooleanInstance.loadField(
208                __doc.get("delete_intermediate_datasets"), __baseUri, __loadingOptions);
209      } catch (ValidationException e) {
210        delete_intermediate_datasets =
211            null; // won't be used but prevents compiler from complaining.
212        final String __message = "the `delete_intermediate_datasets` field is not valid because:";
213        __errors.add(new ValidationException(__message, e));
214      }
215
216    } else {
217      delete_intermediate_datasets = null;
218    }
219    java.util.Optional<Boolean> hide;
220
221    if (__doc.containsKey("hide")) {
222      try {
223        hide =
224            LoaderInstances.optional_BooleanInstance.loadField(
225                __doc.get("hide"), __baseUri, __loadingOptions);
226      } catch (ValidationException e) {
227        hide = null; // won't be used but prevents compiler from complaining.
228        final String __message = "the `hide` field is not valid because:";
229        __errors.add(new ValidationException(__message, e));
230      }
231
232    } else {
233      hide = null;
234    }
235    java.util.Optional<java.util.List<Object>> remove_tags;
236
237    if (__doc.containsKey("remove_tags")) {
238      try {
239        remove_tags =
240            LoaderInstances.optional_array_of_StringInstance.loadField(
241                __doc.get("remove_tags"), __baseUri, __loadingOptions);
242      } catch (ValidationException e) {
243        remove_tags = null; // won't be used but prevents compiler from complaining.
244        final String __message = "the `remove_tags` field is not valid because:";
245        __errors.add(new ValidationException(__message, e));
246      }
247
248    } else {
249      remove_tags = null;
250    }
251    java.util.Optional<String> rename;
252
253    if (__doc.containsKey("rename")) {
254      try {
255        rename =
256            LoaderInstances.optional_StringInstance.loadField(
257                __doc.get("rename"), __baseUri, __loadingOptions);
258      } catch (ValidationException e) {
259        rename = null; // won't be used but prevents compiler from complaining.
260        final String __message = "the `rename` field is not valid because:";
261        __errors.add(new ValidationException(__message, e));
262      }
263
264    } else {
265      rename = null;
266    }
267    java.util.Optional<java.util.List<Object>> set_columns;
268
269    if (__doc.containsKey("set_columns")) {
270      try {
271        set_columns =
272            LoaderInstances.optional_array_of_StringInstance.loadField(
273                __doc.get("set_columns"), __baseUri, __loadingOptions);
274      } catch (ValidationException e) {
275        set_columns = null; // won't be used but prevents compiler from complaining.
276        final String __message = "the `set_columns` field is not valid because:";
277        __errors.add(new ValidationException(__message, e));
278      }
279
280    } else {
281      set_columns = null;
282    }
283    if (!__errors.isEmpty()) {
284      throw new ValidationException("Trying 'RecordField'", __errors);
285    }
286    this.id = (java.util.Optional<String>) id;
287    this.add_tags = (java.util.Optional<java.util.List<Object>>) add_tags;
288    this.change_datatype = (java.util.Optional<String>) change_datatype;
289    this.delete_intermediate_datasets = (java.util.Optional<Boolean>) delete_intermediate_datasets;
290    this.hide = (java.util.Optional<Boolean>) hide;
291    this.remove_tags = (java.util.Optional<java.util.List<Object>>) remove_tags;
292    this.rename = (java.util.Optional<String>) rename;
293    this.set_columns = (java.util.Optional<java.util.List<Object>>) set_columns;
294  }
295}