rendered paste bodypackage oving6;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.MalformedURLException;
import com.sun.org.apache.xerces.internal.util.URI.MalformedURIException;
public class ColonyIO {
public static Colony readColony(File file) throws IOException {
return ColonyIO.readColony(new BufferedReader(new FileReader(file)));
}
public static Colony readColony(URI url) throws IOException {
InputStream is = null;
BufferedReader br = null;
try {
is = url.toURL().openStream();
br = new BufferedReader(new InputStreamReader(is));
} catch (MalformedURLException murle) {
System.err.println(murle);
} catch (IOException ioe) {
System.err.println(ioe);
}
return ColonyIO.readColony(br);
}
public static Colony readColony(BufferedReader br) throws IOException {
if (!br.ready()) throw new IOException("Error: Buffer not ready.");
if (br == null) throw new IOException("Error: Buffer is empty.") ;
try {
String currentLine = br.readLine();
String[] temp = currentLine.split("x");
int width = Integer.parseInt(temp[0]);
int height = Integer.parseInt(temp[1]);
Colony colony = new BooleanArrayColony(height, width);
int widthCounter = 0;
do {
currentLine = br.readLine();
if (currentLine.startsWith("#")) {
continue;
} else if (isValid(currentLine)) {
char[] c = new char[currentLine.length()];
for (int i = 0; i < currentLine.length(); i++) {
char cTemp;
cTemp = currentLine.charAt(i);
c[i] = cTemp;
boolean state = false;
if (c[i] == '*') state = true;
colony.setCell(i, widthCounter, state);
}
continue;
} else if (!isValid(currentLine)) {
break;
}
widthCounter++;
} while (currentLine != null);
return colony;
} catch (IOException ioe) {
System.err.println(ioe);
} catch (IllegalArgumentException iae) {
System.err.println(iae);
}
return null;
}
private static boolean isValid(String s) {
for (int i = 0;i < s.length();i++) {
char c = s.charAt(i);
if (Character.isDigit(c) || Character.isWhitespace(c) || c == 'x') {
continue;
} else {
return false;
}
}
return true;
}
}