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

org.lastaflute.di.helper.misc.LdiExceptionMessageBuilder Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
/*
 * Copyright 2015-2021 the original author or authors.
 *
 * 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.lastaflute.di.helper.misc;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

/**
 * @author jflute
 */
public class LdiExceptionMessageBuilder {

    // ===================================================================================
    //                                                                           Attribute
    //                                                                           =========
    protected final List _noticeList = new ArrayList(2);
    protected final Map> _elementMap = new LinkedHashMap>(8);
    protected List _currentList;

    // ===================================================================================
    //                                                                                 Add
    //                                                                                 ===
    public void addNotice(String notice) {
        _noticeList.add(notice);
    }

    public LdiExceptionMessageBuilder addItem(String item) {
        _currentList = new ArrayList(4);
        _elementMap.put(item, _currentList);
        return this;
    }

    public LdiExceptionMessageBuilder addElement(Object element) {
        if (_currentList == null) {
            addItem("*No Title");
        }
        _currentList.add(element);
        return this;
    }

    // ===================================================================================
    //                                                                               Build
    //                                                                               =====
    public String buildExceptionMessage() {
        final StringBuilder sb = new StringBuilder();
        sb.append("Look! Read the message below.").append(ln());
        sb.append("/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *").append(ln());
        if (!_noticeList.isEmpty()) {
            for (String notice : _noticeList) {
                sb.append(notice).append(ln());
            }
        } else {
            sb.append("*No Notice").append(ln());
        }
        final Set>> entrySet = _elementMap.entrySet();
        for (Entry> entry : entrySet) {
            final String item = entry.getKey();
            sb.append(ln());
            sb.append("[").append(item).append("]").append(ln());
            final List elementList = entry.getValue();
            for (Object element : elementList) {
                sb.append(element).append(ln());
            }
        }
        sb.append("* * * * * * * * * */");
        return sb.toString();
    }

    // ===================================================================================
    //                                                                      General Helper
    //                                                                      ==============
    protected String ln() {
        return "\n";
    }
}