package com.constellio.model.services.schemas;
import java.util.Comparator;
import com.constellio.model.entities.records.Record;
import com.constellio.model.entities.schemas.Metadata;
import com.constellio.model.entities.schemas.MetadataSchema;
import com.constellio.model.entities.schemas.MetadataSchemaType;
import com.constellio.model.entities.schemas.MetadataSchemaTypes;
public class SchemaComparators {
public static final Comparator<Metadata> METADATA_COMPARATOR_BY_ASC_LOCAL_CODE = new Comparator<Metadata>() {
@Override
public int compare(Metadata o1, Metadata o2) {
return o1.getLocalCode().compareTo(o2.getLocalCode());
}
};
public static final Comparator<MetadataSchema> SCHEMA_COMPARATOR_BY_ASC_LOCAL_CODE = new Comparator<MetadataSchema>() {
@Override
public int compare(MetadataSchema o1, MetadataSchema o2) {
return o1.getLocalCode().compareTo(o2.getLocalCode());
}
};
public static final Comparator<MetadataSchemaType> SCHEMA_TYPE_COMPARATOR_BY_ASC_CODE = new Comparator<MetadataSchemaType>() {
@Override
public int compare(MetadataSchemaType o1, MetadataSchemaType o2) {
return o1.getCode().compareTo(o2.getCode());
}
};
public static final Comparator<Record> sortRecordsBySchemasDependencies(final MetadataSchemaTypes schemaTypes) {
return new Comparator<Record>() {
@Override
public int compare(Record r1, Record r2) {
SchemaUtils schemaUtils = new SchemaUtils();
String schemaType1 = schemaUtils.getSchemaTypeCode(r1.getSchemaCode());
String schemaType2 = schemaUtils.getSchemaTypeCode(r2.getSchemaCode());
Integer index1 = schemaTypes.getSchemaTypesSortedByDependency().indexOf(schemaType1);
Integer index2 = schemaTypes.getSchemaTypesSortedByDependency().indexOf(schemaType2);
return index1.compareTo(index2);
}
};
}
}