package net.buycraft.plugin.shared.config.signs; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import net.buycraft.plugin.data.Package; import java.text.NumberFormat; import java.util.ArrayList; import java.util.Currency; import java.util.List; import java.util.Locale; public class BuyNowSignLayout { public static final BuyNowSignLayout DEFAULT = new BuyNowSignLayout(ImmutableList.of( "&9[Package]", "%name%", "%price%" )); private final List<String> lines; public BuyNowSignLayout(List<String> lines) { this.lines = ImmutableList.copyOf(lines); } public List<String> format(Currency currency, Package p) { NumberFormat format = NumberFormat.getCurrencyInstance(Locale.US); format.setCurrency(currency); List<String> formatted = new ArrayList<>(); for (String line : lines) { formatted.add(line.replace("%name%", abbreviate(p.getName(), 16)) .replace("%price%", format.format(p.getEffectivePrice()))); } return formatted; } private static String abbreviate(String string, int maximumLength) { Preconditions.checkNotNull(string, "string"); Preconditions.checkArgument(maximumLength > 0, "length to trim to (%s) is not valid (greater than 0)", maximumLength); return string.length() > maximumLength ? string.substring(0, maximumLength - 3) + "..." : string; } }