/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package project.latex.balloon.writer;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
*
* @author dgorst
*/
public class DataModelConverter {
private final ChecksumGenerator checksumGenerator;
public DataModelConverter(ChecksumGenerator checksumGenerator) {
this.checksumGenerator = checksumGenerator;
}
public String convertDataKeysToCsvString(List<String> dataKeys) {
if (dataKeys == null) {
throw new IllegalArgumentException("Cannot convert null object to csv");
}
if (dataKeys.isEmpty()) {
return "";
}
Iterator<String> keysIterator = dataKeys.iterator();
String key = keysIterator.next();
StringBuilder stringBuilder = new StringBuilder(key);
while (keysIterator.hasNext()) {
key = keysIterator.next();
stringBuilder.append(",").append(key);
}
return stringBuilder.toString();
}
public String convertDataToCsvString(List<String> dataKeys, Map<String, Object> data) {
if (dataKeys == null) {
throw new IllegalArgumentException("Cannot convert object to csv as data keys are null");
}
if (dataKeys.isEmpty()) {
return "";
}
if (data == null) {
throw new IllegalArgumentException("Cannot convert null object to csv");
}
Iterator<String> keysIterator = dataKeys.iterator();
String key = keysIterator.next();
Object value = data.get(key);
StringBuilder stringBuilder = new StringBuilder(getValueString(value));
while (keysIterator.hasNext()) {
key = keysIterator.next();
value = data.get(key);
stringBuilder.append(",").append(getValueString(value));
}
String checksumString = checksumGenerator.generateChecksum(stringBuilder.toString());
stringBuilder.append("*").append(checksumString);
return stringBuilder.toString();
}
String getValueString(Object value) {
if (value == null) {
// Return a placeholder value which shouldn't cause an error but will be obviously be a placeholder
return "99.99";
}
return value.toString();
}
}