/** * 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.camel.dataformat.bindy.util; import org.apache.camel.dataformat.bindy.FormattingOptions; import org.apache.camel.dataformat.bindy.annotation.BindyConverter; import org.apache.camel.dataformat.bindy.annotation.DataField; import org.apache.camel.dataformat.bindy.annotation.KeyValuePairField; /** * To help return the char associated to the unicode string */ public final class ConverterUtils { private ConverterUtils() { // helper class } public static char getCharDelimiter(String separator) { if (separator.equals("\\u0001")) { return '\u0001'; } else if (separator.equals("\\t") || separator.equals("\\u0009")) { return '\u0009'; } else if (separator.length() > 1) { return separator.charAt(separator.length() - 1); } else { return separator.charAt(0); } } public static byte[] getByteReturn(String returnCharacter) { if (returnCharacter.equals("WINDOWS")) { return new byte[] {13, 10}; } else if (returnCharacter.equals("UNIX")) { return new byte[] {10}; } else if (returnCharacter.equals("MAC")) { return new byte[] {13}; } else { return returnCharacter.getBytes(); } } public static String getStringCarriageReturn(String returnCharacter) { if (returnCharacter.equals("WINDOWS")) { return "\r\n"; } else if (returnCharacter.equals("UNIX")) { return "\n"; } else if (returnCharacter.equals("MAC")) { return "\r"; } else { return returnCharacter; } } public static FormattingOptions convert(DataField dataField, Class<?> clazz, BindyConverter converter, String locale) { return new FormattingOptions() .forClazz(clazz) .withPattern(dataField.pattern()) .withLocale(locale) .withTimezone(dataField.timezone()) .withPrecision(dataField.precision()) .withRounding(dataField.rounding()) .withImpliedDecimalSeparator(dataField.impliedDecimalSeparator()) .withDecimalSeparator(dataField.decimalSeparator()) .withBindyConverter(converter) .withGroupingSeparator(dataField.groupingSeparator()); } public static FormattingOptions convert(KeyValuePairField dataField, Class<?> clazz, BindyConverter converter, String locale) { return new FormattingOptions() .forClazz(clazz) .withPattern(dataField.pattern()) .withLocale(locale) .withTimezone(dataField.timezone()) .withPrecision(dataField.precision()) .withBindyConverter(converter) .withImpliedDecimalSeparator(dataField.impliedDecimalSeparator()); } }