Newer
Older
package smash.appointment.parse;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
public class SubjectDao {
Logger logger = Logger.getLogger(SubjectDao.class);
private List<Subject> subjects = new ArrayList<>();
public void addSubject(Subject subject, String errorPrefix) {
if (subject.getNdNumber() != null && !Utils.simplifyString(subject.getNdNumber()).isEmpty()) {
Subject existing = getByNdNumber(subject.getNdNumber());
if (existing != null) {
if (!existing.getScreeningNumber().equals(subject.getScreeningNumber())) {
logger.error(errorPrefix + " Nd number taken by subject: " + existing.getScreeningNumber());
return;
}
}
}
Subject existing = getByScreeningNumber(subject.getScreeningNumber());
if (existing != null) {
existing.update(subject, errorPrefix);
} else {
subjects.add(subject);
}
}
private Subject getByScreeningNumber(String screeningNumber) {
for (Subject s : subjects) {
if (screeningNumber.equals(s.getScreeningNumber())) {
return s;
}
}
return null;
}
public void readFile(String filename) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
String line;
while ((line = br.readLine()) != null) {
String tmp[] = line.split("\t");
addSubject(new Subject(tmp[0], tmp[1], tmp[2], tmp[3]), "[" + filename + ":" + lineCount + "]");
lineCount++;
}
}
}
/**
* @return the subjects
* @see #subjects
*/
public List<Subject> getSubjects() {
return subjects;
}
/**
* @param subjects
* the subjects to set
* @see #subjects
*/
public void setSubjects(List<Subject> subjects) {
this.subjects = subjects;
}
public Subject getByNdNumber(String ndNumber) {
ndNumber = Utils.simplifyString(ndNumber);
if (ndNumber.equalsIgnoreCase(s.getNdNumber())) {
return s;
}
}
return null;
}
public void addSubjects(List<Subject> processPrcSubjects, String errorPrefix) {
for (Subject subject : processPrcSubjects) {
addSubject(subject, errorPrefix);