| /* ==================================================================== |
| 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.poi.ss.format; |
| |
| import java.util.Locale; |
| import java.util.logging.Logger; |
| |
| import org.apache.poi.util.LocaleUtil; |
| |
| /** |
| * This is the abstract supertype for the various cell formatters. |
| */ |
| public abstract class CellFormatter { |
| /** The logger to use in the formatting code. */ |
| private static final Logger LOG = Logger.getLogger(CellFormatter.class.getName()); |
| |
| /** The original specified format. */ |
| protected final String format; |
| protected final Locale locale; |
| |
| /** |
| * Creates a new formatter object, storing the format in {@link #format}. |
| * |
| * @param format The format. |
| */ |
| public CellFormatter(String format) { |
| this(LocaleUtil.getUserLocale(), format); |
| } |
| |
| /** |
| * Creates a new formatter object, storing the format in {@link #format}. |
| * |
| * @param locale The locale. |
| * @param format The format. |
| */ |
| public CellFormatter(Locale locale, String format) { |
| this.locale = locale; |
| this.format = format; |
| } |
| |
| /** |
| * Format a value according the format string. |
| * <p/> |
| * NOTE: this method must be thread safe! In particular, if it uses a |
| * Format instance that is not thread safe, i.e. DateFormat, this method |
| * must be synchronized, either on the method, if the format is a final |
| * property, or on the format instance itself. |
| * |
| * @param toAppendTo The buffer to append to. |
| * @param value The value to format. |
| */ |
| public abstract void formatValue(StringBuffer toAppendTo, Object value); |
| |
| /** |
| * Format a value according to the type, in the most basic way. |
| * <p/> |
| * NOTE: this method must be thread safe! In particular, if it uses a |
| * Format instance that is not thread safe, i.e. DateFormat, this method |
| * must be synchronized, either on the method, if the format is a final |
| * property, or on the format instance itself. |
| * |
| * @param toAppendTo The buffer to append to. |
| * @param value The value to format. |
| */ |
| public abstract void simpleValue(StringBuffer toAppendTo, Object value); |
| |
| /** |
| * Formats the value, returning the resulting string. |
| * |
| * @param value The value to format. |
| * |
| * @return The value, formatted. |
| */ |
| public String format(Object value) { |
| StringBuffer sb = new StringBuffer(); |
| formatValue(sb, value); |
| return sb.toString(); |
| } |
| |
| /** |
| * Formats the value in the most basic way, returning the resulting string. |
| * |
| * @param value The value to format. |
| * |
| * @return The value, formatted. |
| */ |
| public String simpleFormat(Object value) { |
| StringBuffer sb = new StringBuffer(); |
| simpleValue(sb, value); |
| return sb.toString(); |
| } |
| |
| /** |
| * Returns the input string, surrounded by quotes. |
| * |
| * @param str The string to quote. |
| * |
| * @return The input string, surrounded by quotes. |
| */ |
| static String quote(String str) { |
| return '"' + str + '"'; |
| } |
| } |