X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=srcjar_unused%2Forg%2Fapache%2Flog4j%2Fpattern%2FFormattingInfo.java;fp=srcjar_unused%2Forg%2Fapache%2Flog4j%2Fpattern%2FFormattingInfo.java;h=3fb127efc55adf048d9a4fb2200778048b3ca73f;hb=8a43b8353b89a47002ef17c959ed61281fc4d826;hp=0000000000000000000000000000000000000000;hpb=55bfdb07355198ae1a1a8b5e14933b4669113ca6;p=jalview.git diff --git a/srcjar_unused/org/apache/log4j/pattern/FormattingInfo.java b/srcjar_unused/org/apache/log4j/pattern/FormattingInfo.java new file mode 100644 index 0000000..3fb127e --- /dev/null +++ b/srcjar_unused/org/apache/log4j/pattern/FormattingInfo.java @@ -0,0 +1,176 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.log4j.pattern; + + +/** + * Modifies the output of a pattern converter for a specified minimum + * and maximum width and alignment. + * + * + * @author Jim Cakalic + * @author Ceki Gülcü + * @author Curt Arnold + * + */ +public final class FormattingInfo { + /** + * Array of spaces. + */ + private static final char[] SPACES = + new char[] { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }; + + /** + * Default instance. + */ + private static final FormattingInfo DEFAULT = + new FormattingInfo(false, 0, Integer.MAX_VALUE); + + /** + * Minimum length. + */ + private final int minLength; + + /** + * Maximum length. + */ + private final int maxLength; + + /** + * Alignment. + */ + private final boolean leftAlign; + + /** + * Right truncation. + * @since 1.2.17 + */ + private final boolean rightTruncate; + + /** + * Creates new instance. + * @param leftAlign left align if true. + * @param minLength minimum length. + * @param maxLength maximum length. + * @deprecated since 1.2.17 + */ + public FormattingInfo( + final boolean leftAlign, + final int minLength, + final int maxLength) { + this.leftAlign = leftAlign; + this.minLength = minLength; + this.maxLength = maxLength; + this.rightTruncate = false; + } + + /** + * Creates new instance. + * @param leftAlign left align if true. + * @param rightTruncate right truncate if true. + * @param minLength minimum length. + * @param maxLength maximum length. + * @since 1.2.17 + */ + public FormattingInfo( + final boolean leftAlign, + final boolean rightTruncate, + final int minLength, + final int maxLength) { + this.leftAlign = leftAlign; + this.minLength = minLength; + this.maxLength = maxLength; + this.rightTruncate = rightTruncate; + } + + /** + * Gets default instance. + * @return default instance. + */ + public static FormattingInfo getDefault() { + return DEFAULT; + } + + /** + * Determine if left aligned. + * @return true if left aligned. + */ + public boolean isLeftAligned() { + return leftAlign; + } + + /** + * Determine if right truncated. + * @return true if right truncated. + * @since 1.2.17 + */ + public boolean isRightTruncated() { + return rightTruncate; + } + + /** + * Get minimum length. + * @return minimum length. + */ + public int getMinLength() { + return minLength; + } + + /** + * Get maximum length. + * @return maximum length. + */ + public int getMaxLength() { + return maxLength; + } + + /** + * Adjust the content of the buffer based on the specified lengths and alignment. + * + * @param fieldStart start of field in buffer. + * @param buffer buffer to be modified. + */ + public void format(final int fieldStart, final StringBuffer buffer) { + final int rawLength = buffer.length() - fieldStart; + + if (rawLength > maxLength) { + if(rightTruncate) { + buffer.setLength(fieldStart + maxLength); + } else { + buffer.delete(fieldStart, buffer.length() - maxLength); + } + } else if (rawLength < minLength) { + if (leftAlign) { + final int fieldEnd = buffer.length(); + buffer.setLength(fieldStart + minLength); + + for (int i = fieldEnd; i < buffer.length(); i++) { + buffer.setCharAt(i, ' '); + } + } else { + int padLength = minLength - rawLength; + + for (; padLength > 8; padLength -= 8) { + buffer.insert(fieldStart, SPACES); + } + + buffer.insert(fieldStart, SPACES, 0, padLength); + } + } + } +}