/*
UpdateModuleXmlMd5Hashes.java
(c) 2012-2013 Edward Swartz
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v1.0
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html
*/
package v9t9.machine.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import v9t9.common.files.PathFileLocator;
import v9t9.common.modules.IModule;
import v9t9.common.modules.ModuleDatabase;
import v9t9.common.modules.ModuleInfoDatabase;
import v9t9.common.settings.BasicSettingsHandler;
import v9t9.common.settings.SettingSchemaProperty;
import v9t9.engine.memory.Memory;
import v9t9.engine.memory.MemoryEntryFactory;
import v9t9.machine.ti99.machine.StandardTI994AMachineModel;
import ejs.base.properties.IProperty;
/**
* @author ejs
*
*/
public class MigrateModuleXML {
public static void main(String[] args) throws IOException {
MigrateModuleXML runner = new MigrateModuleXML();
runner.run(args);
}
private Memory memory;
private PathFileLocator locator;
private BasicSettingsHandler settings;
/**
*
*/
public MigrateModuleXML() {
memory = new Memory();
locator = new PathFileLocator();
IProperty prop = new SettingSchemaProperty("Paths", String.class, new ArrayList<String>());
prop.getList().add("/usr/local/src/v9t9-data/roms");
prop.getList().add("/usr/local/src/v9t9-data/modules");
prop.getList().add("/usr/local/src/v9t9-data/modules/mess");
prop.getList().add("/usr/local/src/v9t9-data/modules/tosec");
locator.addReadOnlyPathProperty(prop);
settings = new BasicSettingsHandler();
memory.setMemoryEntryFactory(new MemoryEntryFactory(settings, memory, locator));
}
protected void run(String[] args) throws IOException {
for (String arg : args) {
File file = new File(arg);
URI dbUri = file.toURI();
InputStream is = new FileInputStream(file);
try {
ModuleInfoDatabase moduleInfoDb = ModuleInfoDatabase.loadModuleInfo(new StandardTI994AMachineModel().createMachine(settings));
List<IModule> modules = ModuleDatabase.loadModuleListAndClose(memory, moduleInfoDb, is, dbUri);
for (@SuppressWarnings("unused") IModule module : modules) {
// ModuleInfo info = ModuleInfo.createForModule(module);
// if (module.getImagePath() != null) {
// info.setImagePath(module.getImagePath());
// module.setInfo(info);
// moduleInfoDb.register(module);
// }
}
OutputStream os = new FileOutputStream(file.toString() + ".info");
moduleInfoDb.saveModuleInfoAndClose(os);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}