001/* 002 * JKNIV, whinstone one contract to access your database. 003 * 004 * Copyright (C) 2017, the original author or authors. 005 * 006 * This library is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 2.1 of the License. 010 * 011 * This library is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public 017 * License along with this library; if not, write to the Free Software Foundation, Inc., 018 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 019 */ 020package net.sf.jkniv.whinstone.types; 021 022import static java.lang.annotation.ElementType.FIELD; 023import static java.lang.annotation.ElementType.METHOD; 024import static java.lang.annotation.RetentionPolicy.RUNTIME; 025 026import java.lang.annotation.Retention; 027import java.lang.annotation.Target; 028 029/** 030 * The converter is used to change the value/type from original object 031 * to a destiny object. 032 * 033 * Just Methods and Fields can be annotated. 034 * 035 * @author Alisson Gomes 036 * @since 0.6.0 037 */ 038@Target({METHOD, FIELD}) 039@Retention(RUNTIME) 040public @interface Converter 041{ 042 enum EnumType {NONE, STRING, ORDINAL}; 043 044 /** 045 * Specifies the converter to be used. 046 * @return {@code void.class} as default 047 */ 048 Class converter() default void.class; 049 050 /** 051 * The pattern describing to be used to define or formatter a value. 052 * @return empty pattern as default 053 */ 054 String pattern() default ""; 055 056 /** 057 * the enum type {@code ORDINAL} or {@code STRING} 058 * @return {@code EnumType.NONE} as default 059 */ 060 EnumType isEnum() default EnumType.NONE; 061}