/**
* Copyright (c) 2009--2014 Red Hat, Inc.
*
* This software is licensed to you under the GNU General Public License,
* version 2 (GPLv2). There is NO WARRANTY for this software, express or
* implied, including the implied warranties of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
* along with this software; if not, see
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
*
* Red Hat trademarks are not licensed under GPLv2. No permission is
* granted to use or replicate Red Hat trademarks that are incorporated
* in this software or its documentation.
*/
package com.redhat.rhn.domain.action.config;
import com.redhat.rhn.common.localization.LocalizationService;
import com.redhat.rhn.common.util.StringUtil;
import com.redhat.rhn.domain.action.ActionFormatter;
import com.redhat.rhn.domain.config.ConfigFile;
import com.redhat.rhn.domain.config.ConfigFileName;
import com.redhat.rhn.domain.config.ConfigRevision;
import org.apache.commons.lang.StringEscapeUtils;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
/**
* ConfigActionFormatter
* @version $Rev$
*/
public class ConfigActionFormatter extends ActionFormatter {
/**
* Create a new config action formatter
* @param actionIn The action.
*/
public ConfigActionFormatter(ConfigAction actionIn) {
super(actionIn);
}
/**
* Creates an html display for the config action notes.
* Shows a single revision per line.
* @return The html notes string
*/
protected String getNotesBody() {
StringBuilder buffy = new StringBuilder();
ConfigAction action = (ConfigAction)getAction();
Iterator configs = action.getConfigRevisionActions().iterator();
//There could (and most likely will be) multiple config revision actions per
// revision (one per system). Therefore, we will keep track of ones we have
// already displayed.
Set dealtWith = new HashSet();
while (configs.hasNext()) {
ConfigRevision revision =
((ConfigRevisionAction) configs.next()).getConfigRevision();
if (!dealtWith.contains(revision.getId())) {
buffy.append(displayRevision(revision));
dealtWith.add(revision.getId());
}
}
return buffy.toString();
}
private String displayRevision(ConfigRevision revision) {
ConfigFile file = revision.getConfigFile();
StringBuilder buffy = new StringBuilder();
Object[] args = new Object[5];
args[0] = "/rhn/configuration/file/FileDetails.do?cfid=" + file.getId() +
"&crid=" + revision.getId();
args[1] = revision.getRevision();
args[2] = StringEscapeUtils.escapeHtml(file.getConfigFileName().getPath());
args[3] = "/rhn/configuration/ChannelOverview.do?ccid=" +
file.getConfigChannel().getId();
args[4] = file.getConfigChannel().getName();
buffy.append(LocalizationService.getInstance()
.getMessage("config.actionnote", args));
buffy.append("<br />");
return buffy.toString();
}
/**
* {@inheritDoc}
*/
@Override
public String getRelatedObjectDescription() {
Set<ConfigRevisionAction> revisionActions = ((ConfigAction) getAction())
.getConfigRevisionActions();
List<String> result = new LinkedList<String>();
if (revisionActions != null) {
for (ConfigRevisionAction revisionAction : revisionActions) {
ConfigRevision revision = revisionAction.getConfigRevision();
if (revision != null) {
ConfigFile configFile = revision.getConfigFile();
if (configFile != null) {
ConfigFileName configFileName = configFile.getConfigFileName();
if (configFileName != null) {
result.add(
"<a href=\"/rhn/configuration/file/FileDetails.do?crid=" +
revision.getId().toString() +
"\">" +
StringEscapeUtils.escapeHtml(configFileName.getPath()) +
"</a>"
);
}
}
}
}
}
return StringUtil.join(", ", result);
}
}