protected ObjectNode parseToolDescription()

in taverna-scufl2-t2flow/src/main/java/org/apache/taverna/scufl2/translator/t2flow/t23activities/ExternalToolActivityParser.java [300:441]


	protected ObjectNode parseToolDescription(ObjectNode json, UsecaseDescription toolDesc,
			ParserState parserState) {
	    	    ObjectNode description = json.objectNode();
	    description.put("dc:title", toolDesc.getUsecaseid());
		if (toolDesc.getGroup() != null)
		    description.put("group", toolDesc.getGroup());
		if (toolDesc.getDescription() != null)
		      description.put("dc:description", toolDesc.getDescription());

		description.put("command", toolDesc.getCommand());

		description.put("preparingTimeoutInSeconds",
				toolDesc.getPreparingTimeoutInSeconds());
		description.put("executionTimeoutInSeconds",
				toolDesc.getExecutionTimeoutInSeconds());

		// Ignoring tags, REs, queue__preferred, queue__deny

        ArrayNode staticInputs = json.arrayNode();
        // static inputs
		for (ScriptInputStatic inputStatic : toolDesc.getStaticInputs()
				.getDeUniLuebeckInbKnowarcUsecasesScriptInputStatic()) {
		    ObjectNode input = json.objectNode();
		    staticInputs.add(input);
		    input.put("tag", inputStatic.getTag());
		    input.put("file", inputStatic.isFile());
            input.put("tempFile", inputStatic.isTempFile());
            input.put("binary", inputStatic.isBinary());
            input.put("charsetName", inputStatic.getCharsetName());
            input.put("forceCopy", inputStatic.isForceCopy());
			if (inputStatic.getUrl() != null)
	            input.put("url", inputStatic.getUrl());
			if (inputStatic.getContent() != null)
                input.put("content", inputStatic.getContent().getValue());
		}
		if (staticInputs.size() > 0)
		    json.put("staticInputs", staticInputs);
        
//		for (ScriptInputStatic inputStatic : toolDesc.getStaticInputs()
//				.getDeUniLuebeckInbKnowarcUsecasesScriptInputStatic()) {
//			String portName = inputStatic.getTag();
//			PropertyResource staticInput = generatePortDefinition(portName, inputStatic.getTag(),
//					inputStatic.getCharsetName(), true, false, inputStatic.isBinary(),
//					inputStatic.isFile(), inputStatic.isTempFile(), inputStatic.isForceCopy(),
//					false, true, parserState);
//
//			configResource.addProperty(ACTIVITY_URI.resolve("#staticInput"), staticInput);
//			if (inputStatic.getUrl() != null) {
//				staticInput.addPropertyReference(ACTIVITY_URI.resolve("#source"),
//						URI.create(inputStatic.getUrl()));
//			} else {
//				PropertyResource content = staticInput.addPropertyAsNewResource(
//						ACTIVITY_URI.resolve("#source"), CNT.resolve("#ContentAsText"));
//				content.addPropertyAsString(CNT.resolve("#chars"), inputStatic.getContent()
//						.getValue());
//				// TODO: Support bytes?
//			}
//		}

		
		
		// Inputs
		ArrayNode inputs = json.arrayNode();
        for (Entry entry : toolDesc.getInputs().getEntry()) {
            ObjectNode mapping = json.objectNode();
            mapping.put("port", entry.getString());
            ObjectNode input = json.objectNode();
            mapping.put("input", input);

            ScriptInputUser scriptInput = entry
                    .getDeUniLuebeckInbKnowarcUsecasesScriptInputUser();
            input.put("tag", scriptInput.getTag());
            input.put("file", scriptInput.isFile());
            input.put("tempFile", scriptInput.isTempFile());
            input.put("binary", scriptInput.isBinary());

            input.put("charsetName", scriptInput.getCharsetName());
            input.put("forceCopy", scriptInput.isForceCopy());
            input.put("list", scriptInput.isList());
            input.put("concatenate", scriptInput.isConcatenate());
        }
		if (inputs.size() > 0)
		    json.put("inputs", inputs);
//		for (Entry entry : toolDesc.getInputs().getEntry()) {
//			String portName = entry.getString();
//			ScriptInputUser scriptInput = entry.getDeUniLuebeckInbKnowarcUsecasesScriptInputUser();
//			PropertyResource portDef = generatePortDefinition(portName, scriptInput.getTag(),
//					scriptInput.getCharsetName(), true, scriptInput.isList(),
//					scriptInput.isBinary(), scriptInput.isFile(), scriptInput.isTempFile(),
//					scriptInput.isForceCopy(), scriptInput.isConcatenate(), false, parserState);
//			configResource.addProperty(Scufl2Tools.PORT_DEFINITION.resolve("#inputPortDefinition"),
//					portDef);
//		}
		
		// Outputs		
		ArrayNode outputs = json.arrayNode();
		for (Entry entry : toolDesc.getOutputs().getEntry()) {
			ObjectNode mapping = json.objectNode();
			mapping.put("port", entry.getString());
			ObjectNode output = json.objectNode();
			mapping.put("output", output);

			ScriptOutput scriptOutput = entry
					.getDeUniLuebeckInbKnowarcUsecasesScriptOutput();
			output.put("path", scriptOutput.getPath());
			output.put("binary", scriptOutput.isBinary());
		}
		if (outputs.size() > 0)
			json.put("outputs", outputs);
//		for (Entry entry : toolDesc.getOutputs().getEntry()) {
//			String portName = entry.getString();
//			ScriptOutput scriptOutput = entry.getDeUniLuebeckInbKnowarcUsecasesScriptOutput();
//			PropertyResource portDef = generatePortDefinition(portName, scriptOutput.getPath(),
//					null, false, false, scriptOutput.isBinary(), true, false, false, false, false,
//					parserState);
//			configResource.addProperty(
//					Scufl2Tools.PORT_DEFINITION.resolve("#outputPortDefinition"), portDef);
        // }

        json.put("includeStdIn", toolDesc.isIncludeStdIn());
        json.put("includeStdOut", toolDesc.isIncludeStdOut());
        json.put("includeStdErr", toolDesc.isIncludeStdErr());

//		if (toolDesc.isIncludeStdIn()) {
//			InputActivityPort stdin = new InputActivityPort(parserState.getCurrentActivity(), STDIN);
//			stdin.setDepth(0);
//		}
//		if (toolDesc.isIncludeStdOut()) {
//			OutputActivityPort stdout = new OutputActivityPort(parserState.getCurrentActivity(),
//					STDOUT);
//			stdout.setDepth(0);
//			stdout.setGranularDepth(0);
//		}
//		if (toolDesc.isIncludeStdErr()) {
//			OutputActivityPort stderr = new OutputActivityPort(parserState.getCurrentActivity(),
//					STDERR);
//			stderr.setDepth(0);
//			stderr.setGranularDepth(0);
//		}

		return description;
	}