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

net.hexonet.apiconnector.ResponseTemplate Maven / Gradle / Ivy

There is a newer version: 4.0.18
Show newest version
package net.hexonet.apiconnector;

import java.util.Map;

/**
 * ResponseTemplate is the base class to work with parsed API response data or hardcoded response
 * template data
 * 
 * @author Kai Schwarz
 * @version %I%, %G%
 * @since 2.0
 */
public class ResponseTemplate {
    /** backend system plain response data */
    protected String raw;
    /** backend system parsed response data (hash format) */
    protected Map hash;

    /**
     * Class constructor
     * 
     * @param raw plain API response text
     */
    public ResponseTemplate(String raw) {
        if (raw.length() == 0) {
            raw = ResponseTemplateManager.getInstance().getTemplate("empty").getPlain();
        }
        this.raw = raw;
        this.hash = ResponseParser.parse(raw);
    }

    /**
     * Get API response code
     * 
     * @return API response code
     */
    public int getCode() {
        return Integer.parseInt((String) this.hash.get("CODE"));
    }

    /**
     * Get API response description
     * 
     * @return API response description
     */
    public String getDescription() {
        return (String) this.hash.get("DESCRIPTION");
    }

    /**
     * Get Plain API response
     * 
     * @return Plain API response
     */
    public String getPlain() {
        return this.raw;
    }

    /**
     * Get Queuetime of API response
     * 
     * @return Queuetime of API response
     */
    public double getQueuetime() {
        String rt = (String) this.hash.get("QUEUETIME");
        if (rt != null) {
            return Double.parseDouble((String) this.hash.get("QUEUETIME"));
        }
        return 0.00;
    }

    /**
     * Get API response as Hash
     * 
     * @return API response hash
     */
    public Map getHash() {
        return this.hash;
    }

    /**
     * Get Runtime of API response
     * 
     * @return Runtime of API response
     */
    public double getRuntime() {
        String rt = (String) this.hash.get("RUNTIME");
        if (rt != null) {
            return Double.parseDouble((String) this.hash.get("RUNTIME"));
        }
        return 0.00;
    }

    /**
     * Check if current API response represents an error case API response code is an 5xx code
     * 
     * @return boolean result
     */
    public boolean isError() {
        String code = (String) this.hash.get("CODE");
        return code.charAt(0) == '5';
    }

    /**
     * Check if current API response represents a success case API response code is an 2xx code
     * 
     * @return boolean result
     */
    public boolean isSuccess() {
        String code = (String) this.hash.get("CODE");
        return code.charAt(0) == '2';
    }

    /**
     * Check if current API response represents a temporary error case API response code is an 4xx
     * code
     * 
     * @return boolean result
     */
    public boolean isTmpError() {
        String code = (String) this.hash.get("CODE");
        return code.charAt(0) == '4';
    }

    /**
     * Check if current operation is returned as pending
     * 
     * @return boolean result
     */
    public boolean isPending() {
        String pending = (String) this.hash.get("PENDING");
        if (pending != null) {
            return pending.equals("1");
        }
        return false;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy