diff --git a/.gradle/4.8/fileHashes/fileHashes.bin b/.gradle/4.8/fileHashes/fileHashes.bin
index e8a286e..f4bfa9e 100644
Binary files a/.gradle/4.8/fileHashes/fileHashes.bin and b/.gradle/4.8/fileHashes/fileHashes.bin differ
diff --git a/.gradle/4.8/fileHashes/fileHashes.lock b/.gradle/4.8/fileHashes/fileHashes.lock
index 69ce6a2..dd8f4c6 100644
Binary files a/.gradle/4.8/fileHashes/fileHashes.lock and b/.gradle/4.8/fileHashes/fileHashes.lock differ
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index ba1ec5c..267d99c 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -10,6 +10,7 @@
+
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 65e3662..c2b66ad 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,7 +1,17 @@
-
+
+
+
+
+
+
+
+
+
+
+
@@ -102,6 +112,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -109,13 +137,10 @@
-
+
-
-
-
-
-
+
+
@@ -123,17 +148,17 @@
-
+
-
+
-
-
+
+
@@ -141,7 +166,7 @@
-
+
@@ -149,7 +174,7 @@
-
+
@@ -158,8 +183,8 @@
-
-
+
+
@@ -170,8 +195,8 @@
-
-
+
+
@@ -182,8 +207,8 @@
-
-
+
+
@@ -215,7 +240,7 @@
-
-
-
-
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
@@ -606,61 +639,52 @@
-
-
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -682,8 +706,8 @@
-
-
+
+
@@ -711,9 +735,13 @@
1539109262430
+
+
+
+
@@ -724,16 +752,18 @@
-
+
-
+
+
+
@@ -743,9 +773,10 @@
-
+
+
@@ -787,6 +818,9 @@
+
+
+
@@ -870,21 +904,9 @@
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
+
@@ -894,72 +916,54 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
@@ -968,17 +972,14 @@
-
-
+
+
-
-
-
diff --git a/src/main/java/com/base64/d/AllStudyGuideLinks.java b/src/main/java/com/base64/d/AllStudyGuideLinks.java
index e9ede44..4107152 100644
--- a/src/main/java/com/base64/d/AllStudyGuideLinks.java
+++ b/src/main/java/com/base64/d/AllStudyGuideLinks.java
@@ -1,50 +1,34 @@
package com.base64.d;
-import java.util.*;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import java.util.Arrays;
+import java.util.List;
public class AllStudyGuideLinks {
- public static final String STUDY_GUIDE_PATH = "https://content.infinitecampus.com/sis/latest/study-guide/";
-
-
-
- public static final Set ALL_STUDY_GUIDES = Stream.of(
- "academic-planner-system-set-up",
- "academic-planner-use-and-management-",
- "ad-hoc-filters-letters-and-data-viewer",
- "ad-hoc-functions-and-logical-expressions",
- "attendance",
- "behavior-admin-set-up",
- "behavior-data-management-and-reporting",
- "behavior-messages-and-letters",
- "calendar-rights-user-groups",
- "campus-instruction-part-1-the-fundamentals",
- "campus-instruction-part-2-grade-book-basics",
- "campus-instruction-part-3-advanced-grade-book-and-posting-grades",
- "campus-instruction-part-4-campus-learning",
- "census---new-personfamily-set-up",
- "census---personhousehold-maintenance",
- "census-reports",
- "flags-and-programs",
- "grade-submission-process",
- "grading-setup",
- "health-module-system-setup",
- "health-module-view-and-manage-student-health-information",
- "messenger-setup-contacts-and-reports",
- "messenger-for-the-end-user",
- "schedule-wizard-mass-schedule-students",
- "tool-rights-user-groups",
- "user-account-creation-maintenance-and-reporting",
- "walk-in-scheduler-complete-or-change-a-students-schedule"
- //combining first and second part of the url.
- ).map(studyGuideName -> STUDY_GUIDE_PATH + studyGuideName)
- .collect(Collectors.toSet());
-
-
-
-
-
-
+ public static final List ALL_STUDY_GUIDES = Arrays.asList(
+ "https://content.infinitecampus.com/sis/latest/study-guide/academic-planner-system-set-up",
+ "https://content.infinitecampus.com/sis/latest/study-guide/academic-planner-use-and-management-",
+ "https://content.infinitecampus.com/sis/latest/study-guide/ad-hoc-filters-letters-and-data-viewer",
+ "https://content.infinitecampus.com/sis/latest/study-guide/ad-hoc-functions-and-logical-expressions",
+ "https://content.infinitecampus.com/sis/latest/study-guide/attendance",
+ "https://content.infinitecampus.com/sis/latest/study-guide/behavior-admin-set-up",
+ "https://content.infinitecampus.com/sis/latest/study-guide/behavior-data-management-and-reporting",
+ "https://content.infinitecampus.com/sis/latest/study-guide/behavior-messages-and-letters",
+ "https://content.infinitecampus.com/sis/latest/study-guide/calendar-rights-user-groups",
+ "https://content.infinitecampus.com/sis/latest/study-guide/campus-instruction-part-1-the-fundamentals",
+ "https://content.infinitecampus.com/sis/latest/study-guide/campus-instruction-part-2-grade-book-basics",
+ "https://content.infinitecampus.com/sis/latest/study-guide/campus-instruction-part-3-advanced-grade-book-and-posting-grades",
+ "https://content.infinitecampus.com/sis/latest/study-guide/campus-instruction-part-4-campus-learning",
+ "https://content.infinitecampus.com/sis/latest/study-guide/census---new-personfamily-set-up",
+ "https://content.infinitecampus.com/sis/latest/study-guide/census---personhousehold-maintenance",
+ "https://content.infinitecampus.com/sis/latest/study-guide/census-reports",
+ "https://content.infinitecampus.com/sis/latest/study-guide/flags-and-programs",
+ "https://content.infinitecampus.com/sis/latest/study-guide/grade-submission-process",
+ "https://content.infinitecampus.com/sis/latest/study-guide/grading-setup",
+ "https://content.infinitecampus.com/sis/latest/study-guide/health-module-system-setup",
+ "https://content.infinitecampus.com/sis/latest/study-guide/health-module-view-and-manage-student-health-information",
+ "https://content.infinitecampus.com/sis/latest/study-guide/messenger-for-the-end-user",
+ "https://content.infinitecampus.com/sis/latest/study-guide/tool-rights-user-groups",
+ "https://content.infinitecampus.com/sis/latest/study-guide/user-account-creation-maintenance-and-reporting",
+ "https://content.infinitecampus.com/sis/latest/study-guide/walk-in-scheduler-complete-or-change-a-students-schedule");
}
diff --git a/src/main/java/com/base64/d/Application.java b/src/main/java/com/base64/d/Application.java
new file mode 100644
index 0000000..222dfe1
--- /dev/null
+++ b/src/main/java/com/base64/d/Application.java
@@ -0,0 +1,9 @@
+package com.base64.d;
+
+public class Application {
+
+ public static void main(String[] args) {
+ StudyGuideChecker checker = new StudyGuideChecker();
+ checker.checkStudyGuides();
+ }
+}
diff --git a/src/main/java/com/base64/d/KnownFalsePositives.java b/src/main/java/com/base64/d/KnownFalsePositives.java
index 95deccd..d6e0a1e 100644
--- a/src/main/java/com/base64/d/KnownFalsePositives.java
+++ b/src/main/java/com/base64/d/KnownFalsePositives.java
@@ -2,37 +2,17 @@
import java.util.Arrays;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
public class KnownFalsePositives {
- public static final String BLACK_LIST_PATH = "https://content.infinitecampus.com/sis/latest/";
-
- public static final Set BLACK_LIST = Stream.of(
- "simulation/send-a-behavior-message-sc-01-28-01",
- "simulation/schedule-attendance-message-sc-01-24-02",
- "simulation/schedule-a-behavior-message-sc-01-27-02",
- "simulation/create-a-behavior-message-template-sc-01-27-01",
- "simulation/view-individual-student-attendance",
- "simulation/cancel-a-user-created-future-dated-message-sc-03-08-04"
- ).map(blackList -> BLACK_LIST_PATH + blackList)
- .collect(Collectors.toSet());
-
-
-
-
-// public KnownFalsePositives(Set knownFalsePositives) {
-// this.knownFalsePositives = knownFalsePositives;
-// }
-//
-// public Set getKnownFalsePositives() {
-// return knownFalsePositives;
-// }
-//
-// public void setKnownFalsePositives(Set knownFalsePositives) {
-// this.knownFalsePositives = knownFalsePositives;
-// }
+ public static final List WHITE_LIST = Arrays.asList(
+ "https://content.infinitecampus.com/sis/latest/simulation/send-a-behavior-message-sc-01-28-01",
+ "https://content.infinitecampus.com/sis/latest/simulation/schedule-attendance-message-sc-01-24-02",
+ "https://content.infinitecampus.com/sis/latest/simulation/schedule-a-behavior-message-sc-01-27-02",
+ "https://content.infinitecampus.com/sis/latest/simulation/create-a-behavior-message-template-sc-01-27-01",
+ "https://content.infinitecampus.com/sis/latest/simulation/view-individual-student-attendance",
+ "simulation/cancel-a-user-created-future-dated-message-sc-03-08-04");
}
diff --git a/src/main/java/com/base64/d/StudyGuideChecker.java b/src/main/java/com/base64/d/StudyGuideChecker.java
index 21424b6..c45a898 100644
--- a/src/main/java/com/base64/d/StudyGuideChecker.java
+++ b/src/main/java/com/base64/d/StudyGuideChecker.java
@@ -8,105 +8,97 @@
import java.io.IOException;
import java.util.Base64;
-import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StudyGuideChecker {
- int count = 0;
- public int totalLinksFound = 0;
- String url3 = "https://content.infinitecampus.com/sis/latest/study-guide/ad-hoc-filters-letters-and-data-viewer";
- String decodedText = "";
- String iframeSrc = "";
- String date = new Date().toString();
- String titleOfStudyGuide = "";
- Set studyGuideLinks = new HashSet<>();
- Set badLinks = new HashSet<>();
+ public void checkStudyGuides() {
+ int count = 0;
+ int totalLinksFound = 0;
- WriteToFile writeToFile = new WriteToFile();
+ String decodedText = "";
+ String iframeSrc = "";
+ String titleOfStudyGuide = null;
- public void checkStudyGuides() {
+ Set studyGuideLinks = new HashSet<>();
+ Set badLinks = new HashSet<>();
- for (String link2 : AllStudyGuideLinks.ALL_STUDY_GUIDES) {
+ WriteToFile writeToFile = new WriteToFile();
+
+ for (String studyGuideLink : AllStudyGuideLinks.ALL_STUDY_GUIDES) {
+ // Find all links within a Study Guide
try {
-//
-// Connect to the study guide url
- Document doc3 = Jsoup.connect(link2).get();
+ // Connect to the study guide url
+ Document wraperDocument = Jsoup.connect(studyGuideLink).get();
-// grab the iframe
- Element iframe = doc3.select("iframe").first();
+ // Grab the iframe
+ Element iframe = wraperDocument.select("iframe").first();
-// get iframe scr url
+ // Get iframe src url
iframeSrc = iframe.attr("src");
-// connect to the iframe source url
- Document doc = Jsoup.connect(iframeSrc).get();
+ // Connect to the iframe source url
+ Document studyGuideDocument = Jsoup.connect(iframeSrc).get();
- titleOfStudyGuide = doc3.title();
+ titleOfStudyGuide = wraperDocument.title();
System.out.println(titleOfStudyGuide + " " + iframeSrc);
-// get the script tag info
- Elements scriptTag = doc.getElementsByTag("script");
+ // Get the script tag info
+ Elements scriptTag = studyGuideDocument.getElementsByTag("script");
String jsScripts = scriptTag.toString();
-// match any string of characters over 100 in length.
- String patternString = "(\\w{100,}.+)";
-
- Pattern pattern = Pattern.compile(patternString);
+ // Retrieve the `window.courseData` JavaScript variable.
+ // This value will be enclosed in double quotes.
+ Pattern courseDataPattern = Pattern.compile("window.courseData = \"(.*)\"");
- Matcher matcher = pattern.matcher(jsScripts);
-// System.out.println(matcher);
- String foundBase64String = "";
- while (matcher.find()) {
+ Matcher courseDataMatcher = courseDataPattern.matcher(jsScripts);
+ String base64String = "";
+ while (courseDataMatcher.find()) {
System.out.println("--------");
- foundBase64String = matcher.group(1);
+ base64String = courseDataMatcher.group(1);
}
- //reduced the giant string by 2 because it included the " and the ;
- String trimFoundBase64String = foundBase64String.substring(0, (foundBase64String.length() - 2));
- //put in this try block because one study guide had different script tag layout and threw error.
+ // Put in this try block because one study guide had different script tag layout and threw error.
try {
- // decoding a base64 string and putting into a byte array
- byte[] decodedArr = Base64.getDecoder().decode(trimFoundBase64String);
+ // Decoding a base64 string and putting into a byte array
+ byte[] decodedArr = Base64.getDecoder().decode(base64String);
decodedText = new String(decodedArr, "UTF-8");
- //System.out.println("decoded base64: " + decodedText);
- } catch
- (IllegalArgumentException exc) {
+ } catch (IllegalArgumentException exc) {
exc.printStackTrace();
totalLinksFound -= studyGuideLinks.size();
System.out.println(titleOfStudyGuide + " not checked because of decoding error");
}
- // regex meaning - . means any character. + means 1 or more, * means 0 or more. ? means 0 or 1
- // everything in the () is pattern/matcher "group" syntax. then \" is looking for the next quote
- String patternString2 = "(https://content.infinitecampus.com/sis.*?)\"";
+ // Regex meanings:
+ // . => means any character
+ // + => means 1 or more
+ // * => means 0 or more
+ // ? => means 0 or 1
+ // Everything in the () is pattern/matcher "group" syntax, then \" is looking for the next quote
+ Pattern contentLinkPattern = Pattern.compile("(https://content.infinitecampus.com/sis.*?)\"");
- Pattern pattern2 = Pattern.compile(patternString2);
+ Matcher contentLinkMatcher = contentLinkPattern.matcher(decodedText);
-
- Matcher matcher2 = pattern2.matcher(decodedText);
- //System.out.println("This is the matcher " + matcher2);
-
-
- while (matcher2.find()) {
+ while (contentLinkMatcher.find()) {
count++;
- //some study guide links had '\' added for unknown reason. this code checks for it and removes it before adding it to the studyGuide.
-
- String shorterStudyGuideLink = matcher2.group(1).replaceAll("\\\\+$", "");
-// .substring(0, matcher2.group(1).length() - 1);
-// System.out.println(shorterStudyGuideLink);
-// links are good because regex replace all removes "\" if there.
- studyGuideLinks.add(shorterStudyGuideLink);
-
+ // Some study guide links had '\' added for unknown reason.
+ // This code checks for it and removes it before adding it to the studyGuide.
+ String shorterStudyGuideLink = contentLinkMatcher.group(1).substring(0, contentLinkMatcher.group(1).length() - 1);
+
+ if (contentLinkMatcher.group(1).substring(contentLinkMatcher.group(1).length() - 1).equals("\\")) {
+ studyGuideLinks.add(shorterStudyGuideLink);
+ } else {
+ studyGuideLinks.add(contentLinkMatcher.group(1));
+ }
}
System.out.println(studyGuideLinks.size() + " Unique Campus Community links found");
- //remove all the false positives that are in JSON of study guide but not visible to front end user.
- studyGuideLinks.removeAll(KnownFalsePositives.BLACK_LIST);
+ // Remove all the false positives that are in JSON of study guide but not visible to front end user.
+ studyGuideLinks.removeAll(KnownFalsePositives.WHITE_LIST);
System.out.println(studyGuideLinks);
totalLinksFound += studyGuideLinks.size();
@@ -114,21 +106,22 @@ public void checkStudyGuides() {
e.printStackTrace();
}
-
+ // Test all links in a Study Guide
int response;
for (String link : studyGuideLinks) {
-// Document doc2 = (Document) Jsoup.connect(link).response();
try {
- Connection connection = Jsoup.connect(link).ignoreHttpErrors(true);
-
+ Connection linkConnection = Jsoup.connect(link).ignoreHttpErrors(true);
- Document doc2 = connection.get();
- response = connection.response()
- .statusCode();
+ // Although the `linkContents` is never utilized, it is a
+ // required call. This is because Jsoup expects that `get()`
+ // is called before the `response()` object is available.
+ Document linkContents = linkConnection.get();
+ response = linkConnection.response().statusCode();
- if (response >= 400) {
+ // Report a bad link if anything other than a "200 OK" response is returned.
+ if (response != 200) {
badLinks.add(link);
- writeToFile.createTxtFile(titleOfStudyGuide, link, link2);
+ writeToFile.createTxtFile(titleOfStudyGuide, link, studyGuideLink);
}
} catch (IOException ie) {
ie.printStackTrace();
@@ -138,18 +131,11 @@ public void checkStudyGuides() {
System.out.println(badLinks.size() + " Broken links: " + badLinks);
System.out.println(totalLinksFound + " total links checked");
-
System.out.println("----------------------------------------------------");
System.out.println("----------------------------------------------------");
studyGuideLinks.clear();
}
System.out.println(AllStudyGuideLinks.ALL_STUDY_GUIDES.size() + " Total Study Guides");
-
- String totalLinksFoundAsString = Integer.toString(totalLinksFound);
-// totalLinksFoundAsString = totalLinksFound.to;
-
- writeToFile.writeTotalCount(totalLinksFoundAsString);
}
}
-
diff --git a/src/main/java/com/base64/d/WriteToFile.java b/src/main/java/com/base64/d/WriteToFile.java
index ec6e11c..586b79c 100644
--- a/src/main/java/com/base64/d/WriteToFile.java
+++ b/src/main/java/com/base64/d/WriteToFile.java
@@ -3,51 +3,27 @@
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
-import java.io.*;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
-import java.text.SimpleDateFormat;
import java.util.Date;
-import static java.lang.System.out;
-
-
public class WriteToFile {
- String date = new Date().toString();
-
public void createTxtFile(String titleOfStudyGuide, String link, String link2) {
+ String date = new Date().toString();
-
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
FileWriter fileWriter = new FileWriter("DeadLinks.txt", true);
PrintWriter printWriter = new PrintWriter(fileWriter);
- printWriter.println("\n");
- printWriter.println("---------------------------------------");
- printWriter.println(date);
printWriter.println(titleOfStudyGuide);
printWriter.println("Link to Study Guide: " + link2);
printWriter.println("This link is broken: " + link);
+ printWriter.println(date);
printWriter.println("---------------------------------------");
-
printWriter.close();
- } catch (
- IOException exception) {
- out.println("ERROR");
+ } catch (IOException exception) {
+ System.out.println("ERROR");
exception.printStackTrace();
}
}
-
- public void writeTotalCount(String totalLinksFound){
- try {
- Files.write(Paths.get("DeadLinks.txt"), (String.format("%s total links checked\n", totalLinksFound)).getBytes(), StandardOpenOption.APPEND);
- }catch (IOException e) {
- e.printStackTrace();
- //exception handling left as an exercise for the reader
- }
- }
}
diff --git a/src/main/java/com/base64/d/main.java b/src/main/java/com/base64/d/main.java
deleted file mode 100644
index b8cc69a..0000000
--- a/src/main/java/com/base64/d/main.java
+++ /dev/null
@@ -1,232 +0,0 @@
-package com.base64.d;
-
-import org.jsoup.Connection;
-import org.jsoup.Jsoup;
-import org.jsoup.helper.HttpConnection;
-import org.jsoup.helper.HttpConnection.Response;
-import org.jsoup.nodes.Document;
-
-import java.io.IOException;
-import java.util.Base64;
-
-public class main {
- public static void main(String[] args) {
-
- StudyGuideChecker checker = new StudyGuideChecker();
- checker.checkStudyGuides();
-
-//
-
-// String userName = "dave.hemmesch";
-//
-// String password = "";
-// String login = userName + ":" + password;
-//// String base64login = new String(Base64.encodeBase64(login.getBytes()));
-// try {
-//// Connection.Response res = Jsoup
-//// .connect("https://id.infinitecampus.com/auth/login?url=https%3A%2F%2Fcommunity.infinitecampus.com%2Fnews%2F")
-//// .header("Authorization", "Basic" + login)
-//// .get();
-//// .method(Connection.Method.POST)
-//// .execute();
-//
-// Document doc = Jsoup
-// .connect("https://id.infinitecampus.com/auth/login?url=https%3A%2F%2Fcommunity.infinitecampus.com%2Fnews%2F")
-// .data("login", "dave.hemmesch")
-// .data("Password", "")
-// .get();
-// System.out.println(doc);
-// }
-// catch (IOException e) {
-//// e.printStackTrace();
-// }
-
-
- }
-
-// int count = 0;
-// int totalLinksFound = 0;
-// String url3 = "https://content.infinitecampus.com/sis/latest/study-guide/ad-hoc-filters-letters-and-data-viewer";
-// String decodedText = "";
-// String iframeSrc = "";
-// String date = new Date().toString();
-//
-// String titleOfStudyGuide = "";
-// Set studyGuideLinks = new HashSet<>();
-// Set badLinks = new HashSet<>();
-//
-// WriteToFile writeToFile = new WriteToFile();
-
-// Set knownFalsePositives = new HashSet<>();
-// knownFalsePositives.add("https://content.infinitecampus.com/sis/latest/simulation/send-a-behavior-message-sc-01-28-01");
-// knownFalsePositives.add("https://content.infinitecampus.com/sis/latest/simulation/schedule-attendance-message-sc-01-24-02");
-// knownFalsePositives.add("https://content.infinitecampus.com/sis/latest/simulation/schedule-a-behavior-message-sc-01-27-02");
-// knownFalsePositives.add("https://content.infinitecampus.com/sis/latest/simulation/create-a-behavior-message-template-sc-01-27-01");
-// knownFalsePositives.add("https://content.infinitecampus.com/sis/latest/simulation/view-individual-student-attendance");
-//
-// Set linksFromCommunity = new HashSet<>();
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/academic-planner-system-set-up");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/academic-planner-use-and-management-");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/ad-hoc-filters-letters-and-data-viewer");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/ad-hoc-functions-and-logical-expressions");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/attendance");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/behavior-admin-set-up");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/behavior-data-management-and-reporting");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/behavior-messages-and-letters");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/calendar-rights-user-groups");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/campus-instruction-part-1-the-fundamentals");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/campus-instruction-part-2-grade-book-basics");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/campus-instruction-part-3-advanced-grade-book-and-posting-grades");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/campus-instruction-part-4-campus-learning");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/census---new-personfamily-set-up");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/census---personhousehold-maintenance");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/census-reports");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/flags-and-programs");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/grade-submission-process");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/grading-setup");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/health-module-system-setup");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/health-module-view-and-manage-student-health-information");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/messenger-for-the-end-user");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/tool-rights-user-groups");
-// linksFromCommunity.add("https://content.infinitecampus.com/sis/latest/study-guide/user-account-creation-maintenance-and-reporting");
-
-// for (String link2 : AllStudyGuideLinks.ALL_STUDY_GUIDES) {
-// try {
-////
-//// Connect to the study guide url
-// Document doc3 = Jsoup.connect(link2).get();
-//
-//// grab the iframe
-// Element iframe = doc3.select("iframe").first();
-//
-//// get iframe scr url
-// iframeSrc = iframe.attr("src");
-//
-//// connect to the iframe source url
-// Document doc = Jsoup.connect(iframeSrc).get();
-//
-// titleOfStudyGuide = doc3.title();
-// System.out.println(titleOfStudyGuide + " " + iframeSrc);
-//
-//// get the script tag info
-// Elements scriptTag = doc.getElementsByTag("script");
-// String jsScripts = scriptTag.toString();
-//
-//// match any string of characters over 100 in length.
-// String patternString = "(\\w{100,}.+)";
-//
-// Pattern pattern = Pattern.compile(patternString);
-//
-// Matcher matcher = pattern.matcher(jsScripts);
-//// System.out.println(matcher);
-// String foundBase64String = "";
-// while (matcher.find()) {
-// System.out.println("--------");
-//
-// foundBase64String = matcher.group(1);
-// }
-// //reduced the giant string by 2 because it included the " and the ;
-// String trimFoundBase64String = foundBase64String.substring(0, (foundBase64String.length() - 2));
-//
-// //put in this try block because one study guide had different script tag layout and threw error.
-// try {
-// // decoding a base64 string and putting into a byte array
-// byte[] decodedArr = Base64.getDecoder().decode(trimFoundBase64String);
-// decodedText = new String(decodedArr, "UTF-8");
-// //System.out.println("decoded base64: " + decodedText);
-// } catch
-// (IllegalArgumentException exc) {
-// exc.printStackTrace();
-// totalLinksFound -= studyGuideLinks.size();
-// System.out.println(titleOfStudyGuide + " not checked because of decoding error");
-// }
-//
-// // regex meaning - . means any character. + means 1 or more, * means 0 or more. ? means 0 or 1
-// // everything in the () is pattern/matcher "group" syntax. then \" is looking for the next quote
-// String patternString2 = "(https://content.infinitecampus.com/sis.*?)\"";
-//
-// Pattern pattern2 = Pattern.compile(patternString2);
-//
-//
-// Matcher matcher2 = pattern2.matcher(decodedText);
-// //System.out.println("This is the matcher " + matcher2);
-//
-//
-// while (matcher2.find()) {
-// count++;
-// //some study guide links had '\' added for unknown reason. this code checks for it and removes it before adding it to the studyGuide.
-// String shorterStudyGuideLink = matcher2.group(1).substring(0, matcher2.group(1).length() - 1);
-//// System.out.println(shorterStudyGuideLink);
-//
-// if (matcher2.group(1).substring(matcher2.group(1).length() - 1).equals("\\")) {
-// studyGuideLinks.add(shorterStudyGuideLink);
-// } else {
-// studyGuideLinks.add(matcher2.group(1));
-// }
-// }
-//
-// System.out.println(studyGuideLinks.size() + " Unique Campus Community links found");
-// //remove all the false positives that are in JSON of study guide but not visible to front end user.
-// studyGuideLinks.removeAll(KnownFalsePositives.BLACK_LIST);
-// System.out.println(studyGuideLinks);
-// totalLinksFound += studyGuideLinks.size();
-//
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-//
-//
-// int response;
-// for (String link : studyGuideLinks) {
-//// Document doc2 = (Document) Jsoup.connect(link).response();
-// try {
-// Connection connection = Jsoup.connect(link).ignoreHttpErrors(true);
-//
-//
-// Document doc2 = connection.get();
-// response = connection.response()
-// .statusCode();
-//
-// if (response >= 400) {
-// badLinks.add(link);
-// writeToFile.createTxtFile(titleOfStudyGuide, link, link2);
-//// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd") ;
-//// try {
-//// FileWriter fileWriter = new FileWriter("DeadLinks.txt", true);
-//// PrintWriter printWriter = new PrintWriter(fileWriter);
-////
-//// printWriter.println(titleOfStudyGuide);
-//// printWriter.println("Link to Study Guide: " + link2);
-//// printWriter.println("This link is broken: " + link);
-//// printWriter.println(date);
-//// printWriter.println("---------------------------------------");
-////
-////
-//// printWriter.close();
-//// }
-//// catch (IOException exception) {
-//// out.println("ERROR");
-//// exception.printStackTrace();
-//// }
-// }
-// } catch (IOException ie) {
-// ie.printStackTrace();
-// }
-// }
-//
-// System.out.println(badLinks.size() + " Broken links: " + badLinks);
-// System.out.println(totalLinksFound + " total links checked");
-//
-// System.out.println("----------------------------------------------------");
-// System.out.println("----------------------------------------------------");
-//
-// studyGuideLinks.clear();
-// }
-// System.out.println(AllStudyGuideLinks.ALL_STUDY_GUIDES.size() + " Total Study Guides");
-// }
-
-
-}
-
-
-