/*
* Copyright 2010 NCHOVY
*
* 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.
*/
package org.krakenapps.winapi;
import java.util.Calendar;
import java.util.Date;
public class EventLog {
static {
System.loadLibrary("winapi");
}
private int recordNumber;
private int eventId;
private EventType eventType;
private Date generated;
private Date written;
private String providerName;
private String eventCategory;
private byte[] userSid;
private String user;
private String message;
private byte[] data;
private EventLog(int recordNumber, int eventId, EventType eventType, int generatedTime, int writtenTime,
String sourceName, String eventCategory, byte[] userSid, String user, String message, byte[] data) {
this.recordNumber = recordNumber;
this.eventId = eventId;
this.eventType = eventType;
this.generated = toDate(generatedTime);
this.written = toDate(writtenTime);
this.providerName = sourceName;
this.eventCategory = eventCategory;
this.userSid = userSid;
this.user = user;
this.message = message != null ? message.trim() : null;
this.data = data;
}
private Date toDate(int seconds) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, 1970);
c.set(Calendar.MONDAY, 0);
c.set(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
c.add(Calendar.SECOND, seconds);
return c.getTime();
}
public int getRecordNumber() {
return recordNumber;
}
public int getEventId() {
return eventId;
}
public EventType getEventType() {
return eventType;
}
public Date getGenerated() {
return generated;
}
public Date getWritten() {
return written;
}
public String getProviderName() {
return providerName;
}
public String getEventCategory() {
return eventCategory;
}
public byte[] getUserSid() {
return userSid;
}
public String getUser() {
return user;
}
public String getMessage() {
return message;
}
public byte[] getData() {
return data;
}
@Override
public String toString() {
String str = "";
str += "----- Log -----\r\n";
str += "RecordNumber : " + recordNumber + "\r\n";
str += "EventId : " + eventId + "\r\n";
str += "EventType : " + eventType + "\r\n";
str += "Generated : " + generated + "\r\n";
str += "Written : " + written + "\r\n";
str += "Providername : " + providerName + "\r\n";
str += "EventCategory : " + eventCategory + "\r\n";
str += "UserSID : " + (userSid == null ? "null" : userSid.length) + "\r\n";
str += "User : " + user + "\r\n";
str += "Message : " + message + "\r\n";
if (data != null) {
str += "Data : " + data.length + " bytes\r\n";
str += "\t";
for (byte b : data)
str += String.format("%02x", b);
str += "\r\n";
}
return str;
}
}