public void parseDataList() {
            ArrayList<HashMap<String, String>> acc = new ArrayList();
            HashMap<String, String> stickyMap = new HashMap();
            for(Map<String, String> sourceMap : dataList) {
                if( acc.size() == 0 ) {
                    for(Map.Entry<String, String> e : sourceMap.entrySet()) {
                        stickyMap.put(e.getKey(), sourceMap.get(e.getKey()));
                    }
                    acc.add(stickyMap);
                } else {
                    HashMap<String, String> mergedMap = new HashMap();
                    for(Map.Entry<String, String> e : stickyMap.entrySet()) {
                        String sourceValue = sourceMap.get(e.getKey());
                        if ( null == sourceValue ) {
                            mergedMap.put(e.getKey(), getValueOr(sourceMap, e.getKey(), e.getValue()));
                        } else if ( sourceValue.equals("") ){ } else {
                            mergedMap.put(e.getKey(), getValueOr(sourceMap, e.getKey(), e.getValue()));
                        }
                    }
                    acc.add(mergedMap);
                }
            }
            this.dataList = acc;
        }