add null row

This commit is contained in:
ParkSeongMin
2017-06-19 17:53:36 +09:00
parent b5973555c9
commit d780240c51
4 changed files with 72 additions and 13 deletions

View File

@@ -2,7 +2,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nexacro.spring</groupId>
<version>1.0.1</version>
<version>1.0.2</version>
<artifactId>nexacro-core</artifactId>
<packaging>jar</packaging>
<name>nexacro-core</name>

View File

@@ -39,12 +39,13 @@ public class AbstractDataSetConverter extends AbstractListenerHandler {
* @throws NexacroConvertException
*/
protected void addRowIntoDataSet(DataSet ds, Map map, boolean disallowChangeStructure) throws NexacroConvertException {
// ignore null data.
int newRow = ds.newRow();
// ignore null data. (add null row)
if(map == null) {
return;
}
int newRow = ds.newRow();
Iterator iterator = map.keySet().iterator();
while(iterator.hasNext()) {
Object key = iterator.next();
@@ -91,12 +92,11 @@ public class AbstractDataSetConverter extends AbstractListenerHandler {
*/
protected void addRowIntoDataSet(DataSet ds, Object obj) {
if(obj == null) { // ignore null data
int newRow = ds.newRow();
if(obj == null) { // ignore null data (add null row)
return;
}
int newRow = ds.newRow();
NexacroBeanWrapper beanWrapper = NexacroBeanWrapper.createBeanWrapper(obj);
NexacroBeanProperty[] beanProperties = beanWrapper.getProperties();

View File

@@ -1,5 +1,6 @@
package com.nexacro.spring.data.support;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -83,7 +84,8 @@ public class ListToDataSetConverter extends AbstractDataSetConverter implements
}
}
return null;
// apply null row (empty column)
return new HashMap();
}
private DataSet convertListMapToDataSet(List source, ConvertDefinition definition, Map availableFirstData) throws NexacroConvertException {
@@ -99,11 +101,6 @@ public class ListToDataSetConverter extends AbstractDataSetConverter implements
}
for(Object obj: source) {
if(!(obj instanceof Map)) {
throw new NexacroConvertException("list should use the generic type. target="+ds.getName());
}
addRowIntoDataSet(ds, (Map) obj, definition.isDisallowChangeStructure());
}

View File

@@ -1,5 +1,7 @@
package com.nexacro.spring.data.support;
import static junit.framework.Assert.assertEquals;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
@@ -20,6 +22,7 @@ import com.nexacro.spring.util.ReflectionUtil;
import com.nexacro.xapi.data.ColumnHeader;
import com.nexacro.xapi.data.ConstantColumnHeader;
import com.nexacro.xapi.data.DataSet;
import com.nexacro.xapi.data.Debugger;
import com.nexacro.xapi.data.datatype.PlatformDataType;
/**
@@ -437,6 +440,65 @@ public class ListToDataSetConverterTest {
}
@Test
public void testConvertListMapToDataSetIncludeNullRow() {
List<Map<String, Object>> defaultMap = new ArrayList<Map<String, Object>>();
defaultMap.add(null); // add null row
{
Map<String, Object> map = new HashMap<String, Object>();
map.put("col1", "value");
defaultMap.add(map);
}
defaultMap.add(null); // add null row
{
Map<String, Object> map = new HashMap<String, Object>();
map.put("col1", "value");
defaultMap.add(map);
}
ConvertDefinition definition = new ConvertDefinition("ds");
Object dsObj = null;
try {
dsObj = converter.convert(defaultMap, definition);
} catch (NexacroConvertException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
DataSet ds = (DataSet) dsObj;
assertEquals(defaultMap.size(), ds.getRowCount());
Assert.assertTrue(ds.containsColumn("col1"));
}
@Test
public void testConvertListBeanToDataSetIncludeNullRow() {
List<DefaultBean> defaultBean = NexacroTestUtil.createDefaultBeans();
defaultBean.add(0, null); // add null row
defaultBean.add(null); // add null row
ConvertDefinition definition = new ConvertDefinition("ds");
Object dsObj = null;
try {
dsObj = converter.convert(defaultBean, definition);
} catch (NexacroConvertException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
DataSet ds = (DataSet) dsObj;
assertEquals(defaultBean.size(), ds.getRowCount());
Assert.assertTrue(ds.containsColumn("employeeId"));
}
@Test
public void testUpperCase() {