Newer
Older
simple-jdbc-stats / src / nl / astraeus / jdbc / web / page / Warnings.java
package nl.astraeus.jdbc.web.page;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 * User: rnentjes
 * Date: 3/28/12
 * Time: 9:07 PM
 */
public class Warnings extends TemplatePage {

    public static Warnings get(HttpServletRequest request) {
        Warnings result = (Warnings)request.getAttribute("warnings");
        
        if (result == null) {
            result = new Warnings();
            
            request.setAttribute("warnings", result);
        }
        
        return result;
    }

    public static class Message {
        public static enum Type {
            SUCCESS,
            INFO,
            WARNING,
            ERROR            
        }
        
        public boolean success = false;
        public boolean info = false;
        public boolean warning = false;
        public boolean error = false;

        public String header;
        public String body;

        public Message(Type type, String header, String body) {
            switch(type) {
                case SUCCESS:
                    success = true;
                    break;
                case INFO:
                    info = true;
                    break;
                case WARNING:
                    warning = true;
                    break;
                case ERROR:
                    error = true;
                    break;
            }

            this.header = header;
            this.body = body;
        }

        public boolean getSuccess() {
            return success;
        }

        public boolean getInfo() {
            return info;
        }

        public boolean getWarning() {
            return warning;
        }

        public boolean getError() {
            return error;
        }

        public String getHeader() {
            return header;
        }

        public String getBody() {
            return body;
        }
    }
    
    private List<Message> messages = new LinkedList<Message>();
    
    public void addMessage(Message.Type type, String header, String body) {
        messages.add(new Message(type, header, body));
    }

    public boolean hasMessages() {
        return !messages.isEmpty();
    }

    public boolean hasWarnings() {
        boolean result = false;

        for (Message message : messages) {
            if (message.getError() || message.getWarning()) {
                result = true;
                break;
            }
        }

        return result;
    }

    @Override
    public Page processRequest(HttpServletRequest request) {
         return this;
    }

    @Override
    public Map<String, Object> defineModel(HttpServletRequest request) {
        Map<String, Object> result = new HashMap<String, Object>();
        
        result.put("messages", messages);

        return result;
    }
}