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);
|
|||
|
}
|
|||
|
|
|||
|
}
|