/** * */ package com.meidusa.amoeba.mongodb.handler.merge; import java.util.ArrayList; import java.util.List; import org.bson.BSONObject; import com.meidusa.amoeba.mongodb.packet.RequestMongodbPacket; import com.meidusa.amoeba.mongodb.packet.ResponseMongodbPacket; /** * * @author Struct * */ public class DistinctFunctionMerge implements FunctionMerge{ @Override public ResponseMongodbPacket mergeResponse(RequestMongodbPacket requestPacket, List<ResponseMongodbPacket> multiResponsePacket) { ResponseMongodbPacket result = null; List retval = new ArrayList(); for(ResponseMongodbPacket response : multiResponsePacket){ if(response.numberReturned >0 && response.documents != null){ if(result == null){ result = response; retval = (List)response.documents.get(0).get("values"); }else{ retval.addAll((List)response.documents.get(0).get("values")); } } } BSONObject res = result.documents.get(0); res.put("values",retval); result.responseTo = requestPacket.requestID; result.numberReturned = (result.documents == null?0:result.documents.size()); return result; } }