package es.eucm.ead.engine.resources;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class ResourcesGenerator {
private static final String PACKAGE = "es/eucm/ead/engine/resources";
private static final String PREFIX_FROM_MODULE = "src/main/";
private static final String PREFIX_FROM_ROOT = "core/engine-resources/src/main/";
public static void main(String args[]) throws IOException {
File fromModule = new File(PREFIX_FROM_MODULE);
File fromRoot = new File(PREFIX_FROM_ROOT);
File from = null;
if (fromModule.isDirectory()) {
from = fromModule;
} else if (fromRoot.isDirectory()) {
from = fromRoot;
} else {
throw new IOException("Cannot build R-file: bad relative paths");
}
File f = new File(from, "java/" + PACKAGE + "/R.java");
System.err.println("Writing R file to '" + f.getAbsolutePath() + "'");
BufferedWriter writer = null;
try {
boolean created = f.exists();
if (!created) {
created = f.createNewFile();
}
if (created) {
writer = new BufferedWriter(new FileWriter(f));
writer.write("package " + PACKAGE.replace('/', '.') + ";");
writer.newLine();
writer.newLine();
writer.write("public class R {");
writer.newLine();
writer.write("public static final String[]"
+ " RESOURCES = new String[]{");
writer.newLine();
ArrayList<File> resources = getResources(from);
for (int i = 0; i < resources.size(); i++) {
File file = resources.get(i);
String name = file.getAbsolutePath().replace('\\', '/');
name = name.substring(name.indexOf(PACKAGE));
writer.write(" \"" + name + "\""
+ (i == resources.size() - 1 ? "" : ","));
writer.newLine();
}
writer.write("};");
writer.newLine();
writer.write("}");
} else {
System.err.println("R-file couldn't be created.");
}
} catch (IOException e) {
System.err.println("Error creating R-file: " + e.getMessage());
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e1) {
System.err.println(e1.getMessage());
}
}
}
}
public static ArrayList<File> getResources(File from) {
File folder = new File(from, "resources/" + PACKAGE);
ArrayList<File> resources = new ArrayList<File>();
addFiles(folder, resources);
return resources;
}
public static void addFiles(File f, ArrayList<File> resources) {
for (File file : f.listFiles()) {
if (file.isDirectory()) {
addFiles(file, resources);
} else {
resources.add(file);
}
}
}
}