Package ke.go.moh.oec.cds

Source Code of ke.go.moh.oec.cds.CdsHelper

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ke.go.moh.oec.cds;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import ke.go.moh.oec.Person;
import ke.go.moh.oec.PersonRequest;
import ke.go.moh.oec.RequestTypeId;
import ke.go.moh.oec.Visit;
import ke.go.moh.oec.Work;
import ke.go.moh.oec.lib.Mediator;

/**
* @author Brian Wakhutu
* @author Gitahi Ng'ang'a
*/
public class CdsHelper {

    private final Mediator mediator;

    public CdsHelper(Mediator mediator) {
        this.mediator = mediator;
    }

    public void processNotifyPersonChanged(PersonRequest personRequest) {
        Mediator.getLogger(Cds.class.getName()).log(Level.FINER, "NOTIFY_PERSON_CHANGED");
        Person person = personRequest.getPerson();
        if (person != null) {
            Visit lastRegularVisit = person.getLastRegularVisit();
            if (lastRegularVisit != null) {
                String visitAddress = lastRegularVisit.getAddress();
                String xml = personRequest.getXml();
                Mediator.getLogger(Cds.class.getName()).log(Level.FINER, "Notify");
                Connection notifyConn = Sql.connect();
                String notifySql = "INSERT INTO cds_store(destination, message, voided, received_datetime) "
                        + " VALUES(" + Sql.quote(visitAddress) + "," + Sql.quote(xml) + ", 0, NOW())";
                //grab autogenerated key
                Integer autogeneratedKey = Sql.executeUpdate(notifyConn, notifySql);
                //immediately forward notification to reception
                PersonRequest pr = new PersonRequest();
                pr.setRequestReference(autogeneratedKey.toString());
                pr.setDestinationAddress(visitAddress);
                pr.setXml(xml);
                mediator.getData(RequestTypeId.NOTIFY_PERSON_CHANGED, pr);
            } else {
                Mediator.getLogger(Cds.class.getName()).log(Level.SEVERE, "null lastRegularVisit in person sent by mpi");
            }
        } else {
            Mediator.getLogger(Cds.class.getName()).log(Level.SEVERE, "null requestData sent by mpi");
        }
    }

    public void processGetWork(Work work) {
        Mediator.getLogger(Cds.class.getName()).log(Level.FINER, "GET_WORK");
        String workAddress = work.getSourceAddress();
        Connection getWorkConn = Sql.connect();
        String getWorkSql = " SELECT id, message, destination FROM cds_store WHERE destination = "
                + " " + Sql.quote(workAddress) + ""
                + "AND voided = 0";
        ResultSet rs = Sql.query(getWorkConn, getWorkSql);
        try {
            while (rs.next()) {
                Integer notificationId = rs.getInt("id");
                String message = rs.getString("message");//get message from cds to be sent
                String destinationAddress = rs.getString("destination");//get destination
                /*
                 * Send notify to destination
                 * instantiate person request so that you can set the new
                 * information held in the record set
                 */
                PersonRequest prOut = new PersonRequest();
                prOut.setDestinationAddress(destinationAddress);
                prOut.setXml(message);
                prOut.setRequestReference(notificationId.toString());
                //Invoke the mediator to send out new person request changes (prout)
                mediator.getData(RequestTypeId.NOTIFY_PERSON_CHANGED, prOut);
            }
        } catch (SQLException ex) {
            Logger.getLogger(Cds.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void processReassignWork(Work work) {
        Mediator.getLogger(Cds.class.getName()).log(Level.FINER, "REASSIGN");
        int id = Integer.parseInt(work.getNotificationId());
        String reassignAddress = work.getReassignAddress();
        //Update the destination of the Message to a different destination
        Connection reassignConn = Sql.connect();
        String reassignSql = "UPDATE cds_store SET destination = " + Sql.quote(reassignAddress) + ""
                + " WHERE id = " + id;
        Sql.execute(reassignConn, reassignSql);
    }

    public void processWorkDone(Work work) {
        Mediator.getLogger(Cds.class.getName()).log(Level.FINER, "WORK_DONE");
        int id = Integer.parseInt(work.getNotificationId());
        //Mark the message as voided
        Connection workDoneConn = Sql.connect();
        String workDoneSql = "UPDATE cds_store SET voided = 1 where "
                + " id = " + id;
        Sql.execute(workDoneConn, workDoneSql);
    }
}
TOP

Related Classes of ke.go.moh.oec.cds.CdsHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.