package org.weiboad.ragnar.server.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Comparator;
public class RPCIDKeySortComparator implements Comparator<String> {
Logger log = LoggerFactory.getLogger(RPCIDKeySortComparator.class);
@Override
public int compare(String key1, String key2) {
String[] key1Arr = key1.split("\\.");
String[] key2Arr = key2.split("\\.");
if (key1Arr.length > key2Arr.length) {
//log.info(">| first:" + key1 + " second:" + key2 + "");
for (int keyindex = 0; keyindex < key1Arr.length; keyindex++) {
int key1int;
int key2int;
key1int = Integer.parseInt(key1Arr[keyindex]);
//fill zero
if (keyindex >= key2Arr.length) {
key2int = 0;
} else {
key2int = Integer.parseInt(key2Arr[keyindex]);
}
if (key1int > key2int) {
//log.info(" >> first:" + key1 + " second:" + key2 + "");
return 1;
}
if (key1int < key2int) {
//log.info(" >< first:" + key1 + " second:" + key2 + "");
return -1;
}
//same
if (key1int == key2int) {
//log.info(" >= first:" + key1 + " second:" + key2 + "");
continue;
}
}
return 1;
}
if (key1Arr.length < key2Arr.length) {
//log.info("<| first:" + key1 + " second:" + key2 + "");
for (int keyindex = 0; keyindex < key1Arr.length; keyindex++) {
int key1int;
int key2int;
key2int = Integer.parseInt(key1Arr[keyindex]);
//fill zero
if (keyindex >= key1Arr.length) {
key1int = 0;
} else {
key1int = Integer.parseInt(key1Arr[keyindex]);
}
if (key1int > key2int) {
//log.info(" <> first:" + key1 + " second:" + key2 + "");
return -1;
}
if (key1int < key2int) {
//log.info(" << first:" + key1 + " second:" + key2 + "");
return 1;
}
//same
if (key1int == key2int) {
//log.info(" <= first:" + key1 + " second:" + key2 + "");
continue;
}
}
return -1;
}
if (key1Arr.length == key2Arr.length) {
//log.info("=| first:" + key1 + " second:" + key2 + "");
for (int keyindex = 0; keyindex < key1Arr.length; keyindex++) {
int key1int = Integer.parseInt(key1Arr[keyindex]);
int key2int = Integer.parseInt(key2Arr[keyindex]);
if (key1int > key2int) {
//log.info(" => first:" + key1 + " second:" + key2 + "");
return 1;
}
if (key1int < key2int) {
//log.info(" =< first:" + key1 + " second:" + key2 + "");
return -1;
}
//same
if (key1int == key2int) {
//log.info(" == first:" + key1 + " second:" + key2 + "");
continue;
}
}
return 0;
}
return 0;
}
}