/*
* RHQ Management Platform
* Copyright (C) 2010 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.rhq.bundle.ant.task;
import org.apache.tools.ant.BuildException;
import org.rhq.bundle.ant.BundleAntProject.AuditStatus;
/**
* The rhq:audit task is a way recipe authors can add their own audit messages to the stream
* of audit messages that the server gets to see how the progress went with the provisioning of a bundle.
*
* <rhq:audit status='SUCCESS|INFO|WARN|FAILURE' action="My Step" info="summary info" message="intermediate details">
* long details here
* </rhq:audit>
*
* @author John Mazzitelli
*/
public class AuditTask extends AbstractBundleTask {
private AuditStatus status = AuditStatus.SUCCESS; // see BundleResourceDeploymentHistory.Status
private String action = null;
private String info = null;
private String message = "";
private String details = "";
@Override
public void maybeConfigure() throws BuildException {
super.maybeConfigure(); // inits the attribute fields
}
@Override
public void execute() throws BuildException {
getProject().auditLog(status, action, info, message, details);
}
public AuditStatus getStatus() {
return status;
}
public void setStatus(String status) {
if (this.status == null) {
this.status = AuditStatus.SUCCESS;
} else {
try {
this.status = AuditStatus.valueOf(status.toUpperCase());
} catch (Exception e) {
throw new BuildException("The 'status' attribute must be either 'SUCCESS', 'INFO', 'WARN' or 'FAILURE'");
}
}
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = (message != null) ? message : "";
}
/**
* Set a multiline message.
* @param msg the CDATA text to append to the message text
*/
public void addText(String msg) {
if (msg != null) {
this.details += getProject().replaceProperties(msg);
}
}
}