mx.org.cedn.avisosconagua.engine.processors.CapInfo.java Source code

Java tutorial

Introduction

Here is the source code for mx.org.cedn.avisosconagua.engine.processors.CapInfo.java

Source

/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2014 Mxico Abierto
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 * For more information visit https://github.com/mxabierto/avisos.
*/

package mx.org.cedn.avisosconagua.engine.processors;

import com.mongodb.BasicDBObject;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import mx.org.cedn.avisosconagua.engine.Processor;
import mx.org.cedn.avisosconagua.mongo.MongoInterface;
import mx.org.cedn.avisosconagua.util.Utils;

/**
 * Workflow processor for the advice information step.
 * The advice information step is meant to gather from the user all the information related to the current advice to be published.
 * @author serch
 */
public class CapInfo implements Processor {

    @Override
    public void invokeForm(HttpServletRequest request, HttpServletResponse response, BasicDBObject data,
            String[] parts) throws ServletException, IOException {
        HashMap<String, String> datos = new HashMap<>();
        if (null != data) {
            for (String key : data.keySet()) {
                datos.put(key, data.getString(key));
            }
        }

        //Put max sustained winds in map
        BasicDBObject advice = MongoInterface.getInstance()
                .getAdvice((String) request.getSession(true).getAttribute("internalId"));
        if (null != advice) {
            //Get wind speed from init section
            BasicDBObject section = (BasicDBObject) advice.get("init");
            if (null != section) {
                datos.put("eventWindSpeedSust", section.getString("eventWindSpeedSust"));
                datos.put("eventCoastDistance", section.getString("eventCoastDistance"));
            }
        }

        request.setAttribute("data", datos);
        request.setAttribute("bulletinType", parts[2]);
        String url = "/jsp/bulletinInfo.jsp";
        if (parts[2].endsWith("dp")) {
            url = "/jsp/bulletinInfoDp.jsp";
        }

        RequestDispatcher rd = request.getRequestDispatcher(url);
        rd.forward(request, response);
    }

    @Override
    public void processForm(HttpServletRequest request, String[] parts, String currentId)
            throws ServletException, IOException {
        HashMap<String, String> parametros = new HashMap<>();
        for (Map.Entry<String, String[]> entry : request.getParameterMap().entrySet()) {
            try {
                parametros.put(entry.getKey(),
                        new String(request.getParameter(entry.getKey()).getBytes("ISO8859-1"), "UTF-8"));
            } catch (UnsupportedEncodingException ue) {
                //No debe llegar a este punto
                assert false;
            }
        }
        MongoInterface.getInstance().savePlainData(currentId, parts[3], parametros);
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
        String iDate = parametros.get("issueDate");
        String iTime = parametros.get("issueTime");
        String iNextDate = parametros.get("issueNextDate");
        String iNextTime = parametros.get("issueNextTime");
        long liDate = 0;
        long liNextDate = 0;

        if (iDate != null && iTime != null) {
            try {
                liDate = sdf.parse(iDate + " " + iTime).getTime();
                liNextDate = sdf.parse(iNextDate + " " + iNextTime).getTime();
            } catch (ParseException ex) {
                System.out.println("Unparseable date" + ex);
            }

            if (liDate >= liNextDate) {
                String msg = "La fecha de siguiente emisin debe ser posterior a la fecha de emisin.";
                throw new mx.org.cedn.avisosconagua.exceptions.AvisosException(msg, null);
            }
        }
    }
}