package org.fcrepo.server.utilities;
import java.io.PrintWriter;
import java.util.Arrays;
abstract class SpaceCharacters {
/**
* A convenience class for getting and printing indent
* characters without creating lots of Strings or char arrays.
*/
private static final int SIXTY_FOUR = 64;
private static final char[] SIXTY_FOUR_SPACES =
indentChars(SIXTY_FOUR);
public static char[] indentChars(int num) {
char[] indent = new char[num];
Arrays.fill(indent, ' ');
return indent;
}
/**
* Write a number of whitespaces to a writer
* @param num
* @param out
*/
public static void indent(int num, PrintWriter out) {
if (num <= SIXTY_FOUR) {
out.write(SIXTY_FOUR_SPACES, 0, num);
return;
} else if (num <= 128){
out.write(SIXTY_FOUR_SPACES, 0, SIXTY_FOUR);
out.write(SIXTY_FOUR_SPACES, 0, num - SIXTY_FOUR);
} else {
int times = num / SIXTY_FOUR;
int rem = num % SIXTY_FOUR;
for (int i = 0; i< times; i++) {
out.write(SIXTY_FOUR_SPACES, 0, SIXTY_FOUR);
}
out.write(SIXTY_FOUR_SPACES, 0, rem);
return;
}
}
/**
* Write a number of whitespaces to a StringBuffer
* @param num
* @param out
*/
public static void indent(int num, StringBuilder out) {
if (num <= SIXTY_FOUR) {
out.append(SIXTY_FOUR_SPACES, 0, num);
return;
} else if (num <= 128){
// avoid initializing loop counters if only one iteration
out.append(SIXTY_FOUR_SPACES, 0, SIXTY_FOUR);
out.append(SIXTY_FOUR_SPACES, 0, num - SIXTY_FOUR);
} else {
int times = num / SIXTY_FOUR;
int rem = num % SIXTY_FOUR;
for (int i = 0; i< times; i++) {
out.append(SIXTY_FOUR_SPACES, 0, SIXTY_FOUR);
}
out.append(SIXTY_FOUR_SPACES, 0, rem);
return;
}
}
}