package com.link_intersystems.io;
import java.io.File;
import java.io.IOException;
import org.apache.commons.lang3.StringUtils;
public class FileUtils {
private static final String PATH_ABBRIVIATION = "..";
public static String abbreviatedPath(File file, int size) {
String filePath = null;
try {
filePath = file.getCanonicalPath();
} catch (IOException e) {
filePath = file.getAbsolutePath();
}
StringBuilder abbreviatedPath = new StringBuilder();
StringBuilderMarker abbreviationMarker = new StringBuilderMarker(
abbreviatedPath);
String[] pathSegments = StringUtils.split(filePath, File.separator);
if (pathSegments.length > 0) {
String firstSegment = pathSegments[0];
abbreviatedPath.append(firstSegment);
abbreviatedPath.append(File.separator);
if (pathSegments.length > 1) {
abbreviationMarker.begin();
abbreviatedPath.append(PATH_ABBRIVIATION);
abbreviatedPath.append(File.separator);
abbreviationMarker.end();
}
if (abbreviatedPath.length() < size) {
if (pathSegments.length > 1) {
String lastSegment = pathSegments[pathSegments.length - 1];
abbreviatedPath.append(lastSegment);
}
int i = 1;
for (; i < pathSegments.length; i++) {
String pathSegment = pathSegments[i];
if (abbreviatedPath.length() + pathSegment.length() < size) {
abbreviationMarker.appendBeforeMark(pathSegment);
abbreviationMarker.appendBeforeMark(File.separator);
} else {
break;
}
}
if (i >= pathSegments.length) {
abbreviationMarker.delete();
}
}
}
return abbreviatedPath.toString();
}
}