BeanDiffPrinter.java

package sk.iway.iwcm.helpers;

import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.lang.StringUtils;

import sk.iway.iwcm.Logger;

/**
 *  BeanDiffPrinter.java
 *
 *@Title        webjet7
 *@Company      Interway s.r.o. (www.interway.sk)
 *@Copyright    Interway s.r.o. (c) 2001-2010
 *@author       $Author: marosurbanec $
 *@version      $Revision: 1.3 $
 *@created      Date: 31.3.2010 14:05:32
 *@modified     $Date: 2004/08/16 06:26:11 $
 */
public class BeanDiffPrinter
{
	BeanDiff diff;

	public BeanDiffPrinter(BeanDiff diff)
	{
		this.diff = diff;
	}

	public String toHtml()
	{
		return toString().replaceAll("\n", "<br />");
	}

	@Override
	public String toString()
	{
		try
		{
			Map<String, PropertyDiff> changes = diff.diff();
			if (changes.size() == 0)
				return " Žiadne zmeny";

			StringBuilder output = new StringBuilder();
			for (Entry<String, PropertyDiff> change : changes.entrySet())
			{
				output.append('\n').
					append(change.getKey()).
					append(": ");

				if (diff.hasOriginal()) {
					output.append(StringUtils.abbreviate(change.getValue().valueBefore.toString(), 100)).
					append(" => ").
					append(StringUtils.abbreviate(change.getValue().valueAfter.toString(), 100));
				} else {
					output.append(StringUtils.abbreviate(change.getValue().valueAfter.toString(), 100));
				}
			}

			return output.toString();
		} catch (Exception ex) {
			Logger.error(BeanDiffPrinter.class, ex);
		}
		return " Chyba pri ziskani zoznamu zmien";
	}
}