use of me.vertretungsplan.objects.SubstitutionSchedule in project substitution-schedule-parser by vertretungsplanme.
the class Sample method main.
public static void main(String[] args) throws JSONException, IOException, CredentialInvalidException {
SubstitutionScheduleData data = new SubstitutionScheduleData();
data.setType(SubstitutionSchedule.Type.STUDENT);
data.setApi("untis-monitor");
data.setAuthenticationData(new NoAuthenticationData());
data.setData(new JSONObject("{\n" + " \"classes\": [\n" + " \"05a\",\"05b\",\"05c\",\"05d\",\"05e\",\"05f\",\"05g\",\n" + " \"06a\",\"06b\",\"06c\",\"06d\",\"06e\",\"06f\",\"06g\",\n" + " \"07a\",\"07b\",\"07c\",\"07d\",\"07e\",\"07f\",\"07g\",\n" + " \"08a\",\"08b\",\"08c\",\"08d\",\"08e\",\"08f\",\"08g\",\n" + " \"09a\",\"09b\",\"09c\",\"09d\",\"09e\",\"09f\",\"09g\",\n" + " \"Ea\",\"Eb\",\"Ec\",\"Ed\",\"Ee\",\"Ef\",\n" + " \"Q1a\",\"Q1b\",\"Q1c\",\"Q1d\",\"Q1e\",\"Q1f\",\"Q1g\",\"Q1h\",\"Q1i\",\"Q1j\",\n" + " \"Q2a\",\"Q2b\",\"Q2c\",\"Q2d\",\"Q2e\",\"Q2f\",\"Q2g\",\"Q2h\",\"Q2i\",\"Q2j\" \n" + " ],\n" + " \"class_in_extra_line\": true,\n" + " \"website\": \"http://vertretung.lornsenschule.de/schueler/subst_001.htm\",\n" + " \"stand_links\": true,\n" + " \"urls\": [\n" + " {\n" + " \"following\": false,\n" + " \"url\": \"http://vertretung.lornsenschule.de/schueler/f1/subst_001.htm\" \n" + " },\n" + " {\n" + " \"following\": false,\n" + " \"url\": \"http://vertretung.lornsenschule.de/schueler/f2/subst_001.htm\" \n" + " } \n" + " ],\n" + " \"encoding\": \"ISO-8859-1\",\n" + " \"columns\": [\n" + " \"lesson\",\"type\",\"subject\",\"previousSubject\",\"room\",\"desc\" \n" + " ] \n" + " }"));
data.getAdditionalInfos().add("winter-sh");
SubstitutionSchedule schedule = ParserUtil.parseSubstitutionSchedule(data);
System.out.println(schedule);
}
use of me.vertretungsplan.objects.SubstitutionSchedule in project substitution-schedule-parser by vertretungsplanme.
the class CSVDemoTest method demoTest.
@Test
public void demoTest() throws IOException, JSONException {
SubstitutionSchedule schedule = parser.parseCSV(csv);
assertEquals(2, schedule.getDays().size());
SubstitutionScheduleDay day = schedule.getDays().get(0);
assertEquals(new LocalDate(2016, 9, 5), day.getDate());
assertEquals(new LocalDateTime(2016, 9, 2, 8, 16), day.getLastChange());
assertEquals(1, day.getSubstitutions().size());
assertEquals(0, day.getMessages().size());
Substitution subst = day.getSubstitutions().iterator().next();
assertEquals(1, subst.getClasses().size());
assertEquals("05A", subst.getClasses().iterator().next());
assertEquals("6", subst.getLesson());
assertEquals("!Ma", subst.getSubject());
assertEquals("!DROE", subst.getTeacher());
assertEquals("!B203", subst.getRoom());
assertEquals("für Mu REN", subst.getDesc());
assertEquals("Vertretung", subst.getType());
}
use of me.vertretungsplan.objects.SubstitutionSchedule in project substitution-schedule-parser by vertretungsplanme.
the class CSVParser method parseCSV.
@NotNull
SubstitutionSchedule parseCSV(String response) throws JSONException, IOException {
SubstitutionSchedule schedule = SubstitutionSchedule.fromData(scheduleData);
String[] lines = response.split("\n");
String separator = data.getString(PARAM_SEPARATOR);
for (int i = data.optInt(PARAM_SKIP_LINES, 0); i < lines.length; i++) {
String[] columns = lines[i].split(separator);
Substitution v = new Substitution();
String dayName = null;
String stand = "";
int j = 0;
for (String column : columns) {
String type = data.getJSONArray(PARAM_COLUMNS).getString(j);
switch(type) {
case "lesson":
v.setLesson(column);
break;
case "subject":
v.setSubject(column);
break;
case "previousSubject":
v.setPreviousSubject(column);
break;
case "type":
v.setType(column);
v.setColor(colorProvider.getColor(column));
break;
case "type-entfall":
if (column.equals("x")) {
v.setType("Entfall");
v.setColor(colorProvider.getColor("Entfall"));
} else {
v.setType("Vertretung");
v.setColor(colorProvider.getColor("Vertretung"));
}
break;
case "room":
v.setRoom(column);
break;
case "teacher":
v.setTeacher(column);
break;
case "previousTeacher":
v.setPreviousTeacher(column);
break;
case "desc":
v.setDesc(column);
break;
case "desc-type":
v.setDesc(column);
String recognizedType = recognizeType(column);
v.setType(recognizedType);
v.setColor(colorProvider.getColor(recognizedType));
break;
case "previousRoom":
v.setPreviousRoom(column);
break;
case "class":
v.getClasses().add(getClassName(column, data));
break;
case "day":
dayName = column;
break;
case "stand":
stand = column;
break;
case "ignore":
break;
default:
throw new IllegalArgumentException("Unknown column type: " + column);
}
j++;
}
if (v.getType() == null) {
v.setType("Vertretung");
v.setColor(colorProvider.getColor("Vertretung"));
}
if (dayName != null) {
SubstitutionScheduleDay day = new SubstitutionScheduleDay();
day.setDateString(dayName);
day.setDate(ParserUtils.parseDate(dayName));
day.setLastChangeString(stand);
day.setLastChange(ParserUtils.parseDateTime(stand));
day.addSubstitution(v);
schedule.addDay(day);
}
}
if (scheduleData.getData().has(PARAM_WEBSITE)) {
schedule.setWebsite(scheduleData.getData().getString(PARAM_WEBSITE));
}
schedule.setClasses(getAllClasses());
schedule.setTeachers(getAllTeachers());
return schedule;
}
use of me.vertretungsplan.objects.SubstitutionSchedule in project substitution-schedule-parser by vertretungsplanme.
the class DaVinciParser method getSubstitutionSchedule.
@Override
public SubstitutionSchedule getSubstitutionSchedule() throws IOException, JSONException, CredentialInvalidException {
new LoginHandler(scheduleData, credential, cookieProvider).handleLogin(executor, cookieStore);
SubstitutionSchedule schedule = SubstitutionSchedule.fromData(scheduleData);
List<String> urls = new ArrayList<>();
if (scheduleData.getData().has(PARAM_URLS)) {
JSONArray urlsArray = scheduleData.getData().getJSONArray(PARAM_URLS);
for (int i = 0; i < urlsArray.length(); i++) {
urls.add(urlsArray.getString(i));
}
} else {
urls.add(scheduleData.getData().getString(PARAM_URL));
}
for (String url : urls) {
Document doc = Jsoup.parse(httpGet(url, ENCODING));
List<String> dayUrls = getDayUrls(url, doc);
if (scheduleData.getData().has(PARAM_EMBEDDED_CONTENT_SELECTOR)) {
for (Element el : doc.select(scheduleData.getData().getString(PARAM_EMBEDDED_CONTENT_SELECTOR))) {
parsePage(el, schedule, colorProvider);
}
} else {
for (String dayUrl : dayUrls) {
Document dayDoc;
if (dayUrl.equals(url)) {
dayDoc = doc;
} else {
dayDoc = Jsoup.parse(httpGet(dayUrl, ENCODING));
}
parsePage(dayDoc, schedule, colorProvider);
}
}
}
if (scheduleData.getData().has(PARAM_WEBSITE)) {
schedule.setWebsite(scheduleData.getData().getString(PARAM_WEBSITE));
} else {
schedule.setWebsite(urls.get(0));
}
schedule.setClasses(getAllClasses());
schedule.setTeachers(getAllTeachers());
return schedule;
}
use of me.vertretungsplan.objects.SubstitutionSchedule in project substitution-schedule-parser by vertretungsplanme.
the class ESchoolParser method parseESchoolSchedule.
@NotNull
SubstitutionSchedule parseESchoolSchedule(Document doc) throws IOException, JSONException {
SubstitutionSchedule schedule = SubstitutionSchedule.fromData(scheduleData);
String infoString = doc.select("#Content table").first().select("td").get(1).ownText();
Pattern pattern = Pattern.compile("Letzte Aktualisierung:\u00a0(\\d{2}.\\d{2}.\\d{4} - \\d{2}:\\d{2})");
Matcher matcher = pattern.matcher(infoString);
if (matcher.find()) {
LocalDateTime lastChange = DateTimeFormat.forPattern("dd.MM.yyyy - HH:mm").parseLocalDateTime(matcher.group(1));
schedule.setLastChange(lastChange);
}
Elements titles = doc.select("center b");
Elements tables = doc.select("table#DATA");
if (!tables.get(0).text().contains("Keine Daten verfügbar")) {
if (titles.size() != tables.size())
throw new IOException("Anzahl Überschriften != Anzahl Tabellen");
for (int i = 0; i < titles.size(); i++) {
SubstitutionScheduleDay day = new SubstitutionScheduleDay();
day.setDate(ParserUtils.parseDate(titles.get(i).text()));
parseTable(tables.get(i), day);
schedule.addDay(day);
}
}
schedule.setClasses(getAllClasses());
schedule.setTeachers(getAllTeachers());
return schedule;
}
Aggregations