All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.antwerkz.sofia.Method Maven / Gradle / Ivy

package com.antwerkz.sofia;

import java.text.DateFormat;
import java.text.Format;
import java.text.MessageFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.List;

public class Method {
    private String name;
    private String value;
    private int argCount;
    private List arguments = new ArrayList();
    private List parameters = new ArrayList();
    private String key;

    public Method(String key, String value) {
        this.key = key;
        this.name = toMethodName(key);
        this.value = value;
        countArguments(value);
    }

    public String getKey() {
        return key;
    }

    public String getName() {
        return name;
    }

    public String getValue() {
        return value;
    }

    public int getArgCount() {
        return argCount;
    }

    public List getArguments() {
        return arguments;
    }

    public List getParameters() {
        return parameters;
    }

    private void countArguments(String value) {
        MessageFormat messageFormat = new MessageFormat(value);
        Format[] formats = messageFormat.getFormats();
        argCount = messageFormat.getFormats().length;
        for (int i = 0; i < argCount; i++) {
            parameters.add(String.format("%s arg%d", getType(formats[i]), i));
            arguments.add(String.format("arg%d", i));
        }
    }

    private String getType(Format format) {
        if(format == null) {
            return "Object";
        } else if(format instanceof DateFormat) {
            return "java.util.Date";
        } else if(format instanceof NumberFormat) {
            return "Number";
        }
        return "Object";
    }

    private String toMethodName(String key) {
        final String[] parts = key.split("\\.");
        StringBuilder name = new StringBuilder();
        for (String part : parts) {
            name.append(name.length() != 0 ? part.substring(0, 1).toUpperCase() + part.substring(1) : part);
        }
        return name.toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy