All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.simpleflatmapper.datastax.impl.DatastaxMapperKeyComparator Maven / Gradle / Ivy

There is a newer version: 8.2.3
Show newest version
package org.simpleflatmapper.datastax.impl;

import com.datastax.driver.core.DataType;
import org.simpleflatmapper.datastax.DatastaxColumnKey;
import org.simpleflatmapper.map.mapper.MapperKey;
import org.simpleflatmapper.map.mapper.MapperKeyComparator;


public class DatastaxMapperKeyComparator extends MapperKeyComparator {
    public static final DatastaxMapperKeyComparator INSTANCE = new DatastaxMapperKeyComparator();

    @Override
    public int compare(MapperKey m1, MapperKey m2) {
        DatastaxColumnKey[] keys1 = m1.getColumns();
        DatastaxColumnKey[] keys2 = m2.getColumns();
        int d = keys1.length - keys2.length;
        if (d != 0){
            return d;
        }
        return compareKeys(keys1, keys2);
    }

    private int compareKeys(DatastaxColumnKey[] keys1, DatastaxColumnKey[] keys2) {
        for(int i = 0; i < keys1.length; i++) {
            int d = compare(keys1[i], keys2[i]);
            if (d!= 0) {
                return d;
            }
        }
        return 0;
    }
    private  int compare(DatastaxColumnKey o1, DatastaxColumnKey o2) {
        int d = o1.getName().compareTo(o2.getName());
        if (d != 0) {
            return d;
        }

        d = o1.getIndex() - o2.getIndex();
        if (d != 0) return d;

        final DataType o1DataType = o1.getDataType();
        final DataType o2DataType = o2.getDataType();
        if (o1DataType == null) {
            if (o2DataType == null) return 0;
            else return -1;
        } else {
            if (o2DataType == null) return 1;
            return o1DataType.getName().compareTo(o2.getDataType().getName());
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy