/*******************************************************************************
* Copyright 2013 butor.com
*
* 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 org.butor.json.service;
import java.lang.reflect.Type;
import java.util.List;
import org.butor.json.util.JsonResponse;
import org.butor.utils.Message;
import org.butor.utils.Message.MessageType;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
public class ResponseHandlerHelper {
/**
* Use this method to send list to your ResponseHandler
* @param list
* @param handler
*/
public static <T> void addList(List<T> list, ResponseHandler<T> handler) {
Preconditions.checkNotNull(handler, "ResponseHandler should not be null");
Preconditions.checkNotNull(list, "List should not be null");
Message msg = new Message("totalRows", MessageType.DATA, Integer.toString(list.size()));
handler.addMessage(msg);
for (T o : list) {
if (!handler.addRow(o))
break;
}
}
public static <T> JsonResponse<T> createJsonResponse(final Type responseType) {
final List<Message> messages = Lists.newArrayList();
final List<T> rows = Lists.newArrayList();
JsonResponse<T> x = new JsonResponse<T>() {
@Override
public boolean addMessage(Message msg) {
messages.add(msg);
return true;
}
@Override
public boolean addRow(T row) {
rows.add(row);
return true;
}
@Override
public void end() {
}
public List<Message> getMessages() {
return messages;
}
public List<T> getRows() {
return rows;
}
public T getRow() {
if (rows != null && rows.size() > 0) {
return rows.get(0);
}
return null;
}
@Override
public Type getResponseType() {
return responseType;
}
};
return x;
}
}