Please take time to read the code disclaimer.

<--Go back to Kent's Projects

<--Go back to project post

/**
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package metadatagenerator;

import broadscope.StaticClass;
import java.io.*;
import java.util.*;
import java.util.logging.*;
import java.util.regex.*;
import metagui.DescriptionFrame;

/**
 *
 * @author Video
 */
public class ConferenceMDGenerator implements Runnable {

  private DescriptionFrame frameOwner;
  private String metadataDir;
  private int selectedSessions = 0;
  private boolean stop = false;
  private LinkedList allConferencesList = new LinkedList();
  private LinkedList allSessionTypesList = new LinkedList();
  private LinkedList allLanguageTypesList = new LinkedList();
  private LinkedList needToTranslateList = new LinkedList();

  /**
   * Constructor
   * @param frameOwner 
   */
  public ConferenceMDGenerator(DescriptionFrame frameOwner) {
    this.frameOwner = frameOwner;
  }

  //
  /**
   * This method will get all the conferences available for the given url
   * @param urlString to get available conferences
   */
  public void getAvailableConferences(String urlString) {
    System.out.println("CSB - Getting Available Conferences");
    String conferenceListBeginString = "
"; Pattern conferenceListBeginPattern = Pattern.compile(conferenceListBeginString, Pattern.DOTALL); String line = ""; try { BufferedReader reader = StaticClass.getBufferedReader(urlString); while ((line = reader.readLine()) != null) { Matcher conferenceListBeginMatcher = conferenceListBeginPattern.matcher(line); if (conferenceListBeginMatcher.find()) { String conferenceYearString = "
  • (\\d\\d\\d\\d)"; //group 1 = year Pattern conferenceYearPattern = Pattern.compile(conferenceYearString, Pattern.DOTALL); String conferenceEndString = ""; Pattern conferenceEndPattern = Pattern.compile(conferenceEndString, Pattern.DOTALL); line = reader.readLine(); while (!conferenceEndPattern.matcher(line).find()) { boolean readNewLine = true; StringBuilder yearStringBuilder = new StringBuilder(); Matcher conferenceYearMatcher = conferenceYearPattern.matcher(line); if (conferenceYearMatcher.find()) { String year = conferenceYearMatcher.group(1); line = reader.readLine(); while (!conferenceYearPattern.matcher(line).find() && !conferenceEndPattern.matcher(line).find()) { yearStringBuilder.append(line); line = reader.readLine(); } regexConferences(yearStringBuilder.toString(), year); readNewLine = false; } if (readNewLine) { line = reader.readLine(); } } } } } catch (IOException ex) { System.out.println("Problem reading the URL file"); Logger.getLogger(ConferenceMDGenerator.class.getName()).log(Level.SEVERE, null, ex); } } /** * This method will create the conferences in the given string (consisting of two per year) * @param yearString is the string to be regexed * @param year the year being regexed (for naming purposes) */ public void regexConferences(String yearString, String year) { System.out.println("CSB - Regexing Conferences"); String conferenceString = "
  • (\\w+?)
  • "; //group 1 = conference url, group 2 = conference month Pattern conferencePattern = Pattern.compile(conferenceString, Pattern.DOTALL); Matcher conferenceMatcher = conferencePattern.matcher(yearString); while (conferenceMatcher.find()) { Conference newConference = new Conference(this); newConference.setName(conferenceMatcher.group(2) + " " + year); newConference.setLandingPage(conferenceMatcher.group(1)); getAllConferencesList().add(newConference); } } // /** * This method will read all the talks */ @Override public void run() { int completedSessions = 0; File outputFolder; if (!stop) { for (Conference conference : allConferencesList) { if (conference.isSelected()) { for (Session session : conference.getSessionsList()) { if (session.getOwner().isSelected()) { selectedSessions++; } } } } frameOwner.getProgressBar().setMaximum(selectedSessions * 100); if (!stop) { outputFolder = new File(frameOwner.getOutputDestination() + "\\MetaDataDocuments"); if (!outputFolder.exists()) { outputFolder.mkdirs(); } if (!stop) { frameOwner.addProgressText("Scanning Conferences"); for (Conference conference : allConferencesList) { if (conference.isSelected() && !stop) { File conferenceFolder = new File(outputFolder.getPath() + "\\" + conference.getName()); frameOwner.addProgressText(" Conference: " + conference.getName()); for (Session session : conference.getSessionsList()) { if (session.getOwner().isSelected() && !stop) { frameOwner.addProgressText(" Session: " + session.getOwner().getName()); for (Talk talk : session.getTalksList()) { if (!stop) { frameOwner.addProgressText(" Reading Talk: " + talk.getEnglishTitle()); talk.readTalk(); } else { break; } } session.createDocuments(conferenceFolder.getPath()); if (!stop) { completedSessions++; frameOwner.getProgressBar().setValue(completedSessions * 100); } } if (stop) { break; } } if (stop) { break; } } if (stop) { break; } } //This creates the need to translate doc if (!stop) { PrintWriter pw = null; try { pw = new PrintWriter(outputFolder + "\\Documents Needing Translation.txt"); int i = 1; for (TalkContent talkContent : needToTranslateList) { pw.println(i + " " + talkContent.getOwner().getSession().getConference().getName() + " - " + talkContent.getOwner().getSession().getOwner().getName() + " - " + talkContent.getSpeaker() + " - " + talkContent.getTitle()); pw.println("\tLocation: " + talkContent.getFilepath() + StaticClass.newline); i++; } } catch (FileNotFoundException ex) { Logger.getLogger(ConferenceMDGenerator.class.getName()).log(Level.SEVERE, null, ex); } finally { pw.close(); } frameOwner.addProgressText("---Finished!---"); try { new ProcessBuilder("explorer.exe", outputFolder.getPath()).start(); } catch (IOException ex) { Logger.getLogger(DescriptionFrame.class.getName()).log(Level.SEVERE, null, ex); } } } } } System.out.println("Done with the method"); } // /** * @return the frameOwner */ public DescriptionFrame getFrameOwner() { return frameOwner; } /** * @param frameOwner the frameOwner to set */ public void setFrameOwner(DescriptionFrame frameOwner) { this.frameOwner = frameOwner; } /** * @return the metadataDir */ public String getMetadataDir() { return metadataDir; } /** * @param metadataDir the metadataDir to set */ public void setMetadataDir(String metadataDir) { this.metadataDir = metadataDir; } /** * @return the allConferencesList */ public LinkedList getAllConferencesList() { return allConferencesList; } /** * @param allConferencesList the allConferencesList to set */ public void setAllConferencesList(LinkedList allConferencesList) { this.allConferencesList = allConferencesList; } /** * @return the allSessionTypesList */ public LinkedList getAllSessionTypesList() { return allSessionTypesList; } /** * @param allSessionTypesList the allSessionTypesList to set */ public void setAllSessionTypesList(LinkedList allSessionTypesList) { this.allSessionTypesList = allSessionTypesList; } /** * @return the allLanguageTypesList */ public LinkedList getAllLanguageTypesList() { return allLanguageTypesList; } /** * @param allLanguageTypesList the allLanguageTypesList to set */ public void setAllLanguageTypesList(LinkedList allLanguageTypesList) { this.allLanguageTypesList = allLanguageTypesList; } /** * @return the needToTranslateList */ public LinkedList getNeedToTranslateList() { return needToTranslateList; } /** * @param needToTranslateList the needToTranslateList to set */ public void setNeedToTranslateList(LinkedList needToTranslateList) { this.needToTranslateList = needToTranslateList; } // /** * @return the selectedSessions */ public int getSelectedSessions() { return selectedSessions; } /** * @param selectedSessions the selectedSessions to set */ public void setSelectedSessions(int selectedSessions) { this.selectedSessions = selectedSessions; } /** * @return the stop */ public boolean isStop() { return stop; } /** * @param stop the stop to set */ public void setStop(boolean stop) { this.stop = stop; } }