Много кода. Кажется, если использовать getColumnAt и сравнивать тип-значение и просто сравнивать типы колонок - будет короче.