org.openhealthtools.openexchange.syslog.LogImpl.java Source code

Java tutorial

Introduction

Here is the source code for org.openhealthtools.openexchange.syslog.LogImpl.java

Source

/**
 *  Copyright (c) 2009-2011 Misys Open Source Solutions (MOSS) and others
 *
 *  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.
 *
 *  Contributors:
 *    Misys Open Source Solutions - initial API and implementation
 *    -
 */

package org.openhealthtools.openexchange.syslog;

import java.sql.Timestamp;
import java.util.GregorianCalendar;
import java.util.List;

import org.apache.commons.logging.LogFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 * Class allowing to connect the logger to the database, to create message, to
 * delete it and to read it
 * 
 * @author <a href="mailto:venkata.pragallapati@misys.com">Venkat</a>
 * 
 */
public class LogImpl extends HibernateDaoSupport implements Log {
    private static final org.apache.commons.logging.Log log = LogFactory.getLog(LogImpl.class);

    public LogImpl() throws LoggerException {
    }

    /**
     * Create a message with message ID made with the IPAddress and the current
     * timestamp in millisecond
     * 
     * @param ipAddress
     * @return
     * @throws LoggerException
     */
    public Message createMessage(String ipAddress) throws LoggerException {
        Timestamp t = new Timestamp(new GregorianCalendar().getTimeInMillis());

        Message m = new Message();
        m.setIP(ipAddress);
        m.setTimeReceived(t);
        m.setCompany(null);

        return m;

    }

    /**
     * Create an empty message
     * 
     * @return
     * @throws LoggerException
     */
    public Message createMessage() throws LoggerException {
        Timestamp t = new Timestamp(new GregorianCalendar().getTimeInMillis());

        Message m = new Message();
        m.setTimeStamp(t);

        return m;
    }

    /**
     * Same as writeMessage. Calls the writeMessage method to log the message in
     * database
     * 
     * @param m
     * @throws LoggerException
     */
    public void logMessage(LogMessage m) throws LoggerException {
        if (m != null)
            writeMessage(m);
    }

    /**
     * Same as writeMessage. Calls the writeMessage method to log the message in
     * database
     * 
     * @param m
     * @throws LoggerException
     */
    @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
    public void writeMessage(LogMessage message) throws LoggerException {
        if (message != null)
            getHibernateTemplate().saveOrUpdate((Message) message);
    }

    @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
    public void writeIp(CompanyDetails comp) throws LoggerException {
        getHibernateTemplate().saveOrUpdate(comp);
    }

    public void deleteMessage(LogMessage m) throws LoggerException {
        if (m != null)
            getHibernateTemplate().delete((Message) m);

    }

    public void deleteMessage(String messageID) throws LoggerException {
        if (messageID != null) {
            Message m = new Message();
            m.setMessageID(messageID);
            deleteMessage(m);
        }
    }

    public Message readMessage(String messageID) throws LoggerException {
        Message m = null;
        if (messageID != null) {
            List<Message> messages = getHibernateTemplate().find("from Message m where m.messageID = ? ",
                    new String[] { messageID });
            if (messages != null && !messages.isEmpty())
                m = messages.get(0);
        }
        return m;
    }
}