/**
* Դ�������ƣ�NameSorter.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.database.ui
* ����˵����$desc
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.database.pdm;
import java.util.Comparator;
import org.apache.commons.lang.StringUtils;
import com.hundsun.ares.studio.jres.model.metadata.BusinessDataType;
import com.hundsun.ares.studio.jres.model.metadata.StandardField;
/**
* @author liaogc
*
*/
public class NameSorter implements Comparator<Object>{
/* (non-Javadoc)
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
*/
@Override
public int compare(Object o1, Object o2) {
char[] array1 =new char[0];
char[] array2 = new char[0];
if(o1 instanceof String && o1 instanceof String){
array1 = StringUtils.defaultIfBlank((String)o1, "").trim().toLowerCase().toCharArray();
array2 = StringUtils.defaultIfBlank((String)o2, "").trim().toLowerCase().toCharArray();
}
else if(o1 instanceof BusinessDataType && o1 instanceof BusinessDataType){
array1 = StringUtils.defaultIfBlank(((BusinessDataType)o1).getName(), "").trim().toLowerCase().toCharArray();
array2 = StringUtils.defaultIfBlank(((BusinessDataType)o2).getName(), "").trim().toLowerCase().toCharArray();
}else if(o1 instanceof StandardField && o1 instanceof StandardField){
array1 = StringUtils.defaultIfBlank(((StandardField)o1).getName(), "").trim().toLowerCase().toCharArray();
array2 = StringUtils.defaultIfBlank(((StandardField)o2).getName(), "").trim().toLowerCase().toCharArray();
}
int length = array1.length<array2.length?array1.length:array2.length;
for(int i=0;i<length;i++){
char a1 = array1[i];
char a2 = array2[i];
if(((int)a1)!=((int)a2)){
return (int)a1-(int)a2;
}
}
return array1.length-array2.length ;
}
}