private EASLogEntry(String entryNum, String startTime, String endTime, String cmd, String requestXML, String responseXML, 
            boolean serverException, boolean pendingResponse, Map<String, String>headers, Alarms alarms){
        // initialize the alarm signal, value can be updated during subsequent processing
        alarms_ = Alarms.NoAlarm;

        //System.out.println("Creating entry:" + entryNum);
        entryNum_ = Integer.valueOf(entryNum);
        //if(entryNum_ == 131)
        //    System.out.println("bang");
        startTimeStr_ = startTime;
        endTimeStr_ = endTime;        
        startDate_ = startTimeStr_ == null ? null : getDate(startTimeStr_);
        endDate_ = endTimeStr_ == null ? null : getDate(endTimeStr_);
        durationSecs_ = (endDate_ == null || startDate_ == null) ? 0 : ((int)(endDate_.getTime() - startDate_.getTime())) / 1000;
        cmd_ = cmd;
        details_ = "";
        serverException_ = serverException;
        pendingResponse_ = pendingResponse;
        headers_ = headers;

        if(startTimeStr_ == null){
            alarms_ = alarms.add(alarms_, Alarms.NoStartTimeAlarm);
        }
        if(serverException_){
            alarms_ = alarms.add(alarms_, Alarms.ServerExceptionAlarm);
        }
        if(pendingResponse_){
            alarms_ = alarms.add(alarms_, Alarms.PendingResponseAlarm);
        }
        
        requestSize_ = handleXML(requestXML, true, alarms);
        long sizeofResponse = 0;
        if(responseXML == null){
            alarms_ = alarms.add(alarms_, Alarms.NoServerResponseAlarm);
        }else if(responseXML.isEmpty()){
            // empty response is what Sync and Ping normally get
        }else{
            sizeofResponse = handleXML(responseXML, false, alarms);
        }
        responseSize_ = sizeofResponse;
        bytesTransferred_ = requestSize_ + responseSize_;
    }