Java tutorial
/* * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.apache.taverna.gis; import static org.apache.taverna.gis.GisActivity.*; import java.io.IOException; import java.net.URI; import java.util.HashSet; import java.util.Set; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.taverna.workflowmodel.Edits; import org.apache.taverna.workflowmodel.processor.activity.ActivityFactory; import org.apache.taverna.workflowmodel.processor.activity.ActivityInputPort; import org.apache.taverna.workflowmodel.processor.activity.ActivityOutputPort; /** * Gis <code>ActivityFactory<code>. */ public class GisActivityFactory implements ActivityFactory { private Edits edits; @Override public GisActivity createActivity() { return new GisActivity(); } @Override public URI getActivityType() { return URI.create(GisActivity.ACTIVITY_TYPE); } @Override public JsonNode getActivityConfigurationSchema() { ObjectMapper objectMapper = new ObjectMapper(); try { return objectMapper.readTree(getClass().getResource("/schema.json")); } catch (IOException e) { return objectMapper.createObjectNode(); } } @Override public Set<ActivityInputPort> getInputPorts(JsonNode configuration) { Set<ActivityInputPort> inputPorts = new HashSet<>(); // FIXME: Replace with your input port definitions // Hard coded input port, expecting a single String inputPorts.add(edits.createActivityInputPort(IN_FIRST_INPUT, 0, true, null, String.class)); // Optional ports depending on configuration if (configuration.get("exampleString").asText().equals("specialCase")) { // depth 1, ie. list of binary byte[] arrays inputPorts.add(edits.createActivityInputPort(IN_EXTRA_DATA, 1, true, null, byte[].class)); } return inputPorts; } @Override public Set<ActivityOutputPort> getOutputPorts(JsonNode configuration) { Set<ActivityOutputPort> outputPorts = new HashSet<>(); // FIXME: Replace with your output port definitions // Optional ports depending on configuration if (configuration.get("exampleString").asText().equals("specialCase")) { outputPorts.add(edits.createActivityOutputPort(OUT_REPORT, 0, 0)); } // Single value output port (depth 0) outputPorts.add(edits.createActivityOutputPort(OUT_SIMPLE_OUTPUT, 0, 0)); // Output port with list of values (depth 1) outputPorts.add(edits.createActivityOutputPort(OUT_MORE_OUTPUTS, 1, 1)); return outputPorts; } /** * Sets the edits property. * <p> * This method is used by Spring. The property name must match the property specified * in the Spring context file. * * @param edits the <code>Edits</code> used to create input/output ports */ public void setEdits(Edits edits) { this.edits = edits; } }