gruppe06-hufflepuff-projekt.../src/TextOutput.java

157 lines
5.4 KiB
Java
Raw Normal View History

import java.util.ArrayList;
import java.util.Iterator;
public class TextOutput {
private boolean formatRaw;
private int columnWidth = 10;
/**
* Method which checks in which way the paragraphs should be displayed. And then
*
* @param text the ArrayList which is then formated into the desired output.
*/
public void print(ArrayList<String> text) {
if (formatRaw) {
printFormated(text);
} else {
printUnformatedV2(text);
}
}
/**
* Method to print out the paragraphs in numerical order and with the whole paragraph as its length.
*
* @param text the ArrayList which is used for the output
*/
private void printFormated(ArrayList<String> text) {
for (int counter = 0; counter < text.size(); counter++) {
System.out.println("<" + (counter + 1) + ">: <" + text.get(counter) + ">");
}
}
/**
* Method to print out the paragraphs with the length taken from columnWidth and adding leftover words to the next
* paragraph.
*
* @param text the ArrayList which is used for the output.
*/
private void printUnformated(ArrayList<String> text) {
for (String paragraph : text) {
String[] words = paragraph.split(" ");
int currentLength = 0;
for (String word : words) {
if (word.length() > columnWidth) {
String[] letters = word.split("");
int letterLenght = letters.length;
int lettersPrinted = 0;
do {
currentLength = 0;
for (int i = 0; i < columnWidth; i++) {
if (letterLenght > 0) {
System.out.print(letters[lettersPrinted]);
letterLenght--;
lettersPrinted++;
currentLength++;
}
}
if (!(letterLenght == 0)) {
System.out.println();
}
}
while (letterLenght >= columnWidth);
} else {
if (word.length() >= columnWidth - currentLength) {
currentLength = 0;
System.out.println();
}
System.out.print(word + " ");
currentLength += word.length() + 1;
}
}
System.out.println(); //added
}
}
private void printUnformatedV2(ArrayList<String> text) {
for(String paragraph : text) {
if (paragraph.length() <= columnWidth) {
System.out.println(paragraph);
}
else {
String[] word = paragraph.split(" ");
int currentLineLength = 0;
for(String eachword : word) {
if (eachword.length() > columnWidth) {
String remainingText = eachword;
do {
if (remainingText.length() < columnWidth) {
System.out.println(remainingText);
break;
}
System.out.println(remainingText.substring(0, columnWidth));
remainingText = remainingText.substring((columnWidth));
} while (!(remainingText.length() == 0));
}
else {
if (currentLineLength == 0) {
System.out.println();
}
if (columnWidth > eachword.length()) {
System.out.print(eachword);
if (!(currentLineLength == columnWidth)) {
System.out.print(" ");
}
currentLineLength = currentLineLength + eachword.length();
}
else {
System.out.println(eachword);
currentLineLength = eachword.length();
if (!(currentLineLength == columnWidth)) {
System.out.print(" ");
}
}
}
}
}
}
}
/**
* Method which sets the Variable formatRaw to true.
*/
public void formatRaw() {
formatRaw = true;
}
/**
* Method to set the formatRaw to false and also set the length of the desired paragraph length in order to limit
* the paragraph length when printing the text.
*
* @param length the maximum length of each paragraph that is allowed to be displayed when printing the text.
*/
public void formatFix(int length) {
formatRaw = false;
columnWidth = length;
}
/**
* Method to give out the Error "Invalid String".
*/
public void errorInvalidString() {
System.err.println("Invalid String");
}
/**
* Method to give out the Error "Invalid Command".
*/
public void errorInvalidCommand() {
System.err.println("Invalid Command");
}
}