blob: 3212966d9cc880f6f42078585931d377eb67bde4 [file] [log] [blame]
/*
* Copyright 2017 Cisco Systems, Inc.
*
* 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.
*
*/
package com.cisco.gerrit.plugins.slack.message;
import com.cisco.gerrit.plugins.slack.util.ResourceHelper;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Defines a message template.
*
* @author Matthew Montgomery
*/
public class MessageTemplate {
/** The class logger instance. */
private static final Logger LOGGER = LoggerFactory.getLogger(MessageTemplate.class);
private String channel;
private String name;
private String action;
private String project;
private String branch;
private String url;
private int number;
private String title;
private String message;
public String getChannel() {
return clean(channel);
}
public void setChannel(String channel) {
this.channel = channel;
}
public String getName() {
return clean(name);
}
public void setName(String name) {
this.name = name;
}
public String getAction() {
return clean(action);
}
public void setAction(String action) {
this.action = action;
}
public String getProject() {
return clean(project);
}
public void setProject(String project) {
this.project = project;
}
public String getBranch() {
return clean(branch);
}
public void setBranch(String branch) {
this.branch = branch;
}
public String getUrl() {
return clean(url);
}
public void setUrl(String url) {
this.url = url;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getTitle() {
return clean(title);
}
public void setTitle(String title) {
this.title = title;
}
public String getMessage() {
return clean(message);
}
public void setMessage(String message) {
this.message = message;
}
/**
* Renders the message template into a String.
*
* @return A String representation of the rendered template.
*/
public String render() {
String result;
result = "";
try {
String template;
template = ResourceHelper.loadNamedResourceAsString("message-template.json");
result =
String.format(
template,
getChannel(),
getName(),
getAction(),
getProject(),
getBranch(),
getUrl(),
getNumber(),
getTitle(),
getMessage(),
"good");
} catch (IOException e) {
LOGGER.error("Error rendering template: " + e.getMessage(), e);
}
return result;
}
/**
* Cleans up the provided string to make it acceptable for using in a Slack message template. It
* escapes any double quote characters, trims all leading/trailing whitespace and returns an empty
* string if the provided string was null.
*
* @param str The string to process.
* @return The message with all occurrences of the double quote character escaped and
* leading/trailing whitespace trimmed
*/
private String clean(String str) {
if (str != null) {
str = str.replace("\"", "\\\"").trim();
} else {
str = "";
}
return str;
}
}