149 lines
4.1 KiB
Java
149 lines
4.1 KiB
Java
import java.util.ArrayList;
|
|
|
|
/**
|
|
*
|
|
*/
|
|
public class TextOutput {
|
|
private boolean formatRaw;
|
|
private int columnWidth = 20;
|
|
|
|
/**
|
|
* Method which checks in which way the paragraphs should be displayed. And then calls the corresponding
|
|
* method to output the text as desired.
|
|
*
|
|
* @param text the ArrayList which is then formatted into the desired output.
|
|
*/
|
|
public void print(ArrayList<String> text) {
|
|
if(text.size() == 0) {
|
|
errorMissingText();
|
|
}
|
|
else if (formatRaw) {
|
|
printFormated(text);
|
|
} else {
|
|
toFormat(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 toFormat(ArrayList<String> text) {
|
|
for (String paragraph : text) {
|
|
int currentLength = 0;
|
|
String[] words = paragraph.split(" ");
|
|
int lastWordNumber = words.length;
|
|
int currentWordNumber = 0;
|
|
for(String word : words) {
|
|
currentWordNumber++;
|
|
if (word.length()<= columnWidth - currentLength) {
|
|
System.out.print(word);
|
|
}
|
|
else {
|
|
if(currentWordNumber != 1) {
|
|
System.out.println();
|
|
currentLength = 0;
|
|
}
|
|
System.out.print(word);
|
|
|
|
}
|
|
if(!(currentWordNumber == lastWordNumber)) {
|
|
System.out.print(" ");
|
|
currentLength = currentLength + word.length() + 1;
|
|
}
|
|
else {
|
|
System.out.println();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Method which sets the Variable formatRaw to true.
|
|
*
|
|
* @return true to indicate that it was successful.
|
|
*/
|
|
public boolean formatRaw() {
|
|
formatRaw = true;
|
|
return 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 paragraph length when printing the text.
|
|
* @return returns true if successful and false if and invalid length has been submitted.
|
|
*/
|
|
public boolean formatFix(int length) {
|
|
if(length > 0) {
|
|
formatRaw = false;
|
|
columnWidth = length;
|
|
return true;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Method which outputs user information.
|
|
*
|
|
* @param info User information received as a String.
|
|
*/
|
|
public void userInfoOutput(String info) {
|
|
System.out.println(info);
|
|
}
|
|
|
|
/**
|
|
* Outputs the index that contains words with corresponding paragraphs.
|
|
*
|
|
* @param index ArrayList with words and in which part they have
|
|
*/
|
|
public void indexOutput(ArrayList<String> index) {
|
|
if(index.size() == 0) {
|
|
errorMissingText();
|
|
}
|
|
else {
|
|
for (String word : index) {
|
|
System.out.println(word);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Method to give out the Error "Invalid Paragraph".
|
|
*/
|
|
public void errorInvalidParagraph() {
|
|
System.err.println("Invalid Paragraph");
|
|
}
|
|
|
|
/**
|
|
* Method to give out the Error "Invalid Command".
|
|
*/
|
|
public void errorInvalidCommand() {
|
|
System.err.println("Invalid Command");
|
|
}
|
|
|
|
/**
|
|
* Method to give out the Error "Missing Text".
|
|
*/
|
|
public void errorMissingText() {
|
|
System.err.println("Missing Text");
|
|
}
|
|
}
|