package api.unicore.component;
 
import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
 
import api.unicore.component_manual.ServiceResponse;
import api.util.IntegerFormat;
import api.util.StringFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import jakarta.ws.rs.FormParam;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlSeeAlso;
import jakarta.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
/**
 * @author CodeGen
 * @company UnitedThinkers
 * @since 2012/06/09
 */
 
@JsonInclude(NON_NULL)
@XmlType(propOrder={"code", "httpStatusCode", "userMessage", "developerMessage", "detailMessage"})
@JsonPropertyOrder({"code", "httpStatusCode", "userMessage", "developerMessage", "detailMessage"})
@XmlRootElement(name="response")
public class ServiceResponse {
 
    @FormParam("code")
    @StringFormat
    protected String code;
 
    @FormParam("httpStatusCode")
    @IntegerFormat
    protected Integer httpStatusCode;
 
    @FormParam("userMessage")
    @StringFormat
    protected String userMessage;
 
    @FormParam("developerMessage")
    @StringFormat
    protected String developerMessage;
 
    @FormParam("detailMessage")
    @StringFormat
    protected String detailMessage;
 
 
    public ServiceResponse(){
    }
 
    public void initializeNew() {
        assignDefaults();
    }
 
	public void assignDefaults(){
		code = "OK1";
	}
 
    @Override
    public String toString(){
        StringBuilder sb = new StringBuilder();
        sb.append("response: {");
        sb.append("code: ");
        sb.append(code);
        sb.append(',').append(' ');
        sb.append("httpStatusCode: ");
        sb.append(httpStatusCode);
        sb.append(',').append(' ');
        sb.append("userMessage: ");
        sb.append(userMessage);
        sb.append(',').append(' ');
        sb.append("developerMessage: ");
        sb.append(developerMessage);
        sb.append(',').append(' ');
        sb.append("detailMessage: ");
        sb.append(detailMessage);
        sb.append('}');
        return sb.toString();
    }
 
 
    @XmlAttribute(name="code")
    @XmlJavaTypeAdapter(api.util.StringAdapter.class)
    @FormParam("code")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getCode(){
        return code;
    }
 
    public void setCode(String value){
        this.code = value;
    }
 
    @XmlAttribute(name="httpStatusCode")
    @XmlJavaTypeAdapter(api.util.IntegerAdapter.class)
    @FormParam("httpStatusCode")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    public Integer getHttpStatusCode(){
        return httpStatusCode;
    }
 
    public void setHttpStatusCode(Integer value){
        this.httpStatusCode = value;
    }
 
    @XmlAttribute(name="userMessage")
    @XmlJavaTypeAdapter(api.util.StringAdapter.class)
    @FormParam("userMessage")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getUserMessage(){
        return userMessage;
    }
 
    public void setUserMessage(String value){
        this.userMessage = value;
    }
 
    @XmlAttribute(name="developerMessage")
    @XmlJavaTypeAdapter(api.util.StringAdapter.class)
    @FormParam("developerMessage")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getDeveloperMessage(){
        return developerMessage;
    }
 
    public void setDeveloperMessage(String value){
        this.developerMessage = value;
    }
 
    @XmlAttribute(name="detailMessage")
    @XmlJavaTypeAdapter(api.util.StringAdapter.class)
    @FormParam("detailMessage")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getDetailMessage(){
        return detailMessage;
    }
 
    public void setDetailMessage(String value){
        this.detailMessage = value;
    }
 
}