All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.torque.util.MojoDatabaseListener Maven / Gradle / Ivy

Go to download

Maven plugin for converting database agnostic XML files into platform specific SQL files and for examining proprietary databases via JDBC to generate database agnostic XML files

The newest version!
package org.apache.torque.util;

import org.kuali.core.db.torque.PrettyPrint;
import org.kuali.core.db.torque.Utils;
import org.kuali.db.DatabaseEvent;
import org.kuali.db.DatabaseListener;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.plugin.logging.Log;

/**
 * A mojo friendly listener for database events
 */
public class MojoDatabaseListener implements DatabaseListener {
	Utils utils = new Utils();
	PrettyPrint prettyPrint;
	Log log;
	int updateStatusInterval = 50;

	public MojoDatabaseListener() {
		this(null);
	}

	public MojoDatabaseListener(Log log) {
		super();
		this.log = log;
	}

	@Override
	public void messageLogged(DatabaseEvent event) {
		switch (event.getPriority()) {
		case DEBUG:
			getLog().debug(event.getMessage());
			break;
		case INFO:
			getLog().info(event.getMessage());
			break;
		case WARN:
			getLog().warn(event.getMessage());
			break;
		case ERROR:
			System.out.println();
			getLog().error(event.getMessage(), event.getException());
			break;
		default:
			getLog().warn("Unknown message priority " + event.getPriority() + " for message: " + event.getMessage());
			break;
		}
	}

	protected String getMessage(String s) {
		if (StringUtils.isEmpty(s)) {
			return s;
		}
		int pos = s.lastIndexOf("/");
		if (pos == -1) {
			pos = s.lastIndexOf("\\");
		}
		if (pos == -1) {
			pos = 0;
		} else {
			pos++;
		}
		return s.substring(pos);
	}

	@Override
	public void beginTransaction(DatabaseEvent event) {
		String message = "Executing " + getMessage(event.getTransaction().getResourceLocation() + " ");
		if (!StringUtils.isEmpty(event.getTransaction().getSqlCommand())) {
			message = "Executing SQL ";
		}
		String description = event.getTransaction().getDescription();
		if (!StringUtils.isEmpty(description)) {
			message += "to " + description;
		}
		prettyPrint = new PrettyPrint("[INFO] " + message);
		utils.left(prettyPrint);
	}

	@Override
	public void finishTransaction(DatabaseEvent event) {
		utils.right(prettyPrint);
		prettyPrint = null;
	}

	@Override
	public void beforeExecuteSQL(DatabaseEvent event) {
		int totalStatements = event.getTotalStatements();
		if ((totalStatements % updateStatusInterval) == 0) {
			System.out.print(".");
			prettyPrint.setMsg(prettyPrint.getMsg() + ".");
		}
	}

	@Override
	public void afterExecuteSQL(DatabaseEvent event) {
	}

	@Override
	public void afterProcessingSQLResults(DatabaseEvent event) {
		// TODO Auto-generated method stub

	}

	public PrettyPrint getPrettyPrint() {
		return prettyPrint;
	}

	public void setPrettyPrint(PrettyPrint pp) {
		this.prettyPrint = pp;
	}

	public Log getLog() {
		return log;
	}

	public void setLog(Log log) {
		this.log = log;
	}

	public Utils getUtils() {
		return utils;
	}

	public void setUtils(Utils utils) {
		this.utils = utils;
	}

	public int getUpdateStatusInterval() {
		return updateStatusInterval;
	}

	public void setUpdateStatusInterval(int updateStatusInterval) {
		this.updateStatusInterval = updateStatusInterval;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy