94 lines
2.8 KiB
Java
94 lines
2.8 KiB
Java
/**
|
||
* Copyright (C) 2007 - 2016 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);
|
||
}
|
||
|
||
}
|