CSV Improvements
parent
8287e1f64a
commit
aca1de8605
|
@ -18,7 +18,6 @@ import java.util.List;
|
||||||
import org.hwo.StringHelper;
|
import org.hwo.StringHelper;
|
||||||
import org.hwo.text.LineReader;
|
import org.hwo.text.LineReader;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public class CSV {
|
public class CSV {
|
||||||
|
|
||||||
List<CSVRecord> records;
|
List<CSVRecord> records;
|
||||||
|
|
|
@ -3,7 +3,6 @@ package org.hwo.csv;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public class CSVRecord {
|
public class CSVRecord {
|
||||||
|
|
||||||
ArrayList<Object> columns;
|
ArrayList<Object> columns;
|
||||||
|
|
|
@ -2,8 +2,10 @@ package org.hwo.csv;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.lang.reflect.Array;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
@ -27,12 +29,44 @@ public class CSVTable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object[] getColumn(int column) {
|
public Object[] getColumn(int column) {
|
||||||
|
return getColumn(column,0,this.rows.size());
|
||||||
|
}
|
||||||
|
public Object[] getColumn(int column,int start) {
|
||||||
|
return getColumn(column,start,this.rows.size());
|
||||||
|
}
|
||||||
|
public Object[] getColumn(int column,int start,int end) {
|
||||||
ArrayList<Object> ret = new ArrayList<>();
|
ArrayList<Object> ret = new ArrayList<>();
|
||||||
for(CSVTableRow r : this.rows) {
|
for (int n = start; n < end; n++) {
|
||||||
ret.add(r.getValue(column));
|
ret.add(this.rows.get(n).getValue(column));
|
||||||
}
|
}
|
||||||
return ret.toArray();
|
return ret.toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public <T> T[] getColumn(T[] targetType,int column) {
|
||||||
|
return getColumn(targetType, column, 0, this.rows.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
public <T> T[] getColumn(T[] targetType,int column,int start) {
|
||||||
|
return getColumn(targetType, column, start, this.rows.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public <T> T[] getColumn(T[] targetType,int column,int start,int end) {
|
||||||
|
T[] targetArray = (T[])Array.newInstance(targetType.getClass().getComponentType(), end - start);
|
||||||
|
|
||||||
|
for (int n = start; n < end; n++) {
|
||||||
|
Object o = this.rows.get(n).getValue(column);
|
||||||
|
if (o != null) {
|
||||||
|
targetArray[n - start] = (T)o;
|
||||||
|
} else {
|
||||||
|
targetArray[n - start] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return targetArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public int getColumnCount() {
|
public int getColumnCount() {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for(CSVTableRow r : this.rows) {
|
for(CSVTableRow r : this.rows) {
|
||||||
|
@ -43,11 +77,11 @@ public class CSVTable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCSV() {
|
public String getCSV() {
|
||||||
String csv = new String();
|
StringBuilder csv = new StringBuilder();
|
||||||
for(CSVTableRow r : this.rows) {
|
for(CSVTableRow r : this.rows) {
|
||||||
csv += r.getCSV();
|
csv.append(r.getCSV());
|
||||||
}
|
}
|
||||||
return csv;
|
return csv.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CSVTable ParseCSV(String path) {
|
public static CSVTable ParseCSV(String path) {
|
||||||
|
@ -68,7 +102,9 @@ public class CSVTable {
|
||||||
CSVTableRow row = new CSVTableRow();
|
CSVTableRow row = new CSVTableRow();
|
||||||
String[] tokens = s.split(",");
|
String[] tokens = s.split(",");
|
||||||
for(String t : tokens) {
|
for(String t : tokens) {
|
||||||
if(t.contains("\"")) {
|
if (t.equals("")) {
|
||||||
|
row.addValue(null);
|
||||||
|
} else if(t.contains("\"")) {
|
||||||
row.addValue(t.substring(1,t.length() - 1));
|
row.addValue(t.substring(1,t.length() - 1));
|
||||||
}
|
}
|
||||||
else if(t.contains(".")) {
|
else if(t.contains(".")) {
|
||||||
|
|
|
@ -11,12 +11,14 @@ public class CSVTableRow {
|
||||||
public CSVTableRow() {
|
public CSVTableRow() {
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
public CSVTableRow(String title) {
|
public CSVTableRow(String... values) {
|
||||||
init();
|
init();
|
||||||
addValue(title);
|
for (String value : values) {
|
||||||
|
addValue(value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
this.values = new ArrayList<>();
|
this.values = new ArrayList<>();
|
||||||
|
@ -31,7 +33,7 @@ public class CSVTableRow {
|
||||||
|
|
||||||
public Object getValue(int column) {
|
public Object getValue(int column) {
|
||||||
if(column >= this.values.size()) {
|
if(column >= this.values.size()) {
|
||||||
return "";
|
return null;
|
||||||
}
|
}
|
||||||
return this.values.get(column);
|
return this.values.get(column);
|
||||||
}
|
}
|
||||||
|
@ -66,29 +68,26 @@ public class CSVTableRow {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCSV() {
|
public String getCSV() {
|
||||||
String ret = new String();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
for(int i = 0; i < values.size(); i++) {
|
for(int i = 0; i < values.size(); i++) {
|
||||||
Object obj = values.get(i);
|
Object obj = values.get(i);
|
||||||
if(obj != null) {
|
if(obj != null) {
|
||||||
if(obj.getClass() == String.class) {
|
if(obj.getClass() == String.class) {
|
||||||
ret += formatString(obj.toString());
|
sb.append(String.format("\"%s\"",obj.toString()));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ret += obj.toString();
|
sb.append(obj.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ret += formatString("null");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(i < this.values.size() -1)
|
if(i < this.values.size() -1)
|
||||||
ret += ",";
|
sb.append(',');
|
||||||
}
|
}
|
||||||
ret += "\n";
|
sb.append("\n");
|
||||||
return ret;
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String formatString(String str) {
|
|
||||||
return "\"" + str + "\"";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue