Please take time to read the code disclaimer.
/**
* 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;
}
}