|
Java example source code file (EventData.java)
This example Java source code file (EventData.java) is included in the alvinalexander.com
"Java Source Code
Warehouse" project. The intent of this project is to help you "Learn
Java by Example" TM.
Learn more about this Java project at its project page.
The EventData.java Java example source code
/**
* Copyright (c) 2004-2011 QOS.ch
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
package org.slf4j.ext;
import java.io.Serializable;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.beans.ExceptionListener;
/**
* Base class for Event Data. Event Data contains data to be logged about an
* event. Users may extend this class for each EventType they want to log.
*
* @author Ralph Goers
*/
public class EventData implements Serializable {
private static final long serialVersionUID = 153270778642103985L;
private Map<String, Object> eventData = new HashMap();
public static final String EVENT_MESSAGE = "EventMessage";
public static final String EVENT_TYPE = "EventType";
public static final String EVENT_DATETIME = "EventDateTime";
public static final String EVENT_ID = "EventId";
/**
* Default Constructor
*/
public EventData() {
}
/**
* Constructor to create event data from a Map.
*
* @param map
* The event data.
*/
public EventData(Map<String, Object> map) {
eventData.putAll(map);
}
/**
* Construct from a serialized form of the Map containing the RequestInfo
* elements
*
* @param xml
* The serialized form of the RequestInfo Map.
*/
@SuppressWarnings("unchecked")
public EventData(String xml) {
ByteArrayInputStream bais = new ByteArrayInputStream(xml.getBytes());
try {
XMLDecoder decoder = new XMLDecoder(bais);
this.eventData = (Map<String, Object>) decoder.readObject();
} catch (Exception e) {
throw new EventException("Error decoding " + xml, e);
}
}
/**
* Serialize all the EventData items into an XML representation.
*
* @return an XML String containing all the EventDAta items.
*/
public String toXML() {
return toXML(eventData);
}
/**
* Serialize all the EventData items into an XML representation.
*
* @param map the Map to transform
* @return an XML String containing all the EventDAta items.
*/
public static String toXML(Map<String, Object> map) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
XMLEncoder encoder = new XMLEncoder(baos);
encoder.setExceptionListener(new ExceptionListener() {
public void exceptionThrown(Exception exception) {
exception.printStackTrace();
}
});
encoder.writeObject(map);
encoder.close();
return baos.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* Retrieve the event identifier.
*
* @return The event identifier
*/
public String getEventId() {
return (String) this.eventData.get(EVENT_ID);
}
/**
* Set the event identifier.
*
* @param eventId
* The event identifier.
*/
public void setEventId(String eventId) {
if (eventId == null) {
throw new IllegalArgumentException("eventId cannot be null");
}
this.eventData.put(EVENT_ID, eventId);
}
/**
* Retrieve the message text associated with this event, if any.
*
* @return The message text associated with this event or null if there is
* none.
*/
public String getMessage() {
return (String) this.eventData.get(EVENT_MESSAGE);
}
/**
* Set the message text associated with this event.
*
* @param message
* The message text.
*/
public void setMessage(String message) {
this.eventData.put(EVENT_MESSAGE, message);
}
/**
* Retrieve the date and time the event occurred.
*
* @return The Date associated with the event.
*/
public Date getEventDateTime() {
return (Date) this.eventData.get(EVENT_DATETIME);
}
/**
* Set the date and time the event occurred in case it is not the same as when
* the event was logged.
*
* @param eventDateTime
* The event Date.
*/
public void setEventDateTime(Date eventDateTime) {
this.eventData.put(EVENT_DATETIME, eventDateTime);
}
/**
* Set the type of event that occurred.
*
* @param eventType
* The type of the event.
*/
public void setEventType(String eventType) {
this.eventData.put(EVENT_TYPE, eventType);
}
/**
* Retrieve the type of the event.
*
* @return The event type.
*/
public String getEventType() {
return (String) this.eventData.get(EVENT_TYPE);
}
/**
* Add arbitrary attributes about the event.
*
* @param name
* The attribute's key.
* @param obj
* The data associated with the key.
*/
public void put(String name, Serializable obj) {
this.eventData.put(name, obj);
}
/**
* Retrieve an event attribute.
*
* @param name
* The attribute's key.
* @return The value associated with the key or null if the key is not
* present.
*/
public Serializable get(String name) {
return (Serializable) this.eventData.get(name);
}
/**
* Populate the event data from a Map.
*
* @param data
* The Map to copy.
*/
public void putAll(Map<String, Object> data) {
this.eventData.putAll(data);
}
/**
* Returns the number of attributes in the EventData.
*
* @return the number of attributes in the EventData.
*/
public int getSize() {
return this.eventData.size();
}
/**
* Returns an Iterator over all the entries in the EventDAta.
*
* @return an Iterator that can be used to access all the event attributes.
*/
public Iterator<Map.Entry getEntrySetIterator() {
return this.eventData.entrySet().iterator();
}
/**
* Retrieve all the attributes in the EventData as a Map. Changes to this map
* will be reflected in the EventData.
*
* @return The Map of attributes in this EventData instance.
*/
public Map<String, Object> getEventMap() {
return this.eventData;
}
/**
* Convert the EventData to a String.
*
* @return The EventData as a String.
*/
@Override
public String toString() {
return toXML();
}
/**
* Compare two EventData objects for equality.
*
* @param o
* The Object to compare.
* @return true if the objects are the same instance or contain all the same
* keys and their values.
*/
@SuppressWarnings("unchecked")
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof EventData || o instanceof Map)) {
return false;
}
Map<String, Object> map = (o instanceof EventData) ? ((EventData) o).getEventMap() : (Map) o;
return this.eventData.equals(map);
}
/**
* Compute the hashCode for this EventData instance.
*
* @return The hashcode for this EventData instance.
*/
@Override
public int hashCode() {
return this.eventData.hashCode();
}
}
Other Java examples (source code examples)
Here is a short list of links related to this Java EventData.java source code file:
|