/* * Copyright 2003-2017 JetBrains s.r.o. * * 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 jetbrains.mps.messages; import org.apache.log4j.Level; import org.apache.log4j.Priority; import org.jetbrains.annotations.NotNull; /** * Types of messages reported through {@link IMessageHandler}. * Note, this is not a replacement for logging facilities. {@linkplain IMessage Messages} are intended for end-user * and thus levels other than 'severe issue', 'worth mentioning' and 'if you are curious' do not make sense here. * If you need trace/debug levels, use {@link org.apache.log4j.Logger}. */ public enum MessageKind { INFORMATION, WARNING, ERROR; /** * @return {@code true} if this enumeration (LHS) value represents a message of at least the same severity than the one supplied (RHS). */ public boolean isSameOrGreaterSeverityThan(MessageKind kind) { // ERROR.isSameOrGreaterSeverityThan(ERROR) : true // ERROR.isSameOrGreaterSeverityThan(WARNING) : true // WARNING.isSameOrGreaterSeverityThan(ERROR) : false // INFORMATION.isSameOrGreaterSeverityThan(WARNING) : false // WARNING.isSameOrGreaterSeverityThan(INFORMATION) : true return ordinal() >= kind.ordinal(); } @NotNull public static MessageKind fromPriority(Priority level) { if (level.equals(Level.FATAL) || level.equals(Level.ERROR)) { return MessageKind.ERROR; } else if (level.equals(Level.WARN)) { return MessageKind.WARNING; } return MessageKind.INFORMATION; } }