org.fuin.auction.common.AbstractOperationResult.java Source code

Java tutorial

Introduction

Here is the source code for org.fuin.auction.common.AbstractOperationResult.java

Source

/*
 * Copyright (c) 2010. Axon Auction Example
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.fuin.auction.common;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.fuin.objects4j.Requires;

/**
 * Basic result of sending/executing a operation.
 */
public abstract class AbstractOperationResult implements OperationResult {

    private static final long serialVersionUID = 2861284299330260251L;

    private boolean success;

    private boolean warning;

    private boolean error;

    @Min(0)
    private int code;

    @NotNull
    private String text;

    /**
     * Default constructor.
     */
    protected AbstractOperationResult() {
        super();
        success = false;
        warning = false;
        code = -1;
        text = null;
    }

    /**
     * Constructor with all values.
     * 
     * @param code
     *            Code.
     * @param type
     *            Type of result.
     * @param text
     *            Result description.
     */
    @Requires("code>0 && type!=null && text!=null")
    protected AbstractOperationResult(final int code, final OperationResultType type, final String text) {
        this.success = type.equals(OperationResultType.SUCCESS);
        this.warning = type.equals(OperationResultType.WARNING);
        this.error = type.equals(OperationResultType.ERROR);
        this.code = code;
        this.text = text;
    }

    @Override
    public final boolean isSuccess() {
        return success;
    }

    @Override
    public final boolean isWarning() {
        return warning;
    }

    @Override
    public final boolean isError() {
        return error;
    }

    @Override
    public final int getCode() {
        return code;
    }

    @Override
    public final String getCodeStr() {
        return StringUtils.leftPad("" + code, 5, "0");
    }

    @Override
    public final String getText() {
        return text;
    }

    /**
     * Appends all properties to the builder.
     * 
     * @param builder
     *            Builder to append key/values.
     */
    protected final void appendAbstractCommandResult(final ToStringBuilder builder) {
        builder.append("success", success).append("warning", warning).append("error", error).append("code", code)
                .append("text", text);
    }

    /**
     * Replaces all variables in the format "${NAME}" with the corresponding
     * value. NAME is the name of a key from the <code>keyValue</code> array.
     * 
     * @param message
     *            Message to replace.
     * @param keyValue
     *            Array of key values or <code>null</code>.
     * 
     * @return Replaced message.
     */
    protected static String replace(final String message, final KeyValue... keyValue) {
        return KeyValue.replace(message, keyValue);
    }

}