Importer refactoring cleanup (#2984)
* Clean up importer refactoring Remove an extra copy of filename setting. Revert some additional API changes (retaining both versions) * Revert archive file name changes & mark as deprecated
This commit is contained in:
parent
15a069d3d5
commit
eaf881ced7
@ -132,7 +132,7 @@ public class FixedWidthImporter extends TabularImportingParserBase {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
TabularImportingParserBase.readTable(project, metadata, job, dataReader, fileSource, limit, options, exceptions);
|
TabularImportingParserBase.readTable(project, job, dataReader, limit, options, exceptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -129,6 +129,6 @@ public class LineBasedImporter extends TabularImportingParserBase {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
TabularImportingParserBase.readTable(project, metadata, job, dataReader, fileSource, limit, options, exceptions);
|
TabularImportingParserBase.readTable(project, job, dataReader, limit, options, exceptions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -157,7 +157,7 @@ public class SeparatorBasedImporter extends TabularImportingParserBase {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
TabularImportingParserBase.readTable(project, metadata, job, dataReader, fileSource, limit, options, exceptions);
|
TabularImportingParserBase.readTable(project, job, dataReader, limit, options, exceptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
static protected ArrayList<Object> getCells(String line, CSVParser parser, LineNumberReader lnReader)
|
static protected ArrayList<Object> getCells(String line, CSVParser parser, LineNumberReader lnReader)
|
||||||
|
@ -76,12 +76,35 @@ abstract public class TabularImportingParserBase extends ImportingParserBase {
|
|||||||
super(useInputStream);
|
super(useInputStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param project
|
||||||
|
* @param metadata
|
||||||
|
* @param job
|
||||||
|
* @param reader
|
||||||
|
* @param fileSource
|
||||||
|
* @param limit
|
||||||
|
* @param options
|
||||||
|
* @param exceptions
|
||||||
|
* @deprecated 2020-07-23 Use {@link TabularImportingParserBase#readTable(Project, ImportingJob, TableDataReader, int, ObjectNode, List)}
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
static public void readTable(
|
||||||
|
Project project,
|
||||||
|
ProjectMetadata metadata,
|
||||||
|
ImportingJob job,
|
||||||
|
TableDataReader reader,
|
||||||
|
String fileSource,
|
||||||
|
int limit,
|
||||||
|
ObjectNode options,
|
||||||
|
List<Exception> exceptions
|
||||||
|
) {
|
||||||
|
readTable(project, job, reader, limit, options, exceptions);
|
||||||
|
}
|
||||||
|
|
||||||
static public void readTable(
|
static public void readTable(
|
||||||
Project project,
|
Project project,
|
||||||
ProjectMetadata metadata,
|
|
||||||
ImportingJob job,
|
ImportingJob job,
|
||||||
TableDataReader reader,
|
TableDataReader reader,
|
||||||
String fileSource,
|
|
||||||
int limit,
|
int limit,
|
||||||
ObjectNode options,
|
ObjectNode options,
|
||||||
List<Exception> exceptions
|
List<Exception> exceptions
|
||||||
|
@ -749,7 +749,7 @@ public class WikitextImporter extends TabularImportingParserBase {
|
|||||||
// TODO this does not seem to do anything - maybe we need to pass it to OpenRefine in some other way?
|
// TODO this does not seem to do anything - maybe we need to pass it to OpenRefine in some other way?
|
||||||
}
|
}
|
||||||
|
|
||||||
TabularImportingParserBase.readTable(project, metadata, job, dataReader, fileSource, limit, options, exceptions);
|
TabularImportingParserBase.readTable(project, job, dataReader, limit, options, exceptions);
|
||||||
|
|
||||||
// Add reconciliation statistics
|
// Add reconciliation statistics
|
||||||
if (dataReader.columnReconciled != null) {
|
if (dataReader.columnReconciled != null) {
|
||||||
|
@ -27,32 +27,28 @@
|
|||||||
package com.google.refine.importers.tree;
|
package com.google.refine.importers.tree;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated 2020-07-23 Use the method signatures which take individual parameters instead of this
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public class ImportParameters {
|
public class ImportParameters {
|
||||||
protected boolean trimStrings;
|
protected boolean trimStrings;
|
||||||
protected boolean storeEmptyStrings;
|
protected boolean storeEmptyStrings;
|
||||||
protected boolean guessDataType;
|
protected boolean guessDataType;
|
||||||
protected boolean includeFileSources = false;
|
protected boolean includeFileSources = false;
|
||||||
protected String fileSource = null;
|
protected String fileSource = null;
|
||||||
// TODO: What is the compatibility impact of including new fields
|
|
||||||
protected boolean includeArchiveFileName = false;
|
|
||||||
protected String archiveFileName = null;
|
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public ImportParameters(boolean trimStrings, boolean storeEmptyStrings, boolean guessCellValueTypes,
|
public ImportParameters(boolean trimStrings, boolean storeEmptyStrings, boolean guessCellValueTypes,
|
||||||
boolean includeFileSources, String fileSource, boolean includeArchiveFileName, String archiveFileName) {
|
boolean includeFileSources, String fileSource) {
|
||||||
this.trimStrings = trimStrings;
|
this.trimStrings = trimStrings;
|
||||||
this.storeEmptyStrings = storeEmptyStrings;
|
this.storeEmptyStrings = storeEmptyStrings;
|
||||||
this.guessDataType = guessCellValueTypes;
|
this.guessDataType = guessCellValueTypes;
|
||||||
this.includeFileSources = includeFileSources;
|
this.includeFileSources = includeFileSources;
|
||||||
this.fileSource = fileSource;
|
this.fileSource = fileSource;
|
||||||
this.includeArchiveFileName = includeArchiveFileName;
|
|
||||||
this.archiveFileName = archiveFileName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ImportParameters(boolean trimStrings, boolean storeEmptyStrings, boolean guessCellValueTypes,
|
|
||||||
boolean includeFileSources, String fileSource) {
|
|
||||||
this(trimStrings, storeEmptyStrings, guessCellValueTypes, includeFileSources, fileSource, false, "");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public ImportParameters(boolean trimStrings, boolean storeEmptyStrings, boolean guessCellValueTypes) {
|
public ImportParameters(boolean trimStrings, boolean storeEmptyStrings, boolean guessCellValueTypes) {
|
||||||
this(trimStrings, storeEmptyStrings, guessCellValueTypes, false, "");
|
this(trimStrings, storeEmptyStrings, guessCellValueTypes, false, "");
|
||||||
}
|
}
|
||||||
|
@ -210,12 +210,10 @@ abstract public class TreeImportingParserBase extends ImportingParserBase {
|
|||||||
boolean trimStrings = JSONUtilities.getBoolean(options, "trimStrings", true);
|
boolean trimStrings = JSONUtilities.getBoolean(options, "trimStrings", true);
|
||||||
boolean storeEmptyStrings = JSONUtilities.getBoolean(options, "storeEmptyStrings", false);
|
boolean storeEmptyStrings = JSONUtilities.getBoolean(options, "storeEmptyStrings", false);
|
||||||
boolean guessCellValueTypes = JSONUtilities.getBoolean(options, "guessCellValueTypes", true);
|
boolean guessCellValueTypes = JSONUtilities.getBoolean(options, "guessCellValueTypes", true);
|
||||||
boolean includeFileSources = JSONUtilities.getBoolean(options, "includeFileSources", false);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
XmlImportUtilities.importTreeData(treeParser, project, recordPath, rootColumnGroup, limit2,
|
XmlImportUtilities.importTreeData(treeParser, project, recordPath, rootColumnGroup, limit2,
|
||||||
new ImportParameters(trimStrings, storeEmptyStrings, guessCellValueTypes, includeFileSources,
|
trimStrings, storeEmptyStrings, guessCellValueTypes);
|
||||||
fileSource));
|
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
exceptions.add(e);
|
exceptions.add(e);
|
||||||
}
|
}
|
||||||
|
@ -245,13 +245,37 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param parser
|
||||||
|
* @param project
|
||||||
|
* @param recordPath
|
||||||
|
* @param rootColumnGroup
|
||||||
|
* @param limit
|
||||||
|
* @param parameters
|
||||||
|
* @throws TreeReaderException
|
||||||
|
* @deprecated 2020-07-23 Use {@link XmlImportUtilities#importTreeData(TreeReader, Project, String[], ImportColumnGroup, int, boolean, boolean, boolean)}
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
static public void importTreeData(
|
||||||
|
TreeReader parser,
|
||||||
|
Project project,
|
||||||
|
String[] recordPath,
|
||||||
|
ImportColumnGroup rootColumnGroup,
|
||||||
|
int limit,
|
||||||
|
ImportParameters parameters
|
||||||
|
) throws TreeReaderException{
|
||||||
|
importTreeData(parser, project, recordPath, rootColumnGroup, limit, parameters.trimStrings, parameters.storeEmptyStrings, parameters.guessDataType);
|
||||||
|
}
|
||||||
|
|
||||||
static public void importTreeData(
|
static public void importTreeData(
|
||||||
TreeReader parser,
|
TreeReader parser,
|
||||||
Project project,
|
Project project,
|
||||||
String[] recordPath,
|
String[] recordPath,
|
||||||
ImportColumnGroup rootColumnGroup,
|
ImportColumnGroup rootColumnGroup,
|
||||||
int limit,
|
int limit,
|
||||||
ImportParameters parameters
|
boolean trimStrings,
|
||||||
|
boolean storeEmptyStrings,
|
||||||
|
boolean guessDataTypes
|
||||||
) throws TreeReaderException{
|
) throws TreeReaderException{
|
||||||
if (logger.isTraceEnabled()) {
|
if (logger.isTraceEnabled()) {
|
||||||
logger.trace("importTreeData(TreeReader, Project, String[], ImportColumnGroup)");
|
logger.trace("importTreeData(TreeReader, Project, String[], ImportColumnGroup)");
|
||||||
@ -260,7 +284,8 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
while (parser.hasNext()) {
|
while (parser.hasNext()) {
|
||||||
Token eventType = parser.next();
|
Token eventType = parser.next();
|
||||||
if (eventType == Token.StartEntity) {
|
if (eventType == Token.StartEntity) {
|
||||||
findRecord(project, parser, recordPath, 0, rootColumnGroup, limit--,parameters);
|
findRecord(project, parser, recordPath, 0, rootColumnGroup, limit--, trimStrings, storeEmptyStrings,
|
||||||
|
guessDataTypes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (TreeReaderException e) {
|
} catch (TreeReaderException e) {
|
||||||
@ -270,13 +295,41 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @param project
|
* @param project
|
||||||
* @param parser
|
* @param parser
|
||||||
* @param recordPath
|
* @param recordPath
|
||||||
* @param pathIndex
|
* @param pathIndex
|
||||||
* @param rootColumnGroup
|
* @param rootColumnGroup
|
||||||
* @throws ServletException
|
* @param limit
|
||||||
|
* @param parameters
|
||||||
|
* @throws TreeReaderException
|
||||||
|
* @deprecated Use {@link XmlImportUtilities#findRecord(Project, TreeReader, String[], int, ImportColumnGroup, int, boolean, boolean, boolean)}
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
static protected void findRecord(
|
||||||
|
Project project,
|
||||||
|
TreeReader parser,
|
||||||
|
String[] recordPath,
|
||||||
|
int pathIndex,
|
||||||
|
ImportColumnGroup rootColumnGroup,
|
||||||
|
int limit,
|
||||||
|
ImportParameters parameters
|
||||||
|
) throws TreeReaderException {
|
||||||
|
findRecord(project, parser, recordPath, pathIndex, rootColumnGroup, limit, parameters.trimStrings,
|
||||||
|
parameters.storeEmptyStrings, parameters.guessDataType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param project
|
||||||
|
* @param parser
|
||||||
|
* @param recordPath
|
||||||
|
* @param pathIndex
|
||||||
|
* @param rootColumnGroup
|
||||||
|
* @param limit
|
||||||
|
* @param trimStrings trim whitespace from strings if true
|
||||||
|
* @param storeEmptyStrings store empty strings if true
|
||||||
|
* @param guessDataTypes guess whether strings represent numbers and convert
|
||||||
|
* @throws TreeReaderException
|
||||||
*/
|
*/
|
||||||
static protected void findRecord(
|
static protected void findRecord(
|
||||||
Project project,
|
Project project,
|
||||||
@ -285,7 +338,9 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
int pathIndex,
|
int pathIndex,
|
||||||
ImportColumnGroup rootColumnGroup,
|
ImportColumnGroup rootColumnGroup,
|
||||||
int limit,
|
int limit,
|
||||||
ImportParameters parameters
|
boolean trimStrings,
|
||||||
|
boolean storeEmptyStrings,
|
||||||
|
boolean guessDataTypes
|
||||||
) throws TreeReaderException {
|
) throws TreeReaderException {
|
||||||
if (logger.isTraceEnabled()) {
|
if (logger.isTraceEnabled()) {
|
||||||
logger.trace("findRecord(Project, TreeReader, String[], int, ImportColumnGroup - path:"+Arrays.toString(recordPath));
|
logger.trace("findRecord(Project, TreeReader, String[], int, ImportColumnGroup - path:"+Arrays.toString(recordPath));
|
||||||
@ -305,7 +360,7 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
Token eventType = parser.next();
|
Token eventType = parser.next();
|
||||||
if (eventType == Token.StartEntity) {
|
if (eventType == Token.StartEntity) {
|
||||||
findRecord(project, parser, recordPath, pathIndex + 1, rootColumnGroup, limit--,
|
findRecord(project, parser, recordPath, pathIndex + 1, rootColumnGroup, limit--,
|
||||||
parameters);
|
trimStrings, storeEmptyStrings, guessDataTypes);
|
||||||
} else if (eventType == Token.EndEntity) {
|
} else if (eventType == Token.EndEntity) {
|
||||||
break;
|
break;
|
||||||
} else if (eventType == Token.Value) {
|
} else if (eventType == Token.Value) {
|
||||||
@ -314,13 +369,13 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
String desiredFieldName = recordPath[pathIndex + 1];
|
String desiredFieldName = recordPath[pathIndex + 1];
|
||||||
String currentFieldName = parser.getFieldName();
|
String currentFieldName = parser.getFieldName();
|
||||||
if (desiredFieldName.equals(currentFieldName)) {
|
if (desiredFieldName.equals(currentFieldName)) {
|
||||||
processFieldAsRecord(project, parser, rootColumnGroup,parameters);
|
processFieldAsRecord(project, parser, rootColumnGroup, trimStrings, storeEmptyStrings, guessDataTypes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
processRecord(project, parser, rootColumnGroup, parameters);
|
processRecord(project, parser, rootColumnGroup, trimStrings, storeEmptyStrings, guessDataTypes);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
skip(parser);
|
skip(parser);
|
||||||
@ -338,6 +393,23 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param project
|
||||||
|
* @param parser
|
||||||
|
* @param rootColumnGroup
|
||||||
|
* @param parameter
|
||||||
|
* @throws TreeReaderException
|
||||||
|
* @deprecated Use {@link XmlImportUtilities#processRecord(Project, TreeReader, ImportColumnGroup, boolean, boolean, boolean)}
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
static protected void processRecord(
|
||||||
|
Project project,
|
||||||
|
TreeReader parser,
|
||||||
|
ImportColumnGroup rootColumnGroup,
|
||||||
|
ImportParameters parameter
|
||||||
|
) throws TreeReaderException {
|
||||||
|
processRecord(project, parser, rootColumnGroup, parameter.trimStrings, parameter.storeEmptyStrings, parameter.guessDataType);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* processRecord parses Tree data for a single element and it's sub-elements,
|
* processRecord parses Tree data for a single element and it's sub-elements,
|
||||||
@ -351,17 +423,34 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
Project project,
|
Project project,
|
||||||
TreeReader parser,
|
TreeReader parser,
|
||||||
ImportColumnGroup rootColumnGroup,
|
ImportColumnGroup rootColumnGroup,
|
||||||
ImportParameters parameter
|
boolean trimStrings,
|
||||||
|
boolean storeEmptyStrings,
|
||||||
|
boolean guessDataTypes
|
||||||
) throws TreeReaderException {
|
) throws TreeReaderException {
|
||||||
if (logger.isTraceEnabled()) {
|
if (logger.isTraceEnabled()) {
|
||||||
logger.trace("processRecord(Project,TreeReader,ImportColumnGroup)");
|
logger.trace("processRecord(Project,TreeReader,ImportColumnGroup)");
|
||||||
}
|
}
|
||||||
ImportRecord record = new ImportRecord();
|
ImportRecord record = new ImportRecord();
|
||||||
|
|
||||||
processSubRecord(project, parser, rootColumnGroup, record, 0, parameter);
|
processSubRecord(project, parser, rootColumnGroup, record, 0, trimStrings, storeEmptyStrings, guessDataTypes);
|
||||||
addImportRecordToProject(record, project, parameter.includeFileSources, parameter.fileSource, parameter.includeArchiveFileName, parameter.archiveFileName);
|
addImportRecordToProject(record, project);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
||||||
|
* @param rootColumnGroup
|
||||||
|
* @throws TreeReaderException
|
||||||
|
* @throws ServletException
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
static protected void processFieldAsRecord(Project project, TreeReader parser, ImportColumnGroup rootColumnGroup,
|
||||||
|
ImportParameters parameter) throws TreeReaderException {
|
||||||
|
processFieldAsRecord(project, parser, rootColumnGroup, parameter.trimStrings, parameter.storeEmptyStrings,
|
||||||
|
parameter.guessDataType);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* processFieldAsRecord 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,
|
||||||
@ -375,7 +464,9 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
Project project,
|
Project project,
|
||||||
TreeReader parser,
|
TreeReader parser,
|
||||||
ImportColumnGroup rootColumnGroup,
|
ImportColumnGroup rootColumnGroup,
|
||||||
ImportParameters parameter
|
boolean trimStrings,
|
||||||
|
boolean storeEmptyStrings,
|
||||||
|
boolean guessDataType
|
||||||
) throws TreeReaderException {
|
) throws TreeReaderException {
|
||||||
if (logger.isTraceEnabled()) {
|
if (logger.isTraceEnabled()) {
|
||||||
logger.trace("processFieldAsRecord(Project,TreeReader,ImportColumnGroup)");
|
logger.trace("processFieldAsRecord(Project,TreeReader,ImportColumnGroup)");
|
||||||
@ -384,10 +475,10 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
ImportRecord record = null;
|
ImportRecord record = null;
|
||||||
if (value instanceof String) {
|
if (value instanceof String) {
|
||||||
String text = (String) value;
|
String text = (String) value;
|
||||||
if (parameter.trimStrings) {
|
if (trimStrings) {
|
||||||
text = text.trim();
|
text = text.trim();
|
||||||
}
|
}
|
||||||
if (text.length() > 0 | !parameter.storeEmptyStrings) {
|
if (text.length() > 0 | !storeEmptyStrings) {
|
||||||
record = new ImportRecord();
|
record = new ImportRecord();
|
||||||
addCell(
|
addCell(
|
||||||
project,
|
project,
|
||||||
@ -395,8 +486,8 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
record,
|
record,
|
||||||
parser.getFieldName(),
|
parser.getFieldName(),
|
||||||
(String) value,
|
(String) value,
|
||||||
parameter.storeEmptyStrings,
|
storeEmptyStrings,
|
||||||
parameter.guessDataType
|
guessDataType
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -410,44 +501,44 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (record != null) {
|
if (record != null) {
|
||||||
addImportRecordToProject(record, project,
|
addImportRecordToProject(record, project);
|
||||||
parameter.includeFileSources, parameter.fileSource, parameter.includeArchiveFileName, parameter.archiveFileName);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
static protected void addImportRecordToProject(ImportRecord record, Project project,
|
static protected void addImportRecordToProject(ImportRecord record, Project project,
|
||||||
boolean includeFileSources, String fileSource, boolean includeArchiveFileName, String archiveFileName) {
|
boolean includeFileSources, String fileSource, boolean includeArchiveFileName, String archiveFileName) {
|
||||||
int archiveColumnIndex = -1, fileSourceColumnIndex = -1;
|
addImportRecordToProject(record, project);
|
||||||
if (includeArchiveFileName && archiveFileName != null) {
|
}
|
||||||
archiveColumnIndex = 0;
|
|
||||||
}
|
static protected void addImportRecordToProject(ImportRecord record, Project project) {
|
||||||
if (includeFileSources) {
|
|
||||||
fileSourceColumnIndex = archiveColumnIndex == 0? 1 : 0;
|
|
||||||
}
|
|
||||||
for (List<Cell> row : record.rows) {
|
for (List<Cell> row : record.rows) {
|
||||||
if (row.size() > 0) {
|
if (row.size() > 0) {
|
||||||
Row realRow = new Row(row.size());
|
Row realRow = new Row(row.size());
|
||||||
for (int c = 0; c < row.size(); c++) {
|
for (int c = 0; c < row.size(); c++) {
|
||||||
if (c == archiveColumnIndex) {
|
|
||||||
realRow.setCell(archiveColumnIndex, new Cell(archiveFileName, null));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (c == fileSourceColumnIndex) {
|
|
||||||
realRow.setCell(fileSourceColumnIndex, new Cell(fileSource, null));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
Cell cell = row.get(c);
|
Cell cell = row.get(c);
|
||||||
if (cell != null) {
|
if (cell != null) {
|
||||||
realRow.setCell(c, cell);
|
realRow.setCell(c, cell);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (realRow != null) {
|
project.rows.add(realRow);
|
||||||
project.rows.add(realRow);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
static protected void processSubRecord(
|
||||||
|
Project project,
|
||||||
|
TreeReader parser,
|
||||||
|
ImportColumnGroup columnGroup,
|
||||||
|
ImportRecord record,
|
||||||
|
int level,
|
||||||
|
ImportParameters parameter
|
||||||
|
) throws TreeReaderException {
|
||||||
|
processSubRecord(project, parser, columnGroup, record, level, parameter.trimStrings,
|
||||||
|
parameter.storeEmptyStrings, parameter.guessDataType);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param project
|
* @param project
|
||||||
@ -462,7 +553,9 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
ImportColumnGroup columnGroup,
|
ImportColumnGroup columnGroup,
|
||||||
ImportRecord record,
|
ImportRecord record,
|
||||||
int level,
|
int level,
|
||||||
ImportParameters parameter
|
boolean trimStrings,
|
||||||
|
boolean storeEmptyStrings,
|
||||||
|
boolean guessDataType
|
||||||
) throws TreeReaderException {
|
) throws TreeReaderException {
|
||||||
if (logger.isTraceEnabled()) {
|
if (logger.isTraceEnabled()) {
|
||||||
logger.trace("processSubRecord(Project,TreeReader,ImportColumnGroup,ImportRecord) lvl:"+level+" "+columnGroup);
|
logger.trace("processSubRecord(Project,TreeReader,ImportColumnGroup,ImportRecord) lvl:"+level+" "+columnGroup);
|
||||||
@ -482,18 +575,18 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
int attributeCount = parser.getAttributeCount();
|
int attributeCount = parser.getAttributeCount();
|
||||||
for (int i = 0; i < attributeCount; i++) {
|
for (int i = 0; i < attributeCount; i++) {
|
||||||
String text = parser.getAttributeValue(i);
|
String text = parser.getAttributeValue(i);
|
||||||
if (parameter.trimStrings) {
|
if (trimStrings) {
|
||||||
text = text.trim();
|
text = text.trim();
|
||||||
}
|
}
|
||||||
if (text.length() > 0 | !parameter.storeEmptyStrings) {
|
if (text.length() > 0 | !storeEmptyStrings) {
|
||||||
addCell(
|
addCell(
|
||||||
project,
|
project,
|
||||||
thisColumnGroup,
|
thisColumnGroup,
|
||||||
record,
|
record,
|
||||||
composeName(parser.getAttributePrefix(i), parser.getAttributeLocalName(i)),
|
composeName(parser.getAttributePrefix(i), parser.getAttributeLocalName(i)),
|
||||||
text,
|
text,
|
||||||
parameter.storeEmptyStrings,
|
storeEmptyStrings,
|
||||||
parameter.guessDataType
|
guessDataType
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -507,7 +600,9 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
thisColumnGroup,
|
thisColumnGroup,
|
||||||
record,
|
record,
|
||||||
level+1,
|
level+1,
|
||||||
parameter
|
trimStrings,
|
||||||
|
storeEmptyStrings,
|
||||||
|
guessDataType
|
||||||
);
|
);
|
||||||
} else if (//eventType == XMLStreamConstants.CDATA ||
|
} else if (//eventType == XMLStreamConstants.CDATA ||
|
||||||
eventType == Token.Value) { //XMLStreamConstants.CHARACTERS) {
|
eventType == Token.Value) { //XMLStreamConstants.CHARACTERS) {
|
||||||
@ -515,11 +610,11 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
String colName = parser.getFieldName();
|
String colName = parser.getFieldName();
|
||||||
if (value instanceof String) {
|
if (value instanceof String) {
|
||||||
String text = (String) value;
|
String text = (String) value;
|
||||||
if(parameter.trimStrings) {
|
if(trimStrings) {
|
||||||
text = text.trim();
|
text = text.trim();
|
||||||
}
|
}
|
||||||
addCell(project, thisColumnGroup, record, colName, text,
|
addCell(project, thisColumnGroup, record, colName, text,
|
||||||
parameter.storeEmptyStrings, parameter.guessDataType);
|
storeEmptyStrings, guessDataType);
|
||||||
} else {
|
} else {
|
||||||
addCell(project, thisColumnGroup, record, colName, value);
|
addCell(project, thisColumnGroup, record, colName, value);
|
||||||
}
|
}
|
||||||
|
@ -49,31 +49,50 @@ public class XmlImportUtilitiesStub extends XmlImportUtilities {
|
|||||||
return super.detectRecordElement(parser, tag);
|
return super.detectRecordElement(parser, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ProcessSubRecordWrapper(Project project, TreeReader parser, ImportColumnGroup columnGroup,
|
@Deprecated
|
||||||
|
public void processSubRecordWrapper(Project project, TreeReader parser, ImportColumnGroup columnGroup,
|
||||||
ImportRecord record, int level, ImportParameters parameter)
|
ImportRecord record, int level, ImportParameters parameter)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
super.processSubRecord(project, parser, columnGroup, record, level, parameter);
|
super.processSubRecord(project, parser, columnGroup, record, level, parameter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public void findRecordWrapper(Project project, TreeReader parser, String[] recordPath, int pathIndex,
|
public void findRecordWrapper(Project project, TreeReader parser, String[] recordPath, int pathIndex,
|
||||||
ImportColumnGroup rootColumnGroup, boolean trimStrings, boolean storeEmptyStrings, boolean guessDataType)
|
ImportColumnGroup rootColumnGroup, int limit, ImportParameters parameters)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
super.findRecord(project, parser, recordPath, pathIndex, rootColumnGroup, -1,
|
super.findRecord(project, parser, recordPath, pathIndex, rootColumnGroup, limit, parameters);
|
||||||
new ImportParameters(trimStrings, storeEmptyStrings, guessDataType));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void findRecordWrapper(Project project, TreeReader parser, String[] recordPath, int pathIndex,
|
||||||
|
ImportColumnGroup rootColumnGroup, int limit, boolean trimStrings, boolean storeEmptyStrings,
|
||||||
|
boolean guessDataType) throws Exception {
|
||||||
|
super.findRecord(project, parser, recordPath, pathIndex, rootColumnGroup, limit, trimStrings, storeEmptyStrings,
|
||||||
|
guessDataType);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public void processRecordWrapper(Project project, TreeReader parser, ImportColumnGroup rootColumnGroup,
|
||||||
|
ImportParameters parameters)
|
||||||
|
throws Exception {
|
||||||
|
super.processRecord(project, parser, rootColumnGroup, parameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void processRecordWrapper(Project project, TreeReader parser, ImportColumnGroup rootColumnGroup,
|
public void processRecordWrapper(Project project, TreeReader parser, ImportColumnGroup rootColumnGroup,
|
||||||
boolean trimStrings, boolean storeEmptyStrings, boolean guessDataType)
|
boolean trimStrings, boolean storeEmptyStrings, boolean guessDataType)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
super.processRecord(project, parser, rootColumnGroup,
|
super.processRecord(project, parser, rootColumnGroup, trimStrings, storeEmptyStrings, guessDataType);
|
||||||
new ImportParameters(trimStrings, storeEmptyStrings, guessDataType));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCellWrapper(Project project, ImportColumnGroup columnGroup, ImportRecord record, String columnLocalName, Serializable value, int commonStartingRowIndex) {
|
public void addCellWrapper(Project project, ImportColumnGroup columnGroup, ImportRecord record,
|
||||||
|
String columnLocalName, Serializable value, int commonStartingRowIndex) {
|
||||||
super.addCell(project, columnGroup, record, columnLocalName, value);
|
super.addCell(project, columnGroup, record, columnLocalName, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCellWrapper(Project project, ImportColumnGroup columnGroup, ImportRecord record, String columnLocalName, String text, int commonStartingRowIndex, boolean trimStrings, boolean storeEmptyStrings) {
|
public void addCellWrapper(Project project, ImportColumnGroup columnGroup, ImportRecord record,
|
||||||
|
String columnLocalName, String text, int commonStartingRowIndex, boolean trimStrings,
|
||||||
|
boolean storeEmptyStrings) {
|
||||||
super.addCell(project, columnGroup, record, columnLocalName, text, trimStrings, storeEmptyStrings);
|
super.addCell(project, columnGroup, record, columnLocalName, text, trimStrings, storeEmptyStrings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -207,6 +207,33 @@ public class XmlImportUtilitiesTests extends RefineTest {
|
|||||||
public void importTreeDataXmlTest(){
|
public void importTreeDataXmlTest(){
|
||||||
loadSampleXml();
|
loadSampleXml();
|
||||||
|
|
||||||
|
String[] recordPath = new String[]{"library","book"};
|
||||||
|
try {
|
||||||
|
XmlImportUtilitiesStub.importTreeData(createXmlParser(), project, recordPath, columnGroup, -1,
|
||||||
|
false, true, false);
|
||||||
|
} catch (Exception e){
|
||||||
|
Assert.fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
assertProjectCreated(project, 0, 6);
|
||||||
|
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.size(), 4);
|
||||||
|
|
||||||
|
Assert.assertEquals(columnGroup.subgroups.size(), 1);
|
||||||
|
Assert.assertNotNull(columnGroup.subgroups.get("book"));
|
||||||
|
Assert.assertEquals(columnGroup.subgroups.get("book").subgroups.size(), 3);
|
||||||
|
Assert.assertNotNull(columnGroup.subgroups.get("book").subgroups.get("author"));
|
||||||
|
Assert.assertNotNull(columnGroup.subgroups.get("book").subgroups.get("title"));
|
||||||
|
Assert.assertNotNull(columnGroup.subgroups.get("book").subgroups.get("publish_date"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test of deprecated method which can go away when it does
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void importTreeDataXmlTestDeprecated(){
|
||||||
|
loadSampleXml();
|
||||||
|
|
||||||
String[] recordPath = new String[]{"library","book"};
|
String[] recordPath = new String[]{"library","book"};
|
||||||
try {
|
try {
|
||||||
XmlImportUtilitiesStub.importTreeData(createXmlParser(), project, recordPath, columnGroup, -1,
|
XmlImportUtilitiesStub.importTreeData(createXmlParser(), project, recordPath, columnGroup, -1,
|
||||||
@ -231,6 +258,39 @@ public class XmlImportUtilitiesTests extends RefineTest {
|
|||||||
public void importXmlWithVaryingStructureTest(){
|
public void importXmlWithVaryingStructureTest(){
|
||||||
loadData(XmlImporterTests.getSampleWithVaryingStructure());
|
loadData(XmlImporterTests.getSampleWithVaryingStructure());
|
||||||
|
|
||||||
|
String[] recordPath = new String[]{"library", "book"};
|
||||||
|
try {
|
||||||
|
XmlImportUtilitiesStub.importTreeData(createXmlParser(), project, recordPath, columnGroup, -1,
|
||||||
|
false, true, false);
|
||||||
|
} catch (Exception e){
|
||||||
|
Assert.fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
assertProjectCreated(project, 0, 6);
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.size(), 4);
|
||||||
|
Assert.assertEquals(project.rows.get(5).cells.size(), 5);
|
||||||
|
|
||||||
|
Assert.assertEquals(columnGroup.subgroups.size(), 1);
|
||||||
|
Assert.assertEquals(columnGroup.name, "");
|
||||||
|
ImportColumnGroup book = columnGroup.subgroups.get("book");
|
||||||
|
Assert.assertNotNull(book);
|
||||||
|
Assert.assertEquals(book.columns.size(), 1);
|
||||||
|
Assert.assertEquals(book.subgroups.size(), 4);
|
||||||
|
Assert.assertNotNull(book.subgroups.get("author"));
|
||||||
|
Assert.assertEquals(book.subgroups.get("author").columns.size(), 1);
|
||||||
|
Assert.assertNotNull(book.subgroups.get("title"));
|
||||||
|
Assert.assertNotNull(book.subgroups.get("publish_date"));
|
||||||
|
Assert.assertNotNull(book.subgroups.get("genre"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test using deprecated method which can go away when it does
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void importXmlWithVaryingStructureTestDeprecated(){
|
||||||
|
loadData(XmlImporterTests.getSampleWithVaryingStructure());
|
||||||
|
|
||||||
String[] recordPath = new String[]{"library", "book"};
|
String[] recordPath = new String[]{"library", "book"};
|
||||||
try {
|
try {
|
||||||
XmlImportUtilitiesStub.importTreeData(createXmlParser(), project, recordPath, columnGroup, -1,
|
XmlImportUtilitiesStub.importTreeData(createXmlParser(), project, recordPath, columnGroup, -1,
|
||||||
@ -289,7 +349,7 @@ public class XmlImportUtilitiesTests extends RefineTest {
|
|||||||
int pathIndex = 0;
|
int pathIndex = 0;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
SUT.findRecordWrapper(project, parser, recordPath, pathIndex, columnGroup,
|
SUT.findRecordWrapper(project, parser, recordPath, pathIndex, columnGroup, -1,
|
||||||
false, false, false);
|
false, false, false);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Assert.fail();
|
Assert.fail();
|
||||||
@ -301,6 +361,32 @@ public class XmlImportUtilitiesTests extends RefineTest {
|
|||||||
//TODO
|
//TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test of deprecated wrapper method which can go away when it does
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void findRecordTestXmlDeprecated(){
|
||||||
|
loadSampleXml();
|
||||||
|
createXmlParser();
|
||||||
|
ParserSkip();
|
||||||
|
|
||||||
|
String[] recordPath = new String[]{"library","book"};
|
||||||
|
int pathIndex = 0;
|
||||||
|
|
||||||
|
try {
|
||||||
|
SUT.findRecordWrapper(project, parser, recordPath, pathIndex, columnGroup, -1,
|
||||||
|
new ImportParameters(false, false, false));
|
||||||
|
} catch (Exception e) {
|
||||||
|
Assert.fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
assertProjectCreated(project, 0, 6);
|
||||||
|
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.size(), 4);
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void processRecordTestXml(){
|
public void processRecordTestXml(){
|
||||||
loadData("<?xml version=\"1.0\"?><library><book id=\"1\"><author>author1</author><genre>genre1</genre></book></library>");
|
loadData("<?xml version=\"1.0\"?><library><book id=\"1\"><author>author1</author><genre>genre1</genre></book></library>");
|
||||||
@ -377,7 +463,7 @@ public class XmlImportUtilitiesTests extends RefineTest {
|
|||||||
ParserSkip();
|
ParserSkip();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
SUT.ProcessSubRecordWrapper(project, parser, columnGroup, record,0,
|
SUT.processSubRecordWrapper(project, parser, columnGroup, record,0,
|
||||||
new ImportParameters(false, false, false));
|
new ImportParameters(false, false, false));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Assert.fail();
|
Assert.fail();
|
||||||
|
Loading…
Reference in New Issue
Block a user