Skip to main content
summaryrefslogblamecommitdiffstats
blob: 58d7c3143519f6e3ea3bc67d59f32a395f2e4079 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13












                                                                                 

                            

                                           

                                                  
                                                                 
                                                                       

                                                         
                                                                        






                            
                                                                    
                                                                     









                                                                 
                 
















































































































                                                                                               
 
/*******************************************************************************
 * Copyright (c) 2004, 2007 Boeing.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Boeing - initial API and implementation
 *******************************************************************************/
package org.eclipse.osee.ote.core;

import java.util.ArrayList;
import java.util.Collection;

import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;

import org.codehaus.jackson.annotate.JsonProperty;
import org.eclipse.osee.framework.jdk.core.persistence.Xmlizable;
import org.eclipse.osee.framework.jdk.core.persistence.XmlizableStream;
import org.eclipse.osee.framework.jdk.core.util.EnumBase;
import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
import org.eclipse.osee.framework.jdk.core.util.xml.XMLStreamWriterUtil;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

/**
 * @author Charles Shaw
 * @author Robert A. Fisher
 */
public class MethodFormatter implements Xmlizable, XmlizableStream {
    private final Collection<Argument> arguments = new ArrayList<>();

    public final class Argument {
        public final String Class;
        public final String Value;

        public Argument(final String Class, final String Value) {
            this.Class = Class;
            this.Value = Value;
        }

        @Override
        public String toString() {
            return "<" + Class + ">" + Value;
        }
    }

    public MethodFormatter add(float value) {
        arguments.add(new Argument(float.class.getName(), Double.toString(value)));
        return this;
    }

    public MethodFormatter add(double value) {
        arguments.add(new Argument(double.class.getName(), Double.toString(value)));
        return this;
    }

    public MethodFormatter add(byte value) {
        arguments.add(new Argument(byte.class.getName(), Double.toString(value)));
        return this;
    }

    public MethodFormatter add(short value) {
        arguments.add(new Argument(short.class.getName(), Double.toString(value)));
        return this;
    }

    public MethodFormatter add(int value) {
        arguments.add(new Argument(int.class.getName(), Integer.toString(value)));
        return this;
    }

    public MethodFormatter add(long value) {
        arguments.add(new Argument(long.class.getName(), Double.toString(value)));
        return this;
    }

    public MethodFormatter add(char value) {
        arguments.add(new Argument(char.class.getName(), Integer.toString(value)));
        return this;
    }

    public MethodFormatter add(boolean value) {
        arguments.add(new Argument(boolean.class.getName(), Boolean.toString(value)));
        return this;
    }

    public MethodFormatter add(EnumBase value) {
        arguments.add(new Argument(EnumBase.class.getName(), value.getName()));
        return this;
    }

    public MethodFormatter add(EnumBase[] value) {
        final String sep = ", ";
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < value.length; i++) {
            sb.append(value[i].getName()).append(sep);
        }
        if (sb.length() > sep.length()) {
            sb.setLength(sb.length() - sep.length());
        }
        sb.append("]");
        arguments.add(new Argument(EnumBase[].class.getName(), sb.toString()));
        return this;
    }

    public MethodFormatter add(Object value) {
        arguments.add(new Argument(value.getClass().getName(), value.toString()));
        return this;
    }

    @Override
    public String toString() {
        final String sep = ", ";
        StringBuilder sb = new StringBuilder();
        for (Argument argument : arguments) {
            sb.append(argument.toString()).append(sep);
        }
        if (sb.length() > sep.length()) {
            sb.setLength(sb.length() - sep.length());
        }
        return sb.toString();
    }

    @Override
    public Element toXml(Document doc) {
        Element toReturn = doc.createElement("MethodArguments");
        for (Argument argument : arguments) {
            Element element = doc.createElement("Argument");
            element.appendChild(Jaxp.createElement(doc, "Type", argument.Class));
            String toLog = argument.Value != null ? XmlSupport.format(argument.Value) : "null";
            element.appendChild(Jaxp.createElement(doc, "Value", toLog));
            toReturn.appendChild(element);
        }
        return toReturn;
    }

    @Override
    public void toXml(XMLStreamWriter writer) throws XMLStreamException {
        writer.writeStartElement("MethodArguments");
        for (Argument argument : arguments) {
            writer.writeStartElement("Argument");
            XMLStreamWriterUtil.writeElement(writer, "Type", argument.Class);
            String toLog = argument.Value != null ? XmlSupport.format(argument.Value) : "null";
            XMLStreamWriterUtil.writeElement(writer, "Value", toLog);
            writer.writeEndElement();
        }
        writer.writeEndElement();
    }
    
    @JsonProperty
    public Collection<Argument> getMethodArguments() {
        return arguments;
    }
}

Back to the top