mercury.RootJsonHandler.java Source code

Java tutorial

Introduction

Here is the source code for mercury.RootJsonHandler.java

Source

/**
 *  Este arquivo  parte do Biblivre3.
 *  
 *  Biblivre3  um software livre; voc pode redistribu-lo e/ou 
 *  modific-lo dentro dos termos da Licena Pblica Geral GNU como 
 *  publicada pela Fundao do Software Livre (FSF); na verso 3 da 
 *  Licena, ou (caso queira) qualquer verso posterior.
 *  
 *  Este programa  distribudo na esperana de que possa ser  til, 
 *  mas SEM NENHUMA GARANTIA; nem mesmo a garantia implcita de
 *  MERCANTIBILIDADE OU ADEQUAO PARA UM FIM PARTICULAR. Veja a
 *  Licena Pblica Geral GNU para maiores detalhes.
 *  
 *  Voc deve ter recebido uma cpia da Licena Pblica Geral GNU junto
 *  com este programa, Se no, veja em <http://www.gnu.org/licenses/>.
 * 
 *  @author Alberto Wagner <alberto@biblivre.org.br>
 *  @author Danniel Willian <danniel@biblivre.org.br>
 * 
 */

package mercury;

import biblivre3.utils.DateUtils;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.text.DateFormat;
import java.util.Date;
import javax.servlet.http.*;
import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.util.StringUtils;

public abstract class RootJsonHandler {

    public abstract JSONObject process(HttpServletRequest request, HttpServletResponse response);

    protected DateFormat dateFormatter = DateUtils.dd_MM_yyyy;

    protected <T extends DTO> T populateDtoFromJson(String jsonData, T dto) {
        try {
            JSONObject json = new JSONObject(jsonData);
            Class clazz = dto.getClass();
            for (Field field : clazz.getDeclaredFields()) {
                try {
                    String name = field.getName();
                    Class fieldClass = field.getType();
                    Object value = null;
                    if (fieldClass.equals(String.class)) {
                        value = json.has(name) ? json.getString(name) : null;
                    } else if (fieldClass.equals(Integer.class)) {
                        try {
                            value = json.has(name) ? json.getInt(name) : null;
                        } catch (Exception e) {
                            value = -1;
                        }
                    } else if (fieldClass.equals(Float.class)) {
                        String sValue = json.has(name) ? json.getString(name).replaceAll(",", ".") : null;
                        value = sValue != null ? Float.valueOf(sValue) : null;
                    } else if (fieldClass.equals(Date.class)) {
                        value = json.has(name) ? json.getString(name) : null;
                        value = value != null ? this.dateFormatter.parse((String) value) : null;
                    }

                    if (value == null) {
                        continue;
                    }

                    Method setter = clazz.getDeclaredMethod("set" + StringUtils.capitalize(name), fieldClass);
                    if (setter != null) {
                        setter.invoke(dto, value);
                    }
                } catch (Exception e) {
                    continue;
                }
            }
        } catch (JSONException je) {
        }
        return dto;
    }
}