Java tutorial
/** * 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 "the normal" 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); } }