use of org.eyeseetea.malariacare.data.database.model.Match in project pictureapp by EyeSeeTea.
the class PopulateDB method populateDB.
public static void populateDB(Context context) throws IOException {
//Reset inner references
cleanInnerLists();
for (String table : tables2populate) {
Log.i(TAG, "Loading csv: " + table);
CSVReader reader = new CSVReader(new InputStreamReader(context.openFileInput(table)), SEPARATOR, QUOTECHAR);
String[] line;
while ((line = reader.readNext()) != null) {
switch(table) {
case PROGRAMS_CSV:
Program program = new Program();
program.setUid(line[1]);
program.setName(line[2]);
program.setStageUid(line[3]);
program.save();
programList.put(Integer.valueOf(line[0]), program);
break;
case TABS_CSV:
Tab tab = new Tab();
tab.setName(line[1]);
tab.setOrder_pos(Integer.valueOf(line[2]));
tab.setProgram(programList.get(Integer.valueOf(line[3])));
tab.setType(Integer.valueOf(line[4]));
tab.save();
tabList.put(Integer.valueOf(line[0]), tab);
break;
case HEADERS_CSV:
Header header = new Header();
header.setShort_name(line[1]);
header.setName(line[2]);
header.setOrder_pos(Integer.valueOf(line[3]));
header.setTab(tabList.get(Integer.valueOf(line[4])));
header.save();
headerList.put(Integer.valueOf(line[0]), header);
break;
case ANSWERS_CSV:
Answer answer = new Answer();
answer.setName(line[1]);
answer.save();
answerList.put(Integer.valueOf(line[0]), answer);
break;
case OPTION_ATTRIBUTES_CSV:
OptionAttribute optionAttribute = new OptionAttribute();
optionAttribute.setBackground_colour(line[1]);
optionAttribute.setPath(line[2]);
if (line.length > 3 && !line[3].equals("")) {
optionAttribute.setHorizontal_alignment(Integer.valueOf(line[3]));
} else {
optionAttribute.setHorizontal_alignment(OptionAttribute.DEFAULT_HORIZONTAL_ALIGNMENT);
}
if (line.length > 4 && !line[4].equals("")) {
optionAttribute.setVertical_alignment(Integer.valueOf(line[4]));
} else {
optionAttribute.setHorizontal_alignment(OptionAttribute.DEFAULT_VERTICAL_ALIGNMENT);
}
if (line.length > 5 && !line[5].equals("")) {
optionAttribute.setText_size(Integer.valueOf(line[5]));
} else {
optionAttribute.setText_size(Integer.parseInt(PreferencesState.getInstance().getContext().getResources().getString(R.string.default_option_text_size)));
}
if (line.length > 6 && !line[6].equals("")) {
optionAttribute.setDefaultOption(Integer.valueOf(line[6]));
} else {
optionAttribute.setDefaultOption(0);
}
optionAttribute.save();
optionAttributeList.put(Integer.valueOf(line[0]), optionAttribute);
break;
case OPTIONS_CSV:
Option option = new Option();
option.setCode(line[1]);
option.setName(line[2]);
option.setFactor(Float.valueOf(line[3]));
option.setAnswer(answerList.get(Integer.valueOf(line[4])));
if (line[5] != null && !line[5].isEmpty()) {
option.setOptionAttribute(optionAttributeList.get(Integer.valueOf(line[5])));
}
option.save();
optionList.put(Integer.valueOf(line[0]), option);
break;
case QUESTIONS_CSV:
Question question = new Question();
question.setCode(line[1]);
question.setDe_name(line[2]);
question.setHelp_text(line[3]);
question.setForm_name(line[4]);
question.setUid(line[5]);
question.setOrder_pos(Integer.valueOf(line[6]));
question.setNumerator_w(Float.valueOf(line[7]));
question.setDenominator_w(Float.valueOf(line[8]));
question.setHeader(headerList.get(Integer.valueOf(line[9])));
if (!line[10].equals("")) {
question.setAnswer(answerList.get(Integer.valueOf(line[10])));
}
if (!line[11].equals("")) {
question.setQuestion(questionList.get(Integer.valueOf(line[11])));
}
question.setOutput(Integer.valueOf(line[12]));
question.setTotalQuestions(Integer.valueOf(line[13]));
question.setVisible(Integer.valueOf(line[14]));
if (line.length > 15 && !line[15].equals("")) {
question.setPath((line[15]));
}
if (line.length > 16 && !line[16].equals("")) {
question.setCompulsory(Integer.valueOf(line[16]));
} else {
question.setCompulsory(Question.QUESTION_NOT_COMPULSORY);
}
question.save();
questionList.put(Integer.valueOf(line[0]), question);
break;
case QUESTION_RELATIONS_CSV:
QuestionRelation questionRelation = new QuestionRelation();
questionRelation.setOperation(Integer.valueOf(line[1]));
questionRelation.setQuestion(questionList.get(Integer.valueOf(line[2])));
questionRelation.save();
questionRelationList.put(Integer.valueOf(line[0]), questionRelation);
break;
case MATCHES:
Match match = new Match();
match.setQuestionRelation(questionRelationList.get(Integer.valueOf(line[1])));
match.save();
matchList.put(Long.valueOf(line[0]), match);
break;
case QUESTION_OPTIONS_CSV:
QuestionOption questionOption = new QuestionOption();
questionOption.setQuestion(questionList.get(Integer.valueOf(line[1])));
if (!line[2].equals("")) {
questionOption.setOption(optionList.get(Integer.valueOf(line[2])));
}
if (!line[3].equals("")) {
questionOption.setMatch(matchList.get(Long.valueOf(line[3])));
}
questionOption.save();
break;
case QUESTION_THRESHOLDS_CSV:
QuestionThreshold questionThreshold = new QuestionThreshold();
questionThreshold.setMatch(matchList.get(Long.valueOf(line[1])));
questionThreshold.setQuestion(questionList.get(Integer.valueOf(line[2])));
if (!line[3].equals("")) {
questionThreshold.setMinValue(Integer.valueOf(line[3]));
}
if (!line[4].equals("")) {
questionThreshold.setMaxValue(Integer.valueOf(line[4]));
}
questionThreshold.save();
break;
case DRUGS_CSV:
Drug drug = PopulateRow.populateDrugs(line, null);
drug.insert();
drugList.put(Long.parseLong(line[0]), drug);
break;
case ORGANISATIONS_CSV:
Organisation organisation = PopulateRow.populateOrganisations(line, null);
organisation.insert();
organisationList.put(Long.parseLong(line[0]), organisation);
break;
case TREATMENT_CSV:
Treatment treatment = PopulateRow.populateTreatments(line, organisationList, stringKeyList, null);
treatment.insert();
treatmentList.put(Long.parseLong(line[0]), treatment);
break;
case DRUG_COMBINATIONS_CSV:
PopulateRow.populateDrugCombinations(line, drugList, treatmentList, null).insert();
break;
case TREATMENT_MATCHES_CSV:
PopulateRow.populateTreatmentMatches(line, treatmentList, matchList, null).insert();
break;
case STRING_KEY_CSV:
StringKey stringKey = PopulateRow.populateStringKey(line, null);
stringKey.insert();
stringKeyList.put(Long.valueOf(line[0]), stringKey);
break;
case TRANSLATION_CSV:
PopulateRow.populateTranslation(line, stringKeyList, null).insert();
break;
}
}
reader.close();
}
//Free references since the maps are static
cleanInnerLists();
}
use of org.eyeseetea.malariacare.data.database.model.Match in project pictureapp by EyeSeeTea.
the class PopulateDB method addNotTestedRemminder.
public static void addNotTestedRemminder(Context context) throws IOException {
//Reset inner references
cleanInnerLists();
List<Option> actualOptions = Option.getAllOptions();
List<Question> actualQuestions = Question.getAllQuestions();
questionList = new LinkedHashMap<Integer, Question>();
optionAttributeList = new LinkedHashMap<Integer, OptionAttribute>();
optionList = new LinkedHashMap<Integer, Option>();
questionRelationList = new LinkedHashMap();
matchList = new LinkedHashMap();
int updateQRFromPosition = 24;
int updateMatchFromPosition = 25;
int updateQOFromPosition = 51;
int QRRow = 0;
int MatchRow = 0;
int QORow = 0;
for (String table : tables2updateQuestions) {
Log.i(TAG, "Loading csv: " + table);
CSVReader reader = new CSVReader(new InputStreamReader(context.openFileInput(table)), SEPARATOR, QUOTECHAR);
String[] line;
while ((line = reader.readNext()) != null) {
boolean isNew = true;
switch(table) {
case OPTION_ATTRIBUTES_CSV:
OptionAttribute optionAttribute = new OptionAttribute();
optionAttribute.setBackground_colour(line[1]);
optionAttribute.setPath(line[2]);
if (line.length > 3 && !line[3].equals("")) {
optionAttribute.setHorizontal_alignment(Integer.valueOf(line[3]));
} else {
optionAttribute.setHorizontal_alignment(OptionAttribute.DEFAULT_HORIZONTAL_ALIGNMENT);
}
if (line.length > 4 && !line[4].equals("")) {
optionAttribute.setVertical_alignment(Integer.valueOf(line[4]));
} else {
optionAttribute.setHorizontal_alignment(OptionAttribute.DEFAULT_VERTICAL_ALIGNMENT);
}
if (line.length > 5 && !line[5].equals("")) {
optionAttribute.setText_size(Integer.valueOf(line[5]));
} else {
optionAttribute.setText_size(Integer.parseInt(PreferencesState.getInstance().getContext().getResources().getString(R.string.default_option_text_size)));
}
if (line.length > 6 && !line[6].equals("")) {
optionAttribute.setDefaultOption(Integer.valueOf(line[6]));
} else {
optionAttribute.setDefaultOption(0);
}
optionAttributeList.put(Integer.valueOf(line[0]), optionAttribute);
break;
case OPTIONS_CSV:
//Ignore if the option already exists.
for (Option option : actualOptions) {
if (String.valueOf(option.getId_option()).equals(line[0])) {
isNew = false;
}
}
Option option;
if (isNew) {
option = new Option();
option.setCode(line[1]);
option.setName(line[2]);
option.setFactor(Float.valueOf(line[3]));
option.setAnswer(Answer.findById(Long.valueOf(line[4])));
if (line[5] != null && !line[5].isEmpty()) {
OptionAttribute localOptionAttribute = OptionAttribute.findById(Long.valueOf(line[5]));
if (localOptionAttribute == null) {
localOptionAttribute = optionAttributeList.get(Integer.valueOf(line[5]));
localOptionAttribute.save();
}
option.setOptionAttribute(localOptionAttribute);
}
option.save();
} else {
option = Option.findById(Long.valueOf(line[0]));
}
optionList.put(Integer.valueOf(line[0]), option);
break;
case QUESTIONS_CSV:
//Ignore if the question already exists.
for (Question question : actualQuestions) {
if (String.valueOf(question.getId_question()).equals(line[0])) {
isNew = false;
}
}
Question question;
if (isNew) {
question = new Question();
question.setCode(line[1]);
question.setDe_name(line[2]);
question.setHelp_text(line[3]);
question.setForm_name(line[4]);
question.setUid(line[5]);
question.setOrder_pos(Integer.valueOf(line[6]));
question.setNumerator_w(Float.valueOf(line[7]));
question.setDenominator_w(Float.valueOf(line[8]));
question.setHeader(Header.findById(Long.valueOf(line[9])));
if (!line[10].equals("")) {
question.setAnswer(Answer.findById(Long.valueOf(line[10])));
}
if (!line[11].equals("")) {
question.setQuestion(questionList.get(Integer.valueOf(line[11])));
}
question.setOutput(Integer.valueOf(line[12]));
question.setTotalQuestions(Integer.valueOf(line[13]));
question.setVisible(Integer.valueOf(line[14]));
if (line.length > 15 && !line[15].equals("")) {
question.setPath((line[15]));
}
if (line.length > 16 && !line[16].equals("")) {
question.setCompulsory(Integer.valueOf(line[16]));
} else {
question.setCompulsory(Question.QUESTION_NOT_COMPULSORY);
}
question.save();
} else {
question = Question.findByUID(line[5]);
}
questionList.put(Integer.valueOf(line[0]), question);
break;
case QUESTION_RELATIONS_CSV:
//Ignore if the option already exists.
QRRow++;
if (updateQRFromPosition > QRRow) {
break;
}
QuestionRelation questionRelation = new QuestionRelation();
questionRelation.setOperation(Integer.valueOf(line[1]));
questionRelation.setQuestion(questionList.get(Integer.valueOf(line[2])));
questionRelation.save();
questionRelationList.put(Integer.valueOf(line[0]), questionRelation);
break;
case MATCHES:
//Ignore if the match already exists.
MatchRow++;
if (updateMatchFromPosition > MatchRow) {
break;
}
Match match = new Match();
match.setQuestionRelation(questionRelationList.get(Integer.valueOf(line[1])));
match.save();
matchList.put(Long.valueOf(line[0]), match);
break;
case QUESTION_OPTIONS_CSV:
//Ignore if the question option already exists.
QORow++;
if (updateQOFromPosition > QORow) {
break;
}
QuestionOption questionOption = new QuestionOption();
questionOption.setQuestion(questionList.get(Integer.valueOf(line[1])));
questionOption.setOption(optionList.get(Integer.valueOf(line[2])));
if (!line[3].equals("")) {
questionOption.setMatch(matchList.get(Integer.valueOf(line[3])));
}
questionOption.save();
break;
}
}
}
}
use of org.eyeseetea.malariacare.data.database.model.Match in project pictureapp by EyeSeeTea.
the class UpdateDB method updateQuestionThresholds.
public static void updateQuestionThresholds(Context context, boolean updateCSV) throws IOException {
if (updateCSV) {
FileCsvs fileCsvs = new FileCsvs();
fileCsvs.saveCsvFromAssetsToFile(PopulateDB.QUESTION_THRESHOLDS_CSV);
}
List<QuestionThreshold> questionThresholds = QuestionThreshold.getAllQuestionThresholds();
HashMap<Long, Match> matchIds = RelationsIdCsvDB.getMatchIdRelationCsvDB(context);
HashMap<Long, Question> questionsIds = RelationsIdCsvDB.getQuestionIdRelationCsvDB(context);
CSVReader reader = new CSVReader(new InputStreamReader(context.openFileInput(PopulateDB.QUESTION_THRESHOLDS_CSV)), PopulateDB.SEPARATOR, PopulateDB.QUOTECHAR);
String[] line;
int i = 0;
while ((line = reader.readNext()) != null) {
if (i < questionThresholds.size()) {
PopulateRow.populateQuestionThreshold(line, matchIds, questionsIds, questionThresholds.get(i)).save();
} else {
QuestionThreshold questionThreshold = PopulateRow.populateQuestionThreshold(line, matchIds, questionsIds, null);
questionThreshold.insert();
}
}
}
use of org.eyeseetea.malariacare.data.database.model.Match in project pictureapp by EyeSeeTea.
the class UpdateDB method updateMatches.
public static void updateMatches(Context context, boolean updateCSV) throws IOException {
if (updateCSV) {
FileCsvs fileCsvs = new FileCsvs();
fileCsvs.saveCsvFromAssetsToFile(PopulateDB.MATCHES);
}
List<Match> matches = Match.listAll();
HashMap<Long, QuestionRelation> questionsrelationIds = RelationsIdCsvDB.getQuestionRelationIdRelationCsvDB(context);
CSVReader reader = new CSVReader(new InputStreamReader(context.openFileInput(PopulateDB.MATCHES)), PopulateDB.SEPARATOR, PopulateDB.QUOTECHAR);
String[] line;
int i = 0;
while ((line = reader.readNext()) != null) {
if (i < matches.size()) {
populateMatch(line, questionsrelationIds, matches.get(i)).save();
} else {
Match match = populateMatch(line, questionsrelationIds, null);
match.insert();
}
i++;
}
}
use of org.eyeseetea.malariacare.data.database.model.Match in project pictureapp by EyeSeeTea.
the class Treatment method getTreatmentFromSurvey.
private org.eyeseetea.malariacare.data.database.model.Treatment getTreatmentFromSurvey() {
List<Value> values = mMalariaSurvey.getValuesFromDB();
List<Match> ageMatches = new ArrayList<>();
List<Match> pregnantMatches = new ArrayList<>();
List<Match> severeMatches = new ArrayList<>();
List<Match> rdtMatches = new ArrayList<>();
for (Value value : values) {
Question question = value.getQuestion();
//Getting matches for questions of age, pregnant, severe and rdt.
if (question == null) {
continue;
}
if (question.getUid().equals(getContext().getString(R.string.ageQuestionUID))) {
ageMatches = QuestionThreshold.getMatchesWithQuestionValue(question.getId_question(), Integer.parseInt(value.getValue()));
Log.d(TAG, "age size: " + ageMatches.size());
} else if (question.getUid().equals(getContext().getString(R.string.sexPregnantQuestionUID))) {
pregnantMatches = QuestionOption.getMatchesWithQuestionOption(question.getId_question(), value.getId_option());
Log.d(TAG, "pregnant size: " + pregnantMatches.size());
} else if (question.getUid().equals(getContext().getString(R.string.severeSymtomsQuestionUID))) {
severeMatches = QuestionOption.getMatchesWithQuestionOption(question.getId_question(), value.getId_option());
Log.d(TAG, "severe size: " + severeMatches.size());
} else if (question.getUid().equals(getContext().getString(R.string.rdtQuestionUID))) {
rdtMatches = QuestionOption.getMatchesWithQuestionOption(question.getId_question(), value.getId_option());
Log.d(TAG, "rdt size: " + rdtMatches.size());
}
}
Log.d(TAG, "matches obtained");
List<Match> treatmentMatches = new ArrayList<>();
for (Match match : ageMatches) {
if (pregnantMatches.contains(match) && severeMatches.contains(match) && rdtMatches.contains(match)) {
treatmentMatches.add(match);
}
}
org.eyeseetea.malariacare.data.database.model.Treatment treatment = null;
for (Match treatmentMatch : treatmentMatches) {
if (Session.getCredentials().isDemoCredentials()) {
return treatmentMatch.getTreatment();
}
if (treatmentMatch.getTreatment().getOrganisation().getId_organisation() == Session.getUser().getOrganisation()) {
Log.d(TAG, "match: " + treatmentMatch.toString());
treatment = treatmentMatch.getTreatment();
Log.d(TAG, "treatment: " + treatment.toString());
break;
}
}
return treatment;
}
Aggregations