/* * Copyright (c) 2008-2017, Hazelcast, Inc. All Rights Reserved. * * 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 com.hazelcast.client.test; import com.hazelcast.nio.ObjectDataInput; import com.hazelcast.nio.ObjectDataOutput; import com.hazelcast.nio.serialization.IdentifiedDataSerializable; import com.hazelcast.util.IterationType; import java.io.IOException; import java.util.Comparator; import java.util.Map; /** * Custom serializable {@link Comparator} to test non java clients. * This class is for Non-java clients. Please do not remove or modify. */ public class CustomComparator implements Comparator<Map.Entry>, IdentifiedDataSerializable { static final int CLASS_ID = 2; private int type; private IterationType iterationType; public CustomComparator() { } public CustomComparator(int type, IterationType iterationType) { this.type = type; this.iterationType = iterationType; } @Override public int compare(Map.Entry e1, Map.Entry e2) { String str1; String str2; switch (iterationType) { case KEY: str1 = e1.getKey().toString(); str2 = e2.getKey().toString(); break; case VALUE: str1 = e1.getValue().toString(); str2 = e2.getValue().toString(); break; case ENTRY: str1 = e1.getKey().toString() + e1.getValue().toString(); str2 = e2.getKey().toString() + e2.getValue().toString(); break; default: str1 = e1.getKey().toString(); str2 = e2.getKey().toString(); } switch (type) { case 0: return str1.compareTo(str2); case 1: return str2.compareTo(str1); case 2: return size(str1).compareTo(size(str2)); } return 0; } @Override public int getFactoryId() { return IdentifiedFactory.FACTORY_ID; } @Override public int getId() { return CLASS_ID; } @Override public void writeData(ObjectDataOutput out) throws IOException { out.writeInt(type); out.writeInt(iterationType.getId()); } @Override public void readData(ObjectDataInput in) throws IOException { type = in.readInt(); iterationType = IterationType.getById((byte) in.readInt()); } private Integer size(String input) { return input == null ? 0 : input.length(); } }