org.jdal.util.comparator.PropertyComparator.java Source code

Java tutorial

Introduction

Here is the source code for org.jdal.util.comparator.PropertyComparator.java

Source

/*
 * Copyright 2002-2010 the original author or authors.
 *
 * 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 org.jdal.util.comparator;

import java.util.Comparator;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Comparator for generic beans by property value.
 * is an alphaNumeric comparator. When two string have numbers
 * and have same prefix, use numeric comparation so test_10 > than test_2 
 * 
 * @author Jose Luis Martin
 * @sine 1.0
 */
public class PropertyComparator implements Comparator<Object> {
    /** common logs */
    private static Log log = LogFactory.getLog(PropertyComparator.class);
    /** property name */
    private String name;
    /** alpha numeric comparator */
    private Comparator<String> comparator = new AlphaNumericComparator();

    /** ctor 
     * @param name property name
     */
    public PropertyComparator(String name) {
        this.name = name;
    }

    /** 
     * @param o1 one bean
     * @param o2 another bean
     * @return see the see
     * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
     */
    public int compare(Object o1, Object o2) {
        try {
            String value1 = (String) BeanUtils.getProperty(o1, name).trim();
            String value2;
            value2 = (String) BeanUtils.getProperty(o2, name).trim();

            return comparator.compare(value1, value2);
        } catch (Exception e) {
            log.error(e);
        }

        return 0;
    }

    /**
     * @return the comparator
     */
    public Comparator<String> getComparator() {
        return comparator;
    }

    /**
     * @param comparator the comparator to set
     */
    public void setComparator(Comparator<String> comparator) {
        this.comparator = comparator;
    }
}