edu.rmit.eres.seaports.database.CurrentClimateVulnerabilityDataSourceLoader.java Source code

Java tutorial

Introduction

Here is the source code for edu.rmit.eres.seaports.database.CurrentClimateVulnerabilityDataSourceLoader.java

Source

/**
 * Copyright (c) 2014, RMIT University, Australia.
 * All rights reserved.
 * 
 * This code is under the BSD license. See 'license.txt' for details.
 * Project hosted at: https://bitbucket.org/eresearchrmit/seaports-pacific.git
 */
package edu.rmit.eres.seaports.database;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.ImprovedNamingStrategy;
import org.hibernate.tool.hbm2ddl.SchemaExport;

import edu.rmit.eres.seaports.model.*;
import edu.rmit.eres.seaports.model.datasource.CurrentClimateVulnerabilityDataSource;

/**
 * Class used to load CSIRO Data Source in the database
 * @author Guillaume Prevost
 */
@SuppressWarnings("deprecation")
public class CurrentClimateVulnerabilityDataSourceLoader {

    /**
     * Main method used to load  the CSIRO Data Source only.
     * On an existing database, this may duplicate data.
     * @param args: no parameters
     */
    public static void main(String[] args) {
        AnnotationConfiguration config = new AnnotationConfiguration();
        config.setNamingStrategy(ImprovedNamingStrategy.INSTANCE);
        config.configure("hibernate.cfg.xml");
        new SchemaExport(config).create(true, true);

        SessionFactory factory = config.buildSessionFactory();
        Session session = factory.getCurrentSession();
        session.beginTransaction();

        LoadCurrentClimateVulnerabilityDataSource(session);

        session.getTransaction().commit();
    }

    /**
     * Loads the Vulnerability Assessment Data Source in the database
     * @param session: the Hibernate Session object which takes care of persisting objects in the database
     */
    public static void LoadCurrentClimateVulnerabilityDataSource(Session session) {
        // Display Types offered by this data source
        DisplayType tableDisplayType = (DisplayType) (session.get(DisplayType.class, 3)); // Table

        List<DisplayType> displayTypesCurrentClimateRisk = new ArrayList<DisplayType>();
        displayTypesCurrentClimateRisk.add(tableDisplayType);

        // Data Source
        CurrentClimateVulnerabilityDataSource dsCurrentClimateRisk = new CurrentClimateVulnerabilityDataSource(
                "currentClimateVulnerability", "Current Climate Vulnerability Assessment",
                "<p><i>Click <a href=\"/resources/docs/matrix-current-climate-vulnerability.pdf\" target=\"_blank\">here</a> to download a document to help you to prepare this assessment.</i></p><p><i>Select an event type and assess the vulnerability of the Seaport in the different domains listed below.</i></p><p>Rate the effect that the impact will have on the port:<br /> 1 - Not vulnerable: No impact or slight reduction in efficiency / no real cost<br />2 - Could be Vulnerable: Interruption measured in hours, slight delays / small cost<br />3 - Somewhat Vulnerable: Interruption measured in days / some costs<br />4 - Moderately Vulnerable: Operations halted for weeks / significant costs<br />5 - Significantly Vulnerable: Operations suspended indefinitely / major costs</p>",
                null, null, displayTypesCurrentClimateRisk);

        // Parameters Weather Event Type
        DataSourceParameter weatherEventTypeParam = new DataSourceParameter("Event Type",
                "Disruptive climate-related events are those that caused a significant alteration to the &quot;the normal&quot; functioning of the port, whether this was for a few hours,  a few weeks, or longer.",
                dsCurrentClimateRisk, null, DataSourceParameter.Display.DROPDOWN);
        session.save(weatherEventTypeParam);
        DataSourceParameterOption weatherEventTypeSeaCurrent = new DataSourceParameterOption("Sea current",
                "Sea current", weatherEventTypeParam, 1);
        session.save(weatherEventTypeSeaCurrent);
        DataSourceParameterOption weatherEventTypeWaveClimate = new DataSourceParameterOption("Wave climate",
                "Wave climate", weatherEventTypeParam, 2);
        session.save(weatherEventTypeWaveClimate);
        DataSourceParameterOption weatherEventTypeSeaTemp = new DataSourceParameterOption("Sea Surface Temperature",
                "Sea Surface Temperature", weatherEventTypeParam, 3);
        session.save(weatherEventTypeSeaTemp);
        DataSourceParameterOption weatherEventTypeSeaAcidity = new DataSourceParameterOption("Sea acidity",
                "Sea acidity", weatherEventTypeParam, 4);
        session.save(weatherEventTypeSeaAcidity);
        DataSourceParameterOption weatherEventTypeStormSurge = new DataSourceParameterOption("Storm surge",
                "Storm surge", weatherEventTypeParam, 5);
        session.save(weatherEventTypeStormSurge);
        DataSourceParameterOption weatherEventTypeCyclone = new DataSourceParameterOption("Cyclone", "Cyclone",
                weatherEventTypeParam, 6);
        session.save(weatherEventTypeCyclone);
        DataSourceParameterOption weatherEventTypeRainfall = new DataSourceParameterOption("Intense rainfall",
                "Intense rainfall", weatherEventTypeParam, 7);
        session.save(weatherEventTypeRainfall);
        DataSourceParameterOption weatherEventTypeWind = new DataSourceParameterOption("Wind speed/direction",
                "Wind speed/direction", weatherEventTypeParam, 8);
        session.save(weatherEventTypeWind);
        DataSourceParameterOption weatherEventTypeHeatwave = new DataSourceParameterOption("Heat wave", "Heat wave",
                weatherEventTypeParam, 9);
        session.save(weatherEventTypeHeatwave);
        DataSourceParameterOption weatherEventTypeDrought = new DataSourceParameterOption("Drought", "Drought",
                weatherEventTypeParam, 10);
        session.save(weatherEventTypeDrought);

        // Rating of the consequence of risk
        DataSourceParameter consequence1 = new DataSourceParameter("Marine Infrastructure",
                "<p>Dredged  channels, navigation aids, entrance to harbour.</p>", dsCurrentClimateRisk, null,
                DataSourceParameter.Display.RADIO);
        session.save(consequence1);
        session.save(new DataSourceParameterOption("Not vulnerable", "1", consequence1, 1));
        session.save(new DataSourceParameterOption("Could be vulnerable", "2", consequence1, 2));
        session.save(new DataSourceParameterOption("Somewhat vulnerable", "3", consequence1, 3));
        session.save(new DataSourceParameterOption("Moderately vulnerable", "4", consequence1, 4));
        session.save(new DataSourceParameterOption("Significantly vulnerable", "5", consequence1, 5));

        DataSourceParameter consequence2 = new DataSourceParameter("Port Infrastructure",
                "<p>Seawalls, revetments, berths, piers.</p>", dsCurrentClimateRisk, null,
                DataSourceParameter.Display.RADIO);
        session.save(consequence2);
        session.save(new DataSourceParameterOption("Not vulnerable", "1", consequence2, 1));
        session.save(new DataSourceParameterOption("Could be vulnerable", "2", consequence2, 2));
        session.save(new DataSourceParameterOption("Somewhat vulnerable", "3", consequence2, 3));
        session.save(new DataSourceParameterOption("Moderately vulnerable", "4", consequence2, 4));
        session.save(new DataSourceParameterOption("Significantly vulnerable", "5", consequence2, 5));

        DataSourceParameter consequence3 = new DataSourceParameter("Port Superstructure",
                "<p>Paving, drainage systems, warehouses, silos, buildings.</p>", dsCurrentClimateRisk, null,
                DataSourceParameter.Display.RADIO);
        session.save(consequence3);
        session.save(new DataSourceParameterOption("Not vulnerable", "1", consequence3, 1));
        session.save(new DataSourceParameterOption("Could be vulnerable", "2", consequence3, 2));
        session.save(new DataSourceParameterOption("Somewhat vulnerable", "3", consequence3, 3));
        session.save(new DataSourceParameterOption("Moderately vulnerable", "4", consequence3, 4));
        session.save(new DataSourceParameterOption("Significantly vulnerable", "5", consequence3, 5));

        DataSourceParameter consequence4 = new DataSourceParameter("Operations",
                "<p>Moving goods/bulk commodities to and from boats and across the port; equipment.</p>",
                dsCurrentClimateRisk, null, DataSourceParameter.Display.RADIO);
        session.save(consequence4);
        session.save(new DataSourceParameterOption("Not vulnerable", "1", consequence4, 1));
        session.save(new DataSourceParameterOption("Could be vulnerable", "2", consequence4, 2));
        session.save(new DataSourceParameterOption("Somewhat vulnerable", "3", consequence4, 3));
        session.save(new DataSourceParameterOption("Moderately vulnerable", "4", consequence4, 4));
        session.save(new DataSourceParameterOption("Significantly vulnerable", "5", consequence4, 5));

        DataSourceParameter consequence5 = new DataSourceParameter("Supply Chain",
                "<p>Connecting road, rail, inland waterways.</p>", dsCurrentClimateRisk, null,
                DataSourceParameter.Display.RADIO);
        session.save(consequence5);
        session.save(new DataSourceParameterOption("Not vulnerable", "1", consequence5, 1));
        session.save(new DataSourceParameterOption("Could be vulnerable", "2", consequence5, 2));
        session.save(new DataSourceParameterOption("Somewhat vulnerable", "3", consequence5, 3));
        session.save(new DataSourceParameterOption("Moderately vulnerable", "4", consequence5, 4));
        session.save(new DataSourceParameterOption("Significantly vulnerable", "5", consequence5, 5));

        DataSourceParameter consequence6 = new DataSourceParameter("Workforce",
                "<p>Staff/contractors  working in all areas of the port;  travelling to and from work.</p>",
                dsCurrentClimateRisk, null, DataSourceParameter.Display.RADIO);
        session.save(consequence6);
        session.save(new DataSourceParameterOption("Not vulnerable", "1", consequence6, 1));
        session.save(new DataSourceParameterOption("Could be vulnerable", "2", consequence6, 2));
        session.save(new DataSourceParameterOption("Somewhat vulnerable", "3", consequence6, 3));
        session.save(new DataSourceParameterOption("Moderately vulnerable", "4", consequence6, 4));
        session.save(new DataSourceParameterOption("Significantly vulnerable", "5", consequence6, 5));

        DataSourceParameter consequence7 = new DataSourceParameter("Financial",
                "<p>Loss of income, increase in costs.</p>", dsCurrentClimateRisk, null,
                DataSourceParameter.Display.RADIO);
        session.save(consequence7);
        session.save(new DataSourceParameterOption("Not vulnerable", "1", consequence7, 1));
        session.save(new DataSourceParameterOption("Could be vulnerable", "2", consequence7, 2));
        session.save(new DataSourceParameterOption("Somewhat vulnerable", "3", consequence7, 3));
        session.save(new DataSourceParameterOption("Moderately vulnerable", "4", consequence7, 4));
        session.save(new DataSourceParameterOption("Significantly vulnerable", "5", consequence7, 5));

        DataSourceParameter consequence8 = new DataSourceParameter("Legal/Regulations",
                "<p>Cost of compliance, cost of non-compliance.</p>", dsCurrentClimateRisk, null,
                DataSourceParameter.Display.RADIO);
        session.save(consequence8);
        session.save(new DataSourceParameterOption("Not vulnerable", "1", consequence8, 1));
        session.save(new DataSourceParameterOption("Could be vulnerable", "2", consequence8, 2));
        session.save(new DataSourceParameterOption("Somewhat vulnerable", "3", consequence8, 3));
        session.save(new DataSourceParameterOption("Moderately vulnerable", "4", consequence8, 4));
        session.save(new DataSourceParameterOption("Significantly vulnerable", "5", consequence8, 5));

        DataSourceParameter consequence9 = new DataSourceParameter("Environment",
                "<p>Natural environment impacted by port operations as a result of the climate related event. i.e.: excessive dust due to dry, windy conditions; contaminated water/chemical spill due to flooding.</p>",
                dsCurrentClimateRisk, null, DataSourceParameter.Display.RADIO);
        session.save(consequence9);
        session.save(new DataSourceParameterOption("Not vulnerable", "1", consequence9, 1));
        session.save(new DataSourceParameterOption("Could be vulnerable", "2", consequence9, 2));
        session.save(new DataSourceParameterOption("Somewhat vulnerable", "3", consequence9, 3));
        session.save(new DataSourceParameterOption("Moderately vulnerable", "4", consequence9, 4));
        session.save(new DataSourceParameterOption("Significantly vulnerable", "5", consequence9, 5));

        DataSourceParameter consequence10 = new DataSourceParameter("Stakeholders",
                "<p>Partners, leaseholders or community.</p>", dsCurrentClimateRisk, null,
                DataSourceParameter.Display.RADIO);
        session.save(consequence10);
        session.save(new DataSourceParameterOption("Not vulnerable", "1", consequence10, 1));
        session.save(new DataSourceParameterOption("Could be vulnerable", "2", consequence10, 2));
        session.save(new DataSourceParameterOption("Somewhat vulnerable", "3", consequence10, 3));
        session.save(new DataSourceParameterOption("Moderately vulnerable", "4", consequence10, 4));
        session.save(new DataSourceParameterOption("Significantly vulnerable", "5", consequence10, 5));

        DataSourceParameter consequence11 = new DataSourceParameter("Reputation",
                "<p>Good name or loss of good name of the business.</p>", dsCurrentClimateRisk, null,
                DataSourceParameter.Display.RADIO);
        session.save(consequence11);
        session.save(new DataSourceParameterOption("Not vulnerable", "1", consequence11, 1));
        session.save(new DataSourceParameterOption("Could be vulnerable", "2", consequence11, 2));
        session.save(new DataSourceParameterOption("Somewhat vulnerable", "3", consequence11, 3));
        session.save(new DataSourceParameterOption("Moderately vulnerable", "4", consequence11, 4));
        session.save(new DataSourceParameterOption("Significantly vulnerable", "5", consequence11, 5));

        // Availability of the data source for each seaport
        List<Seaport> seaports = new ArrayList<Seaport>();

        seaports.add((Seaport) (session.get(Seaport.class, "FJSUV")));
        seaports.add((Seaport) (session.get(Seaport.class, "FJLTK")));
        seaports.add((Seaport) (session.get(Seaport.class, "FJMAL")));
        seaports.add((Seaport) (session.get(Seaport.class, "FJLEV")));
        seaports.add((Seaport) (session.get(Seaport.class, "FJWAI")));

        seaports.add((Seaport) (session.get(Seaport.class, "PGGUR")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGATP")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGBUA")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGDAU")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGKVG")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGKIE")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGKIM")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGLAE")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGLOR")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGMAG")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGROR")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGPOM")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGRAB")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGVAI")));
        seaports.add((Seaport) (session.get(Seaport.class, "PGWWK")));

        dsCurrentClimateRisk.setSeaports(seaports);

        // Availability of data sources for each element category
        List<ElementCategory> categories = new ArrayList<ElementCategory>();
        categories.add((ElementCategory) (session.get(ElementCategory.class, 1))); // Category 1 = Observed climate & marine
        categories.add((ElementCategory) (session.get(ElementCategory.class, 4))); // Category 4 = Applications
        dsCurrentClimateRisk.setCategories(categories);

        session.save(dsCurrentClimateRisk);
    }
}