content: /**
   * ﻿Copyright (C) 2007 - 2019 52°North Initiative for Geospatial Open Source
   * Software GmbH
   *
   * 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 org.n52.wps.server;
  
  import com.google.common.base.Joiner;
  import java.util.List;
  import org.n52.wps.algorithm.annotation.Algorithm;
  import org.n52.wps.algorithm.annotation.LiteralDataInput;
  import org.n52.wps.algorithm.annotation.LiteralDataOutput;
  import org.n52.wps.algorithm.annotation.Execute;
  
  /**
   *
   * @author tkunicki
   */
  @Algorithm(
      version="0.0.1",
      title="String Join Algorithm (Annotated)",
      abstrakt="This is an example algorithm implementation described using annotations that joins strings using the specified delimiter.",
      statusSupported=false,
      storeSupported=false)
  public class StringJoinAnnotatedAlgorithm extends AbstractAnnotatedAlgorithm {
  
      public enum Delimiter {
          SPACE(' '),
          TAB('\t'),
          PIPE('|'),
          COMMA(','),
          SEMI_COLON(';'),
          COLON(':');
          public final char value;
          Delimiter(char value) {
              this.value = value;
          }
      }
      
      private List<String> inputStrings;
      private Delimiter inputDelimiter;
      private String outputString;
      
      @LiteralDataInput(
          identifier="INPUT_STRINGS",
          title="Input Strings",
          abstrakt="The strings you want joined.",
          minOccurs=2,
          maxOccurs=32)
      public void setInputString(List<String> inputStrings) {
          this.inputStrings = inputStrings;
      }
      
      @LiteralDataInput(
          identifier="INPUT_DELIMITER",
          title="Delimiter",
          abstrakt="The value to use when joining strings")
      public void setInputDelimiter(Delimiter inputDelimiter) {
          this.inputDelimiter = inputDelimiter;
      }
  
  
      @LiteralDataOutput(
          identifier="OUTPUT_STRING",
          title="Output String",
          abstrakt="The strings joined with the delimiter")
      public String getOutputString() {
          return outputString;
      }
      
      @LiteralDataInput(identifier="yourMom")
      public String yourMom;
  
      @Execute
      public void reverse() {
          // don't need to do any parameter bounds checking that is specified
          // as part of the DescribeProcess, it's already done before this
          // method is called...
          outputString = Joiner.on(inputDelimiter.value).join(inputStrings);
      }
  
  }
  