package provider; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class MapleDataProvider { private File root; private MapleDataDirectoryEntry rootForNavigation; public MapleDataProvider(File fileIn) { this.root = fileIn; this.rootForNavigation = new MapleDataDirectoryEntry(fileIn.getName(), 0, 0, null); fillMapleDataEntitys(this.root, this.rootForNavigation); } private void fillMapleDataEntitys(File lroot, MapleDataDirectoryEntry wzdir) { for (File file : lroot.listFiles()) { String fileName = file.getName(); if ((file.isDirectory()) && (!fileName.endsWith(".img"))) { MapleDataDirectoryEntry newDir = new MapleDataDirectoryEntry(fileName, 0, 0, wzdir); wzdir.addDirectory(newDir); fillMapleDataEntitys(file, newDir); } else if (fileName.endsWith(".xml")) { wzdir.addFile(new MapleDataFileEntry(fileName.substring(0, fileName.length() - 4), 0, 0, wzdir)); } } } public MapleData getData(String path) { File dataFile = new File(this.root, path + ".xml"); File imageDataDir = new File(this.root, path); FileInputStream fis; try { fis = new FileInputStream(dataFile); } catch (FileNotFoundException e) { throw new RuntimeException("Datafile " + path + " does not exist in " + this.root.getAbsolutePath()); } MapleData domMapleData; try { domMapleData = new MapleData(fis, imageDataDir.getParentFile()); } finally { try { fis.close(); } catch (IOException e) { throw new RuntimeException(e); } } return domMapleData; } public MapleDataDirectoryEntry getRoot() { return this.rootForNavigation; } }