package hex;
import java.io.IOException;
import java.util.List;
import java.util.zip.ZipOutputStream;
public abstract class MultiModelMojoWriter<M extends Model<M, P, O>, P extends Model.Parameters, O extends Model.Output>
extends ModelMojoWriter<M, P, O> {
public MultiModelMojoWriter() {}
public MultiModelMojoWriter(M model) {
super(model);
}
protected abstract List<Model> getSubModels();
protected abstract void writeParentModelData() throws IOException;
protected final void writeModelData() throws IOException {
List<Model> subModels = getSubModels();
writekv("submodel_count", subModels.size());
int modelNum = 0;
for (Model model : subModels) {
writekv("submodel_key_" + modelNum, model._key.toString());
writekv("submodel_dir_" + modelNum, getZipDirectory(model));
modelNum++;
}
writeParentModelData();
}
protected void writeTo(ZipOutputStream zos) throws IOException {
super.writeTo(zos);
for (Model model : getSubModels()) {
String zipDir = getZipDirectory(model);
ModelMojoWriter writer = model.getMojo();
writer.writeTo(zos, zipDir);
}
}
private static String getZipDirectory(Model m) {
String algo = m._parms.algoName();
String key = m._key.toString();
return "models/" + algo + "/" + key + "/";
}
}