com.netsteadfast.greenstep.bsc.esb.router.ApiRouteBuilder.java Source code

Java tutorial

Introduction

Here is the source code for com.netsteadfast.greenstep.bsc.esb.router.ApiRouteBuilder.java

Source

/* 
 * Copyright 2012-2016 bambooCORE, greenstep of copyright Chen Xin Nien
 * 
 * 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.
 * 
 * -----------------------------------------------------------------------
 * 
 * author:    Chen Xin Nien
 * contact: chen.xin.nien@gmail.com
 * 
 */
package com.netsteadfast.greenstep.bsc.esb.router;

import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.commons.lang3.StringUtils;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.netsteadfast.greenstep.base.AppContext;
import com.netsteadfast.greenstep.bsc.vo.BscApiServiceResponse;
import com.netsteadfast.greenstep.bsc.webservice.ApiWebService;
import com.thoughtworks.xstream.XStream;

/**
 * :
 * 
 * http://127.0.0.1:8080/gsbsc-web/camel/api?format=json&visionOid=1089abb5-3faf-445d-88ff-cd7690ac6743&startDate=&endDate=&startYearDate=2015&endYearDate=2016&frequency=6&dataFor=all&measureDataOrganizationOid=&measureDataEmployeeOid=&contentFlag=
 * http://127.0.0.1:8080/gsbsc-web/camel/api?format=xml&visionOid=1089abb5-3faf-445d-88ff-cd7690ac6743&startDate=&endDate=&startYearDate=2015&endYearDate=2016&frequency=6&dataFor=all&measureDataOrganizationOid=&measureDataEmployeeOid=&contentFlag=
 * 
 */
public class ApiRouteBuilder extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        this.from("servlet:///api").process(new Processor() {

            @Override
            public void process(Exchange exchange) throws Exception {
                String format = StringUtils.defaultString(exchange.getIn().getHeader("format", String.class)).trim()
                        .toLowerCase();
                String visionOid = StringUtils.defaultString(exchange.getIn().getHeader("visionOid", String.class))
                        .trim().toLowerCase();
                String startDate = StringUtils.defaultString(exchange.getIn().getHeader("startDate", String.class))
                        .trim().toLowerCase();
                String endDate = StringUtils.defaultString(exchange.getIn().getHeader("endDate", String.class))
                        .trim().toLowerCase();
                String startYearDate = StringUtils
                        .defaultString(exchange.getIn().getHeader("startYearDate", String.class)).trim()
                        .toLowerCase();
                String endYearDate = StringUtils
                        .defaultString(exchange.getIn().getHeader("endYearDate", String.class)).trim()
                        .toLowerCase();
                String frequency = StringUtils.defaultString(exchange.getIn().getHeader("frequency", String.class))
                        .trim().toLowerCase();
                String dataFor = StringUtils.defaultString(exchange.getIn().getHeader("dataFor", String.class))
                        .trim().toLowerCase();
                String measureDataOrganizationOid = StringUtils
                        .defaultString(exchange.getIn().getHeader("measureDataOrganizationOid", String.class))
                        .trim().toLowerCase();
                String measureDataEmployeeOid = StringUtils
                        .defaultString(exchange.getIn().getHeader("measureDataEmployeeOid", String.class)).trim()
                        .toLowerCase();
                String contentFlag = StringUtils
                        .defaultString(exchange.getIn().getHeader("contentFlag", String.class)).trim()
                        .toUpperCase();
                String responseContent = "";
                // ? gsbsc-web applicationContext-STANDARD-CXF.xml
                ApiWebService apiWebService = (ApiWebService) AppContext.getBean("bsc.webservice.ApiWebService");
                BscApiServiceResponse responseObj = apiWebService.getScorecard1(visionOid, startDate, endDate,
                        startYearDate, endYearDate, frequency, dataFor, measureDataOrganizationOid,
                        measureDataEmployeeOid, contentFlag);
                if ("xml".equals(format)) { // xml
                    XStream xstream = new XStream();
                    xstream.setMode(XStream.NO_REFERENCES);
                    xstream.alias("response", BscApiServiceResponse.class);
                    responseContent = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xstream.toXML(responseObj);
                } else { // json
                    ObjectMapper mapper = new ObjectMapper();
                    responseContent = mapper.writeValueAsString(responseObj);
                }
                exchange.getOut().setBody(responseContent);
            }

        }).to("stream:out");
    }

}