mostly working, output headers need fixing
This commit is contained in:
@@ -2,7 +2,12 @@ package uk.org.mafoo.cpomssummariser;
|
|||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import org.apache.poi.xssf.usermodel.*;
|
import org.apache.poi.xssf.usermodel.*;
|
||||||
|
|
||||||
|
import uk.org.mafoo.cpomssummariser.DataModel.CategoryGroupData;
|
||||||
|
|
||||||
import org.apache.poi.ss.usermodel.*;
|
import org.apache.poi.ss.usermodel.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,6 +53,7 @@ public class App {
|
|||||||
}
|
}
|
||||||
System.out.println("");
|
System.out.println("");
|
||||||
}
|
}
|
||||||
|
workbook.close();
|
||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,6 +67,14 @@ public class App {
|
|||||||
List<Record> records = Parser.parse(data);
|
List<Record> records = Parser.parse(data);
|
||||||
Summariser summariser = new Summariser(records);
|
Summariser summariser = new Summariser(records);
|
||||||
|
|
||||||
|
System.out.println("Data imported...");
|
||||||
|
|
||||||
|
for (Entry<String, Map<String, CategoryGroupData>> item : summariser.getData().entrySet()) {
|
||||||
|
System.out.println(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
Writer.run(summariser, "out.xlsx");
|
||||||
|
|
||||||
System.out.println("Ending...");
|
System.out.println("Ending...");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,20 +5,26 @@ import java.util.Map;
|
|||||||
|
|
||||||
public class CategoryGroupData {
|
public class CategoryGroupData {
|
||||||
|
|
||||||
String group;
|
final String parent;
|
||||||
|
final String name;
|
||||||
|
final String group;
|
||||||
Map<String, Integer> sex;
|
Map<String, Integer> sex;
|
||||||
Integer SEND;
|
Integer SEND;
|
||||||
Integer PP;
|
Integer PP;
|
||||||
|
|
||||||
public CategoryGroupData(String group, Map<String, Integer> sex, Integer SEND, Integer PP) {
|
public CategoryGroupData(String parent, String name, String group, Map<String, Integer> sex, Integer SEND, Integer PP) {
|
||||||
|
this.parent = parent;
|
||||||
|
this.name = name;
|
||||||
this.group = group;
|
this.group = group;
|
||||||
this.sex = sex;
|
this.sex = sex;
|
||||||
this.SEND = SEND;
|
this.SEND = SEND;
|
||||||
this.PP = PP;
|
this.PP = PP;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CategoryGroupData(String group) {
|
public CategoryGroupData(String parent, String name, String group) {
|
||||||
this(
|
this(
|
||||||
|
parent,
|
||||||
|
name,
|
||||||
group,
|
group,
|
||||||
new HashMap<String, Integer>(),
|
new HashMap<String, Integer>(),
|
||||||
0,
|
0,
|
||||||
@@ -26,7 +32,7 @@ public class CategoryGroupData {
|
|||||||
);
|
);
|
||||||
this.sex.put("Male", 0);
|
this.sex.put("Male", 0);
|
||||||
this.sex.put("Female", 0);
|
this.sex.put("Female", 0);
|
||||||
// System.out.println("[CategoryGroupData] Created new group: " + group);
|
System.out.println("[CategoryGroupData] Created new group: " + parent + " / " + group);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void incrementPP() {
|
public void incrementPP() {
|
||||||
@@ -42,6 +48,14 @@ public class CategoryGroupData {
|
|||||||
this.sex.put(sex, this.sex.get(sex) + 1);
|
this.sex.put(sex, this.sex.get(sex) + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getParent() {
|
||||||
|
return this.parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
public int getPP() {
|
public int getPP() {
|
||||||
return this.PP.intValue();
|
return this.PP.intValue();
|
||||||
}
|
}
|
||||||
@@ -57,6 +71,8 @@ public class CategoryGroupData {
|
|||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
stringBuilder.append("Parent="); stringBuilder.append(this.parent); stringBuilder.append(" ");
|
||||||
|
stringBuilder.append("Name="); stringBuilder.append(this.name); stringBuilder.append(" ");
|
||||||
stringBuilder.append("Group="); stringBuilder.append(this.group); stringBuilder.append(" ");
|
stringBuilder.append("Group="); stringBuilder.append(this.group); stringBuilder.append(" ");
|
||||||
stringBuilder.append("Male="); stringBuilder.append(this.getSexValue("Male")); stringBuilder.append(" ");
|
stringBuilder.append("Male="); stringBuilder.append(this.getSexValue("Male")); stringBuilder.append(" ");
|
||||||
stringBuilder.append("Female="); stringBuilder.append(this.getSexValue("Female")); stringBuilder.append(" ");
|
stringBuilder.append("Female="); stringBuilder.append(this.getSexValue("Female")); stringBuilder.append(" ");
|
||||||
|
|||||||
@@ -58,7 +58,9 @@ public class Record {
|
|||||||
this.p_send = boolstrToBool(send);
|
this.p_send = boolstrToBool(send);
|
||||||
this.p_pp = boolstrToBool(pp);
|
this.p_pp = boolstrToBool(pp);
|
||||||
|
|
||||||
if(! p_groups.contains(group)) p_groups.add("Year " + group);
|
if(! p_groups.contains("Year " + group)) {
|
||||||
|
p_groups.add("Year " + group);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getSex() {
|
protected String getSex() {
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package uk.org.mafoo.cpomssummariser;
|
package uk.org.mafoo.cpomssummariser;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -9,29 +11,20 @@ import uk.org.mafoo.cpomssummariser.DataModel.CategoryGroupData;
|
|||||||
public class Summariser {
|
public class Summariser {
|
||||||
|
|
||||||
List<Record> records;
|
List<Record> records;
|
||||||
|
List<String> groups = Record.getGroups();
|
||||||
Map<String, Map<String, CategoryGroupData>> data = new HashMap<String, Map<String, CategoryGroupData>>();
|
Map<String, Map<String, CategoryGroupData>> data = new HashMap<String, Map<String, CategoryGroupData>>();
|
||||||
|
|
||||||
public Summariser(List<Record> records) {
|
public Summariser(List<Record> records) {
|
||||||
this.records = records;
|
this.records = records;
|
||||||
|
|
||||||
// Prepare the top-level data structure
|
|
||||||
for (String c : Record.getTopLevelCategories()) {
|
|
||||||
Map<String, CategoryGroupData> cat = new HashMap<String, CategoryGroupData>();
|
|
||||||
for (String g : Record.getGroups()) {
|
|
||||||
cat.put(g, new CategoryGroupData(g));
|
|
||||||
}
|
|
||||||
data.put(c, cat);
|
|
||||||
System.out.println("[Summariser] Created: " + c);
|
|
||||||
}
|
|
||||||
process();
|
process();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, CategoryGroupData> data_getOrCreate(String cat) {
|
Map<String, CategoryGroupData> data_getOrCreate(String parent, String cat) {
|
||||||
if(! data.containsKey(cat)) {
|
if(! data.containsKey(cat)) {
|
||||||
Map<String, CategoryGroupData> tmp = new HashMap<String, CategoryGroupData>();
|
Map<String, CategoryGroupData> tmp = new HashMap<String, CategoryGroupData>();
|
||||||
for (String g : Record.getGroups()) {
|
for (String g : Record.getGroups()) {
|
||||||
tmp.put(g, new CategoryGroupData(g));
|
tmp.put(g, new CategoryGroupData(parent, cat, g));
|
||||||
}
|
}
|
||||||
data.put(cat, tmp);
|
data.put(cat, tmp);
|
||||||
}
|
}
|
||||||
@@ -44,7 +37,7 @@ public class Summariser {
|
|||||||
for (Entry<String, List<String>> category : record.getCategories().entrySet()) {
|
for (Entry<String, List<String>> category : record.getCategories().entrySet()) {
|
||||||
for (String subcat : category.getValue()) {
|
for (String subcat : category.getValue()) {
|
||||||
String group = record.getGroup();
|
String group = record.getGroup();
|
||||||
Map<String, CategoryGroupData> x = data_getOrCreate(subcat);
|
Map<String, CategoryGroupData> x = data_getOrCreate(category.getKey(), subcat);
|
||||||
CategoryGroupData blob = x.get(group);
|
CategoryGroupData blob = x.get(group);
|
||||||
if(record.getSEND()) blob.incrementSEND();
|
if(record.getSEND()) blob.incrementSEND();
|
||||||
if(record.getPP()) blob.incrementPP();
|
if(record.getPP()) blob.incrementPP();
|
||||||
@@ -54,4 +47,15 @@ public class Summariser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> getGroups() {
|
||||||
|
List<String> clone = new ArrayList<String>();
|
||||||
|
clone.addAll(groups);
|
||||||
|
Collections.sort(clone); // FIXME: Sort is wrong!
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Map<String, CategoryGroupData>> getData() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user