/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.log; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; import org.osgi.service.log.LogService; import de.rcenvironment.core.communication.common.InstanceNodeSessionId; /** * Serializable version of {@link LogEntry}. * * @author Doreen Seider */ public class SerializableLogEntry implements Serializable, Comparable<SerializableLogEntry> { /** constant. */ public static final String RCE_SEPARATOR = "#RCEn"; private static final long serialVersionUID = 1L; private final String bundleName; private final int level; private final String message; private final long time; private final String exception; private InstanceNodeSessionId platformId; public SerializableLogEntry(String bundleName, int level, String message, long time, String exception) { this.bundleName = bundleName; this.level = level; this.message = message; this.time = time; this.exception = exception; } public String getBundleName() { return bundleName; } public int getLevel() { return level; } public String getMessage() { return message; } public long getTime() { return time; } public String getException() { return exception; } public InstanceNodeSessionId getPlatformIdentifer() { return platformId; } public void setPlatformIdentifer(InstanceNodeSessionId newPlatformId) { this.platformId = newPlatformId; } @Override public String toString() { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd - HH:mm:ss,SSS"); String levelAsString = null; switch (level) { case LogService.LOG_ERROR: levelAsString = "ERROR"; break; case LogService.LOG_WARNING: levelAsString = "WARNING"; break; case LogService.LOG_INFO: levelAsString = "INFO"; break; case LogService.LOG_DEBUG: levelAsString = "DEBUG"; break; default: break; } return df.format(time) + " " + levelAsString + " - " + message; } @Override public int compareTo(SerializableLogEntry o) { int compResult = new Date(time).compareTo(new Date(o.getTime())); if (compResult == 0) { compResult = platformId.toString().compareTo(o.getPlatformIdentifer().toString()); if (compResult == 0) { compResult = bundleName.compareTo(o.getBundleName()); if (compResult == 0) { compResult = new Integer(level).compareTo(new Integer(o.getLevel())); if (compResult == 0) { compResult = message.compareTo(o.getMessage()); } } } } if (compResult == 0 && exception != null && o.getException() != null) { compResult = exception.compareTo(o.getException()); } return compResult; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + bundleName.hashCode(); result = prime * result + message.hashCode(); final int number = 32; result = prime * result + (int) (time ^ (time >>> number)); return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof SerializableLogEntry)) { return false; } SerializableLogEntry other = (SerializableLogEntry) obj; if (bundleName == null) { if (other.bundleName != null) { return false; } } else if (!bundleName.equals(other.bundleName)) { return false; } if (message == null) { if (other.message != null) { return false; } } else if (!message.equals(other.message)) { return false; } if (time != other.time) { return false; } return true; } }