/* * Copyright 2008 Lockheed Martin Corporation, except as stated in the file * entitled Licensing-Information. * * All modifications copyright 2009-2017 Data Access Technologies, Inc. * * Licensed under the Academic Free License * version 3.0 (http://www.opensource.org/licenses/afl-3.0.php), except as stated * in the file entitled Licensing-Information. */ package org.modeldriven.fuml.library.channel; import org.modeldriven.fuml.library.common.Status; import org.modeldriven.fuml.library.libraryclass.OperationExecution; import fUML.Semantics.Classes.Kernel.BooleanValue; import fUML.Semantics.Classes.Kernel.IntegerValue; import fUML.Semantics.Classes.Kernel.RealValue; import fUML.Semantics.Classes.Kernel.StringValue; import fUML.Semantics.Classes.Kernel.UnlimitedNaturalValue; import fUML.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue; public abstract class TextOutputChannelObject extends OutputChannelObject { public abstract void writeString(String value, Status errorStatus); public abstract void writeNewLine(Status errorStatus); public void writeLine(String value, Status errorStatus) { this.writeString(value, errorStatus); this.writeNewLine(errorStatus); } public void writeInteger(int value, Status errorStatus) { this.writeString(Integer.toString(value), errorStatus); } public void writeReal(float value, Status errorStatus) { this.writeString(Float.toString(value), errorStatus); } public void writeBoolean(boolean value, Status errorStatus) { this.writeString(Boolean.toString(value), errorStatus); } public void writeUnlimitedNatural(UMLPrimitiveTypes.UnlimitedNatural value, Status errorStatus) { int naturalValue = value.naturalValue; if (naturalValue < 0) { this.writeString("*", errorStatus); } else { this.writeString(Integer.toString(naturalValue), errorStatus); } } public void execute(OperationExecution execution) { String name = execution.getOperationName(); // Debug.println("[execute] operation = " + name); ParameterValue parameterValue = execution.getParameterValue("value"); // if ((parameterValue != null) && (parameterValue.values.size() > 0)) { // Debug.println("[execute] argument = " + // parameterValue.values.getValue(0)); // } Status status = new Status(this.locus, "TextOutputChannel"); if (name.equals("writeNewLine")) { this.writeNewLine(status); this.updateStatus(execution, status); } else if (name.equals("writeString")) { this.writeString(((StringValue) (parameterValue.values.getValue(0))).value, status); this.updateStatus(execution, status); } else if (name.equals("writeLine")) { this.writeLine(((StringValue) (parameterValue.values.getValue(0))).value, status); this.updateStatus(execution, status); } else if (name.equals("writeInteger")) { this.writeInteger(((IntegerValue) (parameterValue.values.getValue(0))).value, status); this.updateStatus(execution, status); } else if (name.equals("writeReal")) { this.writeReal(((RealValue) (parameterValue.values.getValue(0))).value, status); this.updateStatus(execution, status); } else if (name.equals("writeBoolean")) { this.writeBoolean(((BooleanValue) (parameterValue.values.getValue(0))).value, status); this.updateStatus(execution, status); } else if (name.equals("writeUnlimitedNatural")) { this.writeUnlimitedNatural(((UnlimitedNaturalValue) (parameterValue.values .getValue(0))).value, status); this.updateStatus(execution, status); } else { super.execute(execution); } } } // TextOutputChannelObject