All Downloads are FREE. Search and download functionalities are using the official Maven repository.

oms3.dsl.esp.Esp Maven / Gradle / Ivy

There is a newer version: 0.10.8
Show newest version
//package oms3.dsl.esp;
//
//import oms3.dsl.*;
//import java.io.File;
//import java.io.PrintWriter;
//import java.util.Calendar;
//import java.util.Date;
//import java.util.GregorianCalendar;
//import java.util.Map;
//import java.util.logging.Level;
//import java.util.logging.Logger;
//import ngmf.util.OutputStragegy;
//import oms3.ComponentAccess;
//import oms3.Compound;
//import oms3.Conversions;
//import oms3.annotations.Execute;
//import oms3.annotations.Finalize;
//import oms3.annotations.Initialize;
//import oms3.io.CSTable;
//import oms3.io.DataIO;
//import oms3.util.Times;
//
//public class Esp extends AbstractSimulation {
//
//    // esp stuff
//    int first_year;
//    int last_year;
//    //
//    int fc;
//    Calendar fc_end;
//
//    @Override
//    public Buildable create(Object name, Object value) {
//        if (name.equals("forecast_end")) {
//            Date d = Conversions.convert(value, Date.class);
//            fc_end = new GregorianCalendar();
//            fc_end.setTime(d);
//        } else if (name.equals("forecast_days")) {
//            fc = (Integer) value;
//            if (fc < 1) {
//                throw new IllegalArgumentException("forecast_days < 1");
//            }
//        } else if (name.equals("first_year")) {
//            first_year = (Integer) value;
//        } else if (name.equals("last_year")) {
//            last_year = (Integer) value;
//        } else {
//            return super.create(name, value);
//        }
//        return LEAF;
//    }
//
//    @Override
//    public Object run() throws Exception {
//        Compound.reload();
//        Logger.getLogger("oms3.model").setLevel(Level.WARNING);
//
//        if (getModel() == null) {
//            throw new IllegalArgumentException("missing model definition.");
//        }
//        Calendar now = new GregorianCalendar();
//        int thisYear = now.get(Calendar.YEAR);
//
//        if (fc == 0 && fc_end == null) {
//            throw new IllegalArgumentException("set either 'forecast_days' or 'forecast_end'");
//        }
//        if (fc > 0 && fc_end != null) {
//            throw new IllegalArgumentException("set 'forecast_days' or 'forecast_end', not both");
//        }
//
//        if (fc_end == null && (fc > 366 || fc < 1)) {
//            throw new IllegalArgumentException("forecast_days: 1...366");
//        }
//
//        if (first_year < 1900 || last_year < 1900 || first_year >= last_year || first_year > thisYear || last_year > thisYear) {
//            throw new IllegalArgumentException("invalid/missing first_year or/and last_year!");
//        }
//
//        OutputStragegy st = getOutput().getOutputStrategy(getName());
//        File lastFolder = st.nextOutputFolder();
//        if (log.isLoggable(Level.CONFIG)) {
//            log.config("Simulation output folder: " + lastFolder);
//        }
//        lastFolder.mkdirs();
//        PrintWriter res = new PrintWriter(new File(lastFolder, "result.csv"));
//        res.println("@S, Result");
//
//        Calendar start = null;
//        Calendar end = null;
//
//        System.out.print(" Running ESP Traces ");
//        for (int year = first_year; year <= last_year; year++) {
//            System.out.print(" " + year);
//
//            Object comp = getModel().getComponent();
//            log.config("Init ...");
//            ComponentAccess.callAnnotated(comp, Initialize.class, true);
//
//            // setting the input data;
//            Map parameter = getModel().getParameter();
//            boolean success = ComponentAccess.setInputData(parameter, comp, log);
//            if (!success) {
//                System.out.println("There are Parameter problems. Simulation exits.");
//                return null;
//            }
//
//            boolean adjusted = ComponentAccess.adjustOutputPath(lastFolder, comp, log);
//            if (adjusted) {
//                lastFolder.mkdirs();
//            }
//
//            start = (Calendar) comp.getClass().getField("startTime").get(comp);
//            end = (Calendar) comp.getClass().getField("endTime").get(comp);
//            File input_file = (File) comp.getClass().getField("inputFile").get(comp);
//            File out_file = (File) comp.getClass().getField("outFile").get(comp);
//            if (start.after(end)) {
//                throw new IllegalArgumentException("illegal startTime/endTime.");
//            }
//
//            if (fc == 0) {
//                fc = (int) Times.diffDayPeriods(end, fc_end);
//            } else {
//                fc_end = new GregorianCalendar();
//                fc_end.setTime(end.getTime());
//                fc_end.add(Calendar.DATE, fc);
//            }
//
//            CSTable t = DataIO.table(input_file, "obs");
//            CSTable esp = DataIO.synthESPInput(t, start.getTime(), end.getTime(), fc, year);
//            File new_input_file = new File(lastFolder, "esp-" + year + "-" + input_file.getName());
//            PrintWriter w = new PrintWriter(new_input_file);
//            DataIO.print(esp, w);
//            w.close();
//
//            File new_outFile = new File(out_file.getParent(), "esp-" + year + "-" + out_file.getName());
//
//            comp.getClass().getField("inputFile").set(comp, new_input_file);
//            comp.getClass().getField("outFile").set(comp, new_outFile);
//            comp.getClass().getField("endTime").set(comp, fc_end);
//
//            // execute phases and be done.
//            log.config("Exec ...");
//            ComponentAccess.callAnnotated(comp, Execute.class, false);
//            log.config("Finalize ...");
//            ComponentAccess.callAnnotated(comp, Finalize.class, true);
//            res.println(" trace." + year + ", \"" + new_outFile.toString() + "\"");
//        }
//        res.println(" initstart, " + Conversions.formatISO(start.getTime()));
//        res.println(" initend, " + Conversions.formatISO(end.getTime()));
//        res.println(" forecastend, " + Conversions.formatISO(fc_end.getTime()));
//        res.println(" firstyear, " + first_year);
//        res.println(" lastyear, " + last_year);
//        res.close();
//        System.out.println();
//        Compound.shutdown();
//        return null;
//    }
//}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy