r4fterman/pdf.forms

View on GitHub
src/main/java/org/pdf/forms/gui/commands/FileUtil.java

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package org.pdf.forms.gui.commands;

public final class FileUtil {

    private static final int MAX_CHARS = 30;

    private FileUtil() {
        // do nothing
    }

    public static String getShortenedFileName(
            final String fileNameToAdd,
            final String fileSeparator) {

        if (fileNameToAdd.length() <= MAX_CHARS) {
            return fileNameToAdd;
        }

        final String[] arrayedFilePath = fileNameToAdd.split(fileSeparator);
        final int numberOfTokens = arrayedFilePath.length;

        final String filePathBody = fileNameToAdd.substring(arrayedFilePath[0].length(),
                fileNameToAdd.length() - arrayedFilePath[numberOfTokens - 1].length());

        final StringBuilder builder = new StringBuilder(filePathBody);

        for (int i = numberOfTokens - 2; i > 0; i--) {
            final int start = builder.lastIndexOf(arrayedFilePath[i]);

            final int end = start + arrayedFilePath[i].length();
            builder.replace(start, end, "...");

            if (builder.toString().length() <= MAX_CHARS) {
                break;
            }
        }

        return arrayedFilePath[0] + builder.toString() + arrayedFilePath[numberOfTokens - 1];
    }
}