/** * Copyright 2008-2016 Qualogy Solutions B.V. * * Licensed 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 com.qualogy.qafe.business.integration.filter.sort; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.Map; import com.qualogy.qafe.business.integration.filter.sort.comparators.BigDecimalComparator; import com.qualogy.qafe.business.integration.filter.sort.comparators.BigIntegerComparator; import com.qualogy.qafe.business.integration.filter.sort.comparators.BooleanComparator; import com.qualogy.qafe.business.integration.filter.sort.comparators.ByteComparator; import com.qualogy.qafe.business.integration.filter.sort.comparators.DateComparator; import com.qualogy.qafe.business.integration.filter.sort.comparators.DoubleComparator; import com.qualogy.qafe.business.integration.filter.sort.comparators.FloatComparator; import com.qualogy.qafe.business.integration.filter.sort.comparators.IntegerComparator; import com.qualogy.qafe.business.integration.filter.sort.comparators.LongComparator; import com.qualogy.qafe.business.integration.filter.sort.comparators.ShortComparator; import com.qualogy.qafe.business.integration.filter.sort.comparators.SortComparator; import com.qualogy.qafe.business.integration.filter.sort.comparators.StringComparator; public abstract class ComparatorFactory { private static final Map<Class<?>, Class<?>> COMPARATOR_MAP = new HashMap<Class<?>, Class<?>>(); static { COMPARATOR_MAP.put(String.class, StringComparator.class); COMPARATOR_MAP.put(Boolean.class, BooleanComparator.class); COMPARATOR_MAP.put(Date.class, DateComparator.class); COMPARATOR_MAP.put(Byte.class, ByteComparator.class); COMPARATOR_MAP.put(Short.class, ShortComparator.class); COMPARATOR_MAP.put(Integer.class, IntegerComparator.class); COMPARATOR_MAP.put(Long.class, LongComparator.class); COMPARATOR_MAP.put(Float.class, FloatComparator.class); COMPARATOR_MAP.put(Double.class, DoubleComparator.class); COMPARATOR_MAP.put(BigInteger.class, BigIntegerComparator.class); COMPARATOR_MAP.put(BigDecimal.class, BigDecimalComparator.class); } public static Comparator createComparator(String fieldName, Boolean sortAscending, Object value) { SortComparator comparator = null; Class<?> clazz = COMPARATOR_MAP.get(value.getClass()); if (clazz != null){ try { comparator = (SortComparator)clazz.newInstance(); if (comparator != null) { comparator.setFieldName(fieldName); comparator.setSortAscending(sortAscending); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } // if (value instanceof Number) { // // Byte; Short; Integer; Long; AtomicInteger; AtomicLong; Float; Double; BigInteger; BigDecimal. // if (value instanceof Byte) { // comparator = new ByteComparator(fieldName, sortAscending); // } else if (value instanceof Short) { // // } else if (value instanceof Integer) { // comparator = new IntegerComparator(fieldName, sortAscending); // } else { // // } // } else if (value instanceof String) { // comparator = new StringComparator(fieldName, sortAscending); // } else if (value instanceof Date) { // comparator = new DateComparator(fieldName, sortAscending); // } return comparator; } }