diff --git a/main/src/com/google/refine/importers/TabularImportingParserBase.java b/main/src/com/google/refine/importers/TabularImportingParserBase.java index d44ab382d..d19d3b5a7 100644 --- a/main/src/com/google/refine/importers/TabularImportingParserBase.java +++ b/main/src/com/google/refine/importers/TabularImportingParserBase.java @@ -39,6 +39,8 @@ import java.util.ArrayList; import java.util.List; import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.refine.ProjectMetadata; import com.google.refine.expr.ExpressionUtils; @@ -51,6 +53,7 @@ import com.google.refine.model.Row; import com.google.refine.util.JSONUtilities; abstract public class TabularImportingParserBase extends ImportingParserBase { + private final static Logger logger = LoggerFactory.getLogger("ImportingParserBase"); static public interface TableDataReader { public List getNextRowOfCells() throws IOException; } @@ -114,6 +117,7 @@ abstract public class TabularImportingParserBase extends ImportingParserBase { 0, new Column(project.columnModel.allocateNewCellIndex(), fileNameColumnName), false); } catch (ModelException e) { // Ignore: We already checked for duplicate name. + logger.info("ModelException",e); } } } diff --git a/main/src/com/google/refine/importers/tree/ImportColumnGroup.java b/main/src/com/google/refine/importers/tree/ImportColumnGroup.java index c85194e39..d50e2838d 100644 --- a/main/src/com/google/refine/importers/tree/ImportColumnGroup.java +++ b/main/src/com/google/refine/importers/tree/ImportColumnGroup.java @@ -27,8 +27,8 @@ public class ImportColumnGroup extends ImportVertical { @Override public String toString() { - return String.format("name=%s, columns={%s}, subgroups={{%s}}", - name,StringUtils.join(columns.keySet(), ','), + return String.format("name=%s, nextRowIndex=%d, columns={%s}, subgroups={{%s}}", + name,nextRowIndex,StringUtils.join(columns.keySet(), ','), StringUtils.join(subgroups.keySet(),',')); } } \ No newline at end of file diff --git a/main/src/com/google/refine/importers/tree/ImportVertical.java b/main/src/com/google/refine/importers/tree/ImportVertical.java index ac16ec36c..0a29e8d75 100644 --- a/main/src/com/google/refine/importers/tree/ImportVertical.java +++ b/main/src/com/google/refine/importers/tree/ImportVertical.java @@ -5,4 +5,9 @@ abstract class ImportVertical { public int nonBlankCount; abstract void tabulate(); + + @Override + public String toString() { + return name + ":" + nonBlankCount; + } } \ No newline at end of file diff --git a/main/src/com/google/refine/importers/tree/XmlImportUtilities.java b/main/src/com/google/refine/importers/tree/XmlImportUtilities.java index 1d6526439..0d048fcb7 100644 --- a/main/src/com/google/refine/importers/tree/XmlImportUtilities.java +++ b/main/src/com/google/refine/importers/tree/XmlImportUtilities.java @@ -34,6 +34,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. package com.google.refine.importers.tree; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -276,7 +277,7 @@ public class XmlImportUtilities extends TreeImportUtilities { ImportColumnGroup rootColumnGroup, int limit ) throws TreeReaderException { - logger.trace("findRecord(Project, TreeReader, String[], int, ImportColumnGroup"); + logger.trace("findRecord(Project, TreeReader, String[], int, ImportColumnGroup - path:"+Arrays.toString(recordPath)); if(parser.current() == Token.Ignorable){//XMLStreamConstants.START_DOCUMENT){ logger.warn("Cannot use findRecord method for START_DOCUMENT event"); @@ -342,12 +343,12 @@ public class XmlImportUtilities extends TreeImportUtilities { logger.trace("processRecord(Project,TreeReader,ImportColumnGroup)"); ImportRecord record = new ImportRecord(); - processSubRecord(project, parser, rootColumnGroup, record); + processSubRecord(project, parser, rootColumnGroup, record, 0); addImportRecordToProject(record, project); } /** - * processRecord parses Tree data for a single element and it's sub-elements, + * processFieldAsRecord parses Tree data for a single element and it's sub-elements, * adding the parsed data as a row to the project * @param project * @param parser @@ -408,9 +409,10 @@ public class XmlImportUtilities extends TreeImportUtilities { Project project, TreeReader parser, ImportColumnGroup columnGroup, - ImportRecord record + ImportRecord record, + int level ) throws TreeReaderException { - logger.trace("processSubRecord(Project,TreeReader,ImportColumnGroup,ImportRecord)"); + logger.trace("processSubRecord(Project,TreeReader,ImportColumnGroup,ImportRecord) lvl:"+level+" "+columnGroup); if(parser.current() == Token.Ignorable) { return; @@ -444,7 +446,8 @@ public class XmlImportUtilities extends TreeImportUtilities { project, parser, thisColumnGroup, - record + record, + level+1 ); } else if (//eventType == XMLStreamConstants.CDATA || eventType == Token.Value) { //XMLStreamConstants.CHARACTERS) { @@ -464,6 +467,8 @@ public class XmlImportUtilities extends TreeImportUtilities { } } else if (eventType == Token.EndEntity) { break; + } else if (eventType == Token.Ignorable) { + continue; } else { logger.info("unknown event type " + eventType); } diff --git a/main/src/com/google/refine/model/RecordModel.java b/main/src/com/google/refine/model/RecordModel.java index 9cd21e6e0..93f46ad7b 100644 --- a/main/src/com/google/refine/model/RecordModel.java +++ b/main/src/com/google/refine/model/RecordModel.java @@ -34,6 +34,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. package com.google.refine.model; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -41,11 +42,15 @@ import java.util.Properties; import org.json.JSONException; import org.json.JSONWriter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.refine.Jsonizable; import com.google.refine.expr.ExpressionUtils; public class RecordModel implements Jsonizable { + final static Logger logger = LoggerFactory.getLogger("RecordModel"); + final static public class CellDependency { final public int rowIndex; final public int cellIndex; @@ -57,7 +62,7 @@ public class RecordModel implements Jsonizable { @Override public String toString() { - return rowIndex+":"+cellIndex; + return rowIndex+","+cellIndex; } } @@ -65,6 +70,11 @@ public class RecordModel implements Jsonizable { public int recordIndex; public CellDependency[] cellDependencies; public List contextRows; + + @Override + public String toString() { + return "Idx: "+recordIndex+" CellDeps: "+Arrays.toString(cellDependencies)+" Rows:"+contextRows; + } } protected List _rowDependencies; @@ -232,8 +242,22 @@ public class RecordModel implements Jsonizable { } }); + dumpKeyedGroups(keyedGroups, columnModel); // for debug + return keyedGroups; } + + // debugging helper + private void dumpKeyedGroups(List groups, ColumnModel columnModel) { + for (KeyedGroup g : groups) { + String keyColName = columnModel.getColumnByCellIndex(g.keyCellIndex).getName(); + StringBuffer sb = new StringBuffer(); + for (int ci : g.cellIndices) { + sb.append(columnModel.getColumnByCellIndex(ci).getName()).append(','); + } + logger.trace("KeyedGroup " + keyColName + "::" + sb.toString()); + } + } protected void addRootKeyedGroup(ColumnModel columnModel, List keyedGroups) { int count = columnModel.getMaxCellIndex() + 1; diff --git a/main/tests/server/src/com/google/refine/tests/importers/XmlImportUtilitiesStub.java b/main/tests/server/src/com/google/refine/tests/importers/XmlImportUtilitiesStub.java index c0efeae93..195d3c091 100644 --- a/main/tests/server/src/com/google/refine/tests/importers/XmlImportUtilitiesStub.java +++ b/main/tests/server/src/com/google/refine/tests/importers/XmlImportUtilitiesStub.java @@ -47,8 +47,8 @@ public class XmlImportUtilitiesStub extends XmlImportUtilities { return super.detectRecordElement(parser, tag); } - public void ProcessSubRecordWrapper(Project project, TreeReader parser, ImportColumnGroup columnGroup, ImportRecord record) throws Exception{ - super.processSubRecord(project, parser, columnGroup, record); + public void ProcessSubRecordWrapper(Project project, TreeReader parser, ImportColumnGroup columnGroup, ImportRecord record, int level) throws Exception{ + super.processSubRecord(project, parser, columnGroup, record, level); } public void findRecordWrapper(Project project, TreeReader parser, String[] recordPath, int pathIndex, ImportColumnGroup rootColumnGroup) throws Exception{ diff --git a/main/tests/server/src/com/google/refine/tests/importers/XmlImportUtilitiesTests.java b/main/tests/server/src/com/google/refine/tests/importers/XmlImportUtilitiesTests.java index f40a5ba6e..064ca113f 100644 --- a/main/tests/server/src/com/google/refine/tests/importers/XmlImportUtilitiesTests.java +++ b/main/tests/server/src/com/google/refine/tests/importers/XmlImportUtilitiesTests.java @@ -370,7 +370,7 @@ public class XmlImportUtilitiesTests extends RefineTest { ParserSkip(); try { - SUT.ProcessSubRecordWrapper(project, parser, columnGroup, record); + SUT.ProcessSubRecordWrapper(project, parser, columnGroup, record,0); } catch (Exception e) { Assert.fail(); }