org.openmrs.module.sync.server.ConnectionResponse.java Source code

Java tutorial

Introduction

Here is the source code for org.openmrs.module.sync.server.ConnectionResponse.java

Source

/**
 * The contents of this file are subject to the OpenMRS Public License
 * Version 1.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://license.openmrs.org
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations
 * under the License.
 *
 * Copyright (C) OpenMRS, LLC.  All Rights Reserved.
 */
package org.openmrs.module.sync.server;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.CRC32;
import java.util.zip.CheckedInputStream;
import java.util.zip.GZIPInputStream;

import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openmrs.module.sync.SyncException;

/**
 * 
 */
public class ConnectionResponse {

    private static final Log log = LogFactory.getLog(ConnectionResponse.class);

    private ServerConnectionState state;
    private String errorMessage;
    private long checksum;
    private String responsePayload;
    private CheckedInputStream cis;
    private boolean useCompression;

    public ConnectionResponse() {
        this.setErrorMessage("");
        this.setResponsePayload("");
        this.setState(ServerConnectionState.CONNECTION_FAILED);
    }

    /**
     * 
     * @param inputStream
     * @throws SyncException
     */
    public ConnectionResponse(InputStream is, boolean useCompression) throws SyncException {
        try {
            this.useCompression = useCompression;
            this.cis = new CheckedInputStream(is, new CRC32());

            if (this.useCompression) {
                GZIPInputStream zis = new GZIPInputStream(new BufferedInputStream(cis));
                this.responsePayload = IOUtils.toString(zis, "UTF-8");
                IOUtils.closeQuietly(zis);
                IOUtils.closeQuietly(cis);
                log.info("**********************  CHECKSUM: " + cis.getChecksum().getValue());
                this.checksum = cis.getChecksum().getValue();
            } else {
                this.responsePayload = IOUtils.toString(cis, "UTF-8");
            }

            log.info("Response compressed: " + useCompression);
            //log.info("Response input: " + is.toString());
            //log.info("Response data: " + this.responsePayload);
            log.info("Response checksum: " + this.checksum);

            this.setState(ServerConnectionState.OK);

        } catch (IOException e) {
            //throw new SyncException(e);
            log.error("An error occurred while unzipping response", e);
        }

    }

    public long getChecksum() {
        return checksum;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    public String getResponsePayload() {
        return responsePayload;
    }

    public void setResponsePayload(String responsePayload) {
        this.responsePayload = responsePayload;
    }

    public ServerConnectionState getState() {
        return state;
    }

    public void setState(ServerConnectionState state) {
        this.state = state;
    }
}