/
PublicHearingParser.java
74 lines (61 loc) · 2.71 KB
/
PublicHearingParser.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package gov.nysenate.openleg.processor.hearing;
import gov.nysenate.openleg.model.hearing.PublicHearing;
import gov.nysenate.openleg.model.hearing.PublicHearingCommittee;
import gov.nysenate.openleg.model.hearing.PublicHearingFile;
import gov.nysenate.openleg.model.hearing.PublicHearingId;
import gov.nysenate.openleg.service.hearing.data.PublicHearingDataService;
import gov.nysenate.openleg.util.PublicHearingTextUtils;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.nio.charset.Charset;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;
@Service
public class PublicHearingParser
{
@Autowired
private PublicHearingDataService dataService;
@Autowired
private PublicHearingTextParser textParser;
@Autowired
private PublicHearingTitleParser titleParser;
@Autowired
private PublicHearingAddressParser addressParser;
@Autowired
private PublicHearingDateParser dateTimeParser;
@Autowired
private PublicHearingCommitteeParser committeeParser;
/**
* Parses a {@link PublicHearingFile}, extracting a
* {@link gov.nysenate.openleg.model.hearing.PublicHearing PublicHearing}.
* @param publicHearingFile
* @throws IOException
*/
public void process(PublicHearingFile publicHearingFile) throws IOException {
final List<List<String>> pages = PublicHearingTextUtils.getPages(
FileUtils.readFileToString(publicHearingFile.getFile(), Charset.defaultCharset()));
final List<String> firstPage = pages.get(0);
String title = titleParser.parse(firstPage);
String address = addressParser.parse(firstPage);
LocalDate date = dateTimeParser.parseDate(firstPage);
LocalTime startTime = dateTimeParser.parseStartTime(firstPage);
LocalTime endTime = dateTimeParser.parseEndTime(firstPage);
List<PublicHearingCommittee> committees = committeeParser.parse(firstPage);
String text = textParser.parse(pages);
PublicHearingId id = new PublicHearingId(publicHearingFile.getFileName());
PublicHearing publicHearing = new PublicHearing(id, date, text);
publicHearing.setTitle(title);
publicHearing.setAddress(address);
publicHearing.setStartTime(startTime);
publicHearing.setEndTime(endTime);
publicHearing.setCommittees(committees);
LocalDateTime now = LocalDateTime.now();
publicHearing.setModifiedDateTime(now);
publicHearing.setPublishedDateTime(now);
dataService.savePublicHearing(publicHearing, publicHearingFile, true);
}
}