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

ninja.APILog Maven / Gradle / Ivy

The newest version!
/*
 * Made with all the love in the world
 * by scireum in Remshalden, Germany
 *
 * Copyright by scireum GmbH
 * http://www.scireum.de - [email protected]
 */

package ninja;

import com.google.common.collect.Lists;
import sirius.kernel.commons.Watch;
import sirius.kernel.di.std.Register;
import sirius.kernel.nls.NLS;

import java.time.LocalDateTime;
import java.util.Iterator;
import java.util.List;

/**
 * Contains a log of the latest API calls
 * 

* The entries are stored in memory and will be lost during server restarts. Also the site is limited to 250 entries. * The newest entry will be the first in the list. */ @Register(classes = APILog.class) public class APILog { /** * Used to describe if a call was successful or why if failed. */ public enum Result { OK, REJECTED, ERROR } /** * Represents a log entry. */ public static class Entry { private String tod = NLS.toUserString(LocalDateTime.now()); private String function; private String description; private String result; private String duration; /** * Returns the method or function which was called. * * @return the name of the called function */ public String getFunction() { return function; } /** * Returns a description of the call * * @return a short text describing the call */ public String getDescription() { return description; } /** * Returns the outcome (one of Result.name()) of the call * * @return a string describing if the call succeeded or why it failed. */ public String getResult() { return result; } /** * Returns the duration of the call * * @return a textual representation of the duration of the call */ public String getDuration() { return duration; } /** * Returns a timestamp of the call * * @return a string representation of the timestamp when the call was invoked. */ public String getTod() { return tod; } /** * Helper method which returns a bootstrap css class based on the result of the call * * @return a css class used to represent the result of the call. */ public String getCSS() { if ("ERROR".equals(result)) { return "error"; } if ("REJECTED".equals(result)) { return "warning"; } return ""; } /** * Creates a new log entry. * * @param function name or method of the function which was invoked * @param description description of the call * @param result outcome of the call * @param duration duration of the call */ protected Entry(String function, String description, String result, String duration) { this.function = function; this.description = description; this.result = result; this.duration = duration; } } private final List entries = Lists.newArrayList(); /** * Returns a sublist of the stored entries, starting at start returning at most count items. * * @param start index of the item where to start * @param count max number of items returned * @return a non null list of log entries */ public List getEntries(int start, int count) { List result = Lists.newArrayList(); synchronized (entries) { Iterator iter = entries.iterator(); while (iter.hasNext() && start > 0) { iter.next(); start--; } while (iter.hasNext() && count > 0) { result.add(iter.next()); count--; } } return result; } /** * Creates a new log entry. * * @param function name or method of the function which was invoked * @param description description of the call * @param result outcome of the call * @param watch watch representing the duration of the call */ public void log(String function, String description, Result result, Watch watch) { synchronized (entries) { entries.add(0, new Entry(function, description, result.name(), watch.duration())); if (entries.size() > 250) { entries.remove(entries.size() - 1); } } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy