/* -- This is a helper methid to run the morph files */ private static void runMorphDataSet() throws Exception { String morph_directory = "../../thesis-datasets/morph/"; // directory where all the morph code is stored File d = new File(morph_directory); // get all the files from a directory File[] fList = d.listFiles(); List<String> dir_list = new ArrayList<String>(); for (File file : fList) { if (file.isDirectory()) { dir_list.add(file.getName()); } } for (String dir : dir_list) { directory = morph_directory + dir + "/"; System.out.println("Running TDDD " + directory); ReadFile.readFile(directory, fileList); // read the two files System.out.println(fileList.get(0) + " " + fileList.get(1)); preliminaryStep(directory); startCDC(); fileList.clear(); fileArray.clear(); hashed_File_List.clear(); } }
/* - This method is used has a helper method to run the algo for the archive dataset - Note the archive set has multiple directories ( one for each url ) - So Read all of the directories in first and for each directory run the code */ private static void runArchiveSet() throws Exception { System.out.println("Running TDDD archive"); directory = "../../thesis-datasets/datasets2/"; File file = new File(directory); String[] directory_list = file.list( new FilenameFilter() { @Override public boolean accept(File current, String name) { return new File(current, name).isDirectory(); // make sure its a directory } }); int totalRuns = 0; // used to avg the runs in the end int total_iter_count = 0; // this is used check how many times we will iterate through the data so we can make an // array of that size for (int i = startBoundary; i <= endBoundary; i += increment) total_iter_count++; // System.out.println(Arrays.toString(directory_list)); int sets = 0; // make the arrays to hold the respecitve info for the different verions\ // run it simulateounsly to speed the from the program! double[] block_size_list_last_year = new double[total_iter_count]; double[] ratio_size_list_last_year = new double[total_iter_count]; double[] block_size_list_six_month = new double[total_iter_count]; double[] ratio_size_list__six_month = new double[total_iter_count]; double[] block_size_list_two_year = new double[total_iter_count]; double[] ratio_size_list_two_year = new double[total_iter_count]; int current = 0; int six_month = 2; int last_year = 1; int two_year = 3; // loop through and run the cdc for each directory for (String dir : directory_list) { ReadFile.readFile(directory + dir, fileList); // read all the files in this directory preliminaryStep(directory + dir + "/"); // call the preliminaryStep on all the files totalRuns++; totalSize = fileArray.get(current) .length; // get the length of the file we will be running it against! // run it against six month startCDC( block_size_list_six_month, ratio_size_list__six_month, fileArray.get(current), fileArray.get(six_month), hashed_File_List.get(current), hashed_File_List.get(six_month)); // run it against last year startCDC( block_size_list_last_year, ratio_size_list_last_year, fileArray.get(current), fileArray.get(last_year), hashed_File_List.get(current), hashed_File_List.get(last_year)); // run it against 2 startCDC( block_size_list_two_year, ratio_size_list_two_year, fileArray.get(current), fileArray.get(two_year), hashed_File_List.get(current), hashed_File_List.get(two_year)); // // clear the fileList and hashed_file_list array fileArray.clear(); hashed_File_List.clear(); fileList.clear(); // if (Double.isNaN(ratio_size_list[0])){ // System.out.println(sets+" "+Arrays.toString(ratio_size_list)); // test = true; // break; // } if (sets % 200 == 0) System.out.println(sets); ++sets; } // end of directory list for loop // now output the avged value for all the runs // System.out.println(Arrays.toString(ratio_size_list)); System.out.println("Printing six_month"); int index = 0; for (int i = startBoundary; i <= endBoundary; i += increment) { // avg out the outputs double blockSize = block_size_list_six_month[index] / (double) totalRuns; double ratio = ratio_size_list__six_month[index] / (double) totalRuns; System.out.println(i + " " + i / 2 + 1 + " " + i / 4 + 1 + " " + blockSize + " " + ratio); index++; } System.out.println("Printing last year"); index = 0; for (int i = startBoundary; i <= endBoundary; i += increment) { double blockSize = block_size_list_last_year[index] / (double) totalRuns; double ratio = ratio_size_list_last_year[index] / (double) totalRuns; System.out.println(i + " " + blockSize + " " + ratio); index++; } System.out.println("Printing two year"); index = 0; for (int i = startBoundary; i <= endBoundary; i += increment) { double blockSize = block_size_list_two_year[index] / (double) totalRuns; double ratio = ratio_size_list_two_year[index] / (double) totalRuns; System.out.println(i + " " + blockSize + " " + ratio); index++; } }
/** * Parses the files passed into the <CODE>setTemplateFiles</CODE> method. The data extracted from * the template files is returned. */ public void parse() { setMessage("Parsing Files"); templates.clear(); importedFieldCount = 0; importedMacroCount = 0; File[] templateFiles = getTemplateFiles(); resetParseCanceled(); int totalFileSize = 0; for (int i = 0; i < templateFiles.length; i++) if (templateFiles[i].exists()) totalFileSize += (int) templateFiles[i].length(); setProgressMaximum(totalFileSize); int progress = 0; setProgressValue(0); setProgressIndeterminate(false); for (int i = 0; i < templateFiles.length; i++) { String currentFilePath = templateFiles[i].getAbsolutePath(); Timestamp modifiedDate = new Timestamp(templateFiles[i].lastModified()); Template currentTemplate = new Template(currentFilePath, modifiedDate); String[] nameParts = templateFiles[i].getName().split("\\."); if (nameParts != null && nameParts.length > 0) currentTemplate.setID(nameParts[0]); templates.add(currentTemplate); try { BufferedReader iStream = new BufferedReader(new FileReader(templateFiles[i])); try { String currentLine = iStream.readLine(); Signal currentSignal = null, archiveTag = null; ArchiveRequest request = null; ArchiveGroup group = null; HashMap archiveSignals = new HashMap(); int lineNumber = 0; int braceCount = 0; while (currentLine != null) // null indicates EOF { lineNumber++; if (currentLine.trim().startsWith("#")) // Comments start with # { // Comments start with #. Archive information is embedded in comments. ArchiveGroup newGroup = parseArchiveGroupTag(currentLine, currentTemplate); if (newGroup != null) group = newGroup; else { ArchiveRequest newRequest = parseArchiveRequestTag(currentLine, group, currentTemplate); if (newRequest != null) request = newRequest; else { Signal newArchiveTag = parseArchiveTag(currentLine); if (newArchiveTag != null) { if (archiveTag != null) // Tag was not used in request. Use for defaults. archiveSignals.put(archiveTag.getID(), archiveTag); archiveTag = newArchiveTag; } } } } else { Matcher macroMatcher = macroPattern.matcher(currentLine); if (macroMatcher.find()) { String macro = macroMatcher.group(1); if (!currentTemplate.containsMacro(macro)) { importedMacroCount++; currentTemplate.addMacro(macro); } } int linePosition = 0; int lineLength = currentLine.length(); while (linePosition < lineLength) { int openBracePosition = currentLine.indexOf('{', linePosition); int closeBracePosition = currentLine.indexOf('}', linePosition); if (currentSignal == null || braceCount == 0) { // Got no signal or the brace was never opened... Matcher recordMatcher = recordPattern.matcher(currentLine); if (recordMatcher.find(linePosition)) if (openBracePosition < 0 || recordMatcher.start() < openBracePosition) { linePosition = recordMatcher.end(); SignalType currentSignalType = new SignalType(); String recordType = recordMatcher.group(1); currentSignalType.setRecordType(new EpicsRecordType(recordType)); String signalID = recordMatcher.group(2); currentSignal = new Signal(signalID); currentSignal.setType(currentSignalType); if (archiveTag != null) archiveSignals.put(archiveTag.getID(), archiveTag); // Use as defaults. archiveTag = (Signal) archiveSignals.get(signalID); if (archiveTag != null) { currentSignal.setArchiveIndicator("Y"); currentSignal.setArchiveType(archiveTag.getArchiveType()); currentSignal.setArchiveFrequency(archiveTag.getArchiveFrequency()); // Must use a new instance of signal since each request has different // values for type, frequency, etc. if (request != null && request.getSignal(signalID) == null) request.addSignal(new Signal(signalID)); currentSignal.setArchiveIndicator("Y"); currentSignal.setArchiveType(archiveTag.getArchiveType()); currentSignal.setArchiveFrequency(archiveTag.getArchiveFrequency()); } currentTemplate.addSignal(currentSignal); archiveTag = null; // Reset so is not used twice. continue; // Go back and check the line position against length. } } if (braceCount == 0 && currentSignal != null && openBracePosition >= linePosition) { // Got the signal, need the open brace. linePosition = openBracePosition + 1; braceCount++; continue; // Go back and check the line position against length. } if (braceCount > 0) { // Looking for fields or the close brace. Matcher fieldMatcher = fieldPattern.matcher(currentLine); if (fieldMatcher.find(linePosition)) if (closeBracePosition < 0 || fieldMatcher.start() < closeBracePosition) { // Found a field... linePosition = fieldMatcher.end(); SignalField currentField = new SignalField(); String currentFieldID = fieldMatcher.group(1); currentField.setType(new SignalFieldType(currentFieldID)); currentField.setValue(fieldMatcher.group(2)); currentSignal.addField(currentField); importedFieldCount++; continue; } if (closeBracePosition >= 0) { // Found end of current signal. braceCount--; linePosition = closeBracePosition + 1; currentSignal = null; continue; } } linePosition = lineLength; if (isParseCanceled()) break; } } progress += currentLine.length() + 1; setProgressValue(progress); currentLine = iStream.readLine(); if (isParseCanceled()) break; } } finally { iStream.close(); } } catch (java.io.FileNotFoundException ex) { StringBuffer errorMessage = new StringBuffer("<HTML><FONT COLOR=RED>Unable to open file '"); errorMessage.append(templateFiles[i].getAbsoluteFile()); errorMessage.append("'.</FONT></HTML>"); addMessage(errorMessage.toString()); } catch (java.io.IOException ex) { ex.printStackTrace(); StringBuffer errorMessage = new StringBuffer("<HTML><FONT COLOR=RED>IO Error: "); errorMessage.append(ex.getMessage()); errorMessage.append("</FONT></HTML>"); addMessage(errorMessage.toString()); } if (isParseCanceled()) break; } }