package com.link_intersystems.gitdirstat.cli; import java.io.PrintWriter; import java.math.BigInteger; import java.text.MessageFormat; import java.util.List; import org.apache.commons.lang3.StringUtils; import com.link_intersystems.gitdirstat.domain.TreeObject; public class PathListFormatter { private List<TreeObject> treeObjects; public PathListFormatter(List<TreeObject> treeObjects) { this.treeObjects = treeObjects; } public void format(PrintWriter printWriter) { BigInteger maxSize = getMaxSize(); int maxLength = maxSize.toString().length(); for (TreeObject treeObject : treeObjects) { BigInteger size = treeObject.getSize(); String sizeValue = size.toString(); String paddedSize = StringUtils.rightPad(sizeValue, maxLength); String path = treeObject.getRootRelativePath().getPathname(); String pathSizeLine = MessageFormat.format("{0} {1}", paddedSize, path); printWriter.println(pathSizeLine); } } private BigInteger getMaxSize() { TreeObject max = null; for (TreeObject treeObject : treeObjects) { if (max == null) { max = treeObject; } else { max = treeObject.compareTo(max) > 0 ? treeObject : max; } } final BigInteger maxSize = max.getSize(); return maxSize; } }