package schemacrawler.test;
import java.io.File;
import java.io.FileWriter;
import java.lang.reflect.Field;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Map.Entry;
public class SchemaCrawlerSqlTypesGenerator
{
public static void main(final String[] args)
throws Exception
{
final Properties properties = new Properties();
final List<Entry<Integer, String>> javaSqlTypes = new ArrayList<Entry<Integer, String>>(getJavaSqlTypes()
.entrySet());
for (int i = 0; i < javaSqlTypes.size(); i++)
{
final Entry<Integer, String> javaSqlType = javaSqlTypes.get(i);
properties.setProperty(javaSqlType.getKey().toString(), javaSqlType
.getValue());
}
properties.store(new FileWriter(new File(args[0])), String
.format("java.sql.Types from JDK %s %s", System
.getProperty("java.version"), System.getProperty("java.vendor")));
}
private static Map<Integer, String> getJavaSqlTypes()
{
final Map<Integer, String> javaSqlTypes = new HashMap<Integer, String>();
final Field[] staticFields = Types.class.getFields();
for (final Field field: staticFields)
{
try
{
final String fieldName = field.getName();
final Integer fieldValue = (Integer) field.get(null);
javaSqlTypes.put(fieldValue, fieldName);
}
catch (final SecurityException e)
{
continue;
}
catch (final IllegalAccessException e)
{
continue;
}
}
return Collections.unmodifiableMap(javaSqlTypes);
}
}