/** * Written by: * Jun Peng (junpeng@stanford.edu) * Kincho Law (law@stanford.edu) * ---------------------------------- * ReportGenDB defines the functions for mapping data into related groups. * Data are saved in MySQL database. */ import java.sql.*; import java.io.*; import java.util.*; public class DBMapping { private DBAccess dbAccess = new DBAccess(); public DBAccess getDBAccess() { return dbAccess; } /** * Display the URI of a particular file. */ public void retrieveFiles(String table, String theColumn, long theValue, PrintWriter out) { Vector fileIDs = dbAccess.getCurKeys(table, theColumn, theValue, "fileID"); for (int i = 0; i < fileIDs.size(); i++) { long oneFile = ((Long)(fileIDs.elementAt(i))).longValue(); dbAccess.getTuplesByKey("File", "fileID", oneFile, out); String fileURI = dbAccess.getFileURI(oneFile); out.println("" + fileURI + "
"); } } public void getSummary(String projectTitle, PrintWriter out) { out.println("The following data are related to Summary:
"); dbAccess.getTuplesByString("Project", "title", projectTitle, out); } public void getScope(String projectTitle, PrintWriter out) { out.println("The following data and files are related to " + "Scope and general presentation:
"); long projectID = dbAccess.getPrimaryKey("Project", "title", projectTitle, "projectID"); retrieveFiles("ActivityFile", "projectID", projectID, out); } public void getSetupOverview(String project, PrintWriter out) { out.println("The following data are related to Test setup overview:
"); long projectID = dbAccess.getPrimaryKey("Project", "title", project, "projectID"); Vector taskIDs = dbAccess.getCurKeys("Task", "projectID", projectID, "taskID"); for (int i = 0; i < taskIDs.size(); i++) { long oneTask = ((Long)(taskIDs.elementAt(i))).longValue(); Vector infraSetupIDs = dbAccess.getCurKeys("InfrastructureSetup", "taskID", oneTask, "infrastructureSetupID"); for (int k = 0; k < infraSetupIDs.size(); k++) { long oneInfraSetup = ((Long)(infraSetupIDs.elementAt(k))).longValue(); dbAccess.getTuplesByKey("InfrastructureSetup", "InfrastructureSetupID", oneInfraSetup, out); } } } public void getInfrastructure(String project, PrintWriter out) { out.println("The following files are related to Infrastructure Setup:
"); long projectID = dbAccess.getPrimaryKey("Project", "title", project, "projectID"); Vector taskIDs = dbAccess.getCurKeys("Task", "projectID", projectID, "taskID"); for (int i = 0; i < taskIDs.size(); i++) { long oneTask = ((Long)(taskIDs.elementAt(i))).longValue(); Vector infraSetupIDs = dbAccess.getCurKeys("InfrastructureSetup", "taskID", oneTask, "infrastructureSetupID"); for (int k = 0; k < infraSetupIDs.size(); k++) { long oneInfraSetup = ((Long)(infraSetupIDs.elementAt(k))).longValue(); retrieveFiles("SetupFile", "infrastructureSetupID", oneInfraSetup, out); } } } public void getSpecimen(String project, PrintWriter out) { out.println("The following files are related to Specimen Setup:
"); long projectID = dbAccess.getPrimaryKey("Project", "title", project, "projectID"); Vector taskIDs = dbAccess.getCurKeys("Task", "projectID", projectID, "taskID"); for (int i = 0; i < taskIDs.size(); i++) { long oneTask = ((Long)(taskIDs.elementAt(i))).longValue(); Vector egIDs = dbAccess.getCurKeys("EventGroup", "taskID", oneTask, "eventGroupID"); for (int k = 0; k < egIDs.size(); k++) { long oneEG = ((Long)(egIDs.elementAt(k))).longValue(); Vector specimenSetupIDs = dbAccess.getCurKeys("SpecimenSetup", "eventGroupID", oneEG, "specimenSetupID"); for (int m = 0; m < specimenSetupIDs.size(); m++) { long oneSpecimen = ((Long)(specimenSetupIDs.elementAt(m))).longValue(); dbAccess.getTuplesByKey("SpecimenSetup", "specimenSetupID", oneSpecimen, out); out.println("
The related files are as follows: "); retrieveFiles("SetupFile", "specimenSetupID", oneSpecimen, out); } } } } public void getLoading(String project, PrintWriter out) { out.println("The following files are related to Loading and Earthquake Input:
"); long projectID = dbAccess.getPrimaryKey("Project", "title", project, "projectID"); Vector taskIDs = dbAccess.getCurKeys("Task", "projectID", projectID, "taskID"); for (int i = 0; i < taskIDs.size(); i++) { long oneTask = ((Long)(taskIDs.elementAt(i))).longValue(); Vector egIDs = dbAccess.getCurKeys("EventGroup", "taskID", oneTask, "eventGroupID"); for (int k = 0; k < egIDs.size(); k++) { long oneEG = ((Long)(egIDs.elementAt(k))).longValue(); Vector eventIDs = dbAccess.getCurKeys("Event", "eventGroupID", oneEG, "eventID"); for (int m = 0; m < eventIDs.size(); m++) { long eveID = ((Long)(eventIDs.elementAt(m))).longValue(); Vector waveSetupIDs = dbAccess.getCurKeys("WaveFormSetup", "eventID", eveID, "waveFormSetupID"); Vector waveIDs = dbAccess.getCurKeys("WaveFormSetup", "eventID", eveID, "waveFormID"); for (int aa = 0 ; aa < waveSetupIDs.size(); aa++) { long wSetupID = ((Long)(waveSetupIDs.elementAt(aa))).longValue(); long waveID = ((Long)(waveIDs.elementAt(aa))).longValue(); out.println("
The related WaveFormSetups are: "); dbAccess.getTuplesByKey("WaveFormSetup", "waveFormSetupID", wSetupID, out); out.println("
The related WaveForms are: "); dbAccess.getTuplesByKey("WaveForm", "waveFormID", waveID, out); out.println("
The related files are as follows: "); retrieveFiles("WaveForm", "waveFormID", waveID, out); } } } } } public void getInstrumentation(String project, PrintWriter out) { out.println("The following files are related to Instrumentation Setup:
"); long projectID = dbAccess.getPrimaryKey("Project", "title", project, "projectID"); Vector taskIDs = dbAccess.getCurKeys("Task", "projectID", projectID, "taskID"); for (int i = 0; i < taskIDs.size(); i++) { long oneTask = ((Long)(taskIDs.elementAt(i))).longValue(); Vector egIDs = dbAccess.getCurKeys("EventGroup", "taskID", oneTask, "eventGroupID"); for (int k = 0; k < egIDs.size(); k++) { long oneEG = ((Long)(egIDs.elementAt(k))).longValue(); Vector sensorSetupIDs = dbAccess.getCurKeys("SensorSetup", "eventGroupID", oneEG, "sensorSetupID"); for (int m = 0; m < sensorSetupIDs.size(); m++) { long oneSensorSetup = ((Long)(sensorSetupIDs.elementAt(m))).longValue(); dbAccess.getTuplesByKey("SensorSetup", "sensorSetupID", oneSensorSetup, out); out.println("
The related files are as follows: "); retrieveFiles("SetupFile", "sensorSetupID", oneSensorSetup, out); } } } } public void getSchedule(String project, PrintWriter out) { out.println("The following data are related to Project Schedule:
"); long projectID = dbAccess.getPrimaryKey("Project", "title", project, "projectID"); dbAccess.getDate("Project", "projectID", projectID, out, 1); Vector taskIDs = dbAccess.getCurKeys("Task", "projectID", projectID, "taskID"); for (int i = 0; i < taskIDs.size(); i++) { long oneTask = ((Long)(taskIDs.elementAt(i))).longValue(); dbAccess.getDate("Task", "taskID", oneTask, out, 1); Vector egIDs = dbAccess.getCurKeys("EventGroup", "taskID", oneTask, "eventGroupID"); for (int k = 0; k < egIDs.size(); k++) { long oneEG = ((Long)(egIDs.elementAt(k))).longValue(); dbAccess.getDate("EventGroup", "eventGroupID", oneEG, out, 2); Vector eventIDs = dbAccess.getCurKeys("Event", "eventGroupID", oneEG, "eventID"); for (int m = 0; m < eventIDs.size(); m++) { long eveID = ((Long)(eventIDs.elementAt(m))).longValue(); dbAccess.getDate("Event", "eventID", eveID, out, 2); } } } } public void getResults(String project, PrintWriter out) { getResultFiles(project, out, "experiment"); } /** * This method is yet to be implemented */ public void getDataProcessing(String project, PrintWriter out) { getResultFiles(project, out, "simulation"); } /** * This method is yet to be implemented */ public void getPredications(String project, PrintWriter out) { getResultFiles(project, out, "predication"); } public void getResultFiles(String project, PrintWriter out, String inputType) { out.println("The following files are related to " + inputType + ":
"); long projectID = dbAccess.getPrimaryKey("Project", "title", project, "projectID"); Vector taskIDs = dbAccess.getCurKeys("Task", "projectID", projectID, "taskID"); for (int i = 0; i < taskIDs.size(); i++) { long oneTask = ((Long)(taskIDs.elementAt(i))).longValue(); Vector egIDs = dbAccess.getCurKeys("EventGroup", "taskID", oneTask, "eventGroupID"); for (int k = 0; k < egIDs.size(); k++) { long oneEG = ((Long)(egIDs.elementAt(k))).longValue(); Vector eventIDs = dbAccess.getCurKeys("Event", "eventGroupID", oneEG, "eventID"); for (int m = 0; m < eventIDs.size(); m++) { long eveID = ((Long)(eventIDs.elementAt(m))).longValue(); Vector eventType = dbAccess.getCurValues("Event", "eventID", eveID, "type"); String theType = (String)eventType.elementAt(0); if (theType.equalsIgnoreCase(inputType)) { Vector readingIDs = dbAccess.getCurKeys("SensorReadings", "eventID", eveID, "sensorReadingID"); for (int aa = 0 ; aa < readingIDs.size(); aa++) { long resultID = ((Long)(readingIDs.elementAt(aa))).longValue(); dbAccess.getTuplesByKey("SensorReadings", "sensorReadingID", resultID, out); out.println("
The related files are as follows: "); retrieveFiles("SensorReadings", "sensorReadingID", resultID, out); } } } } } } }