diff --git a/src/main/java/com/metaweb/gridworks/commands/edit/CreateProjectCommand.java b/src/main/java/com/metaweb/gridworks/commands/edit/CreateProjectCommand.java index c7564a6b5..289c148a8 100644 --- a/src/main/java/com/metaweb/gridworks/commands/edit/CreateProjectCommand.java +++ b/src/main/java/com/metaweb/gridworks/commands/edit/CreateProjectCommand.java @@ -90,6 +90,8 @@ public class CreateProjectCommand extends Command { String url = null; int limit = -1; + int skip = 0; + if (options.containsKey("limit")) { String s = options.getProperty("limit"); try { @@ -97,6 +99,13 @@ public class CreateProjectCommand extends Command { } catch (Exception e) { } } + if (options.containsKey("skip")) { + String s = options.getProperty("skip"); + try { + skip = Integer.parseInt(s); + } catch (Exception e) { + } + } while ((part = parser.readNextPart()) != null) { @@ -108,14 +117,14 @@ public class CreateProjectCommand extends Command { if (importer.takesReader()) { Reader reader = new InputStreamReader(filePart.getInputStream()); try { - importer.read(reader, project, options, limit); + importer.read(reader, project, options, skip, limit); } finally { reader.close(); } } else { InputStream inputStream = filePart.getInputStream(); try { - importer.read(inputStream, project, options, limit); + importer.read(inputStream, project, options, skip, limit); } finally { inputStream.close(); } @@ -126,7 +135,7 @@ public class CreateProjectCommand extends Command { if (paramName.equals("raw-text")) { StringReader reader = new StringReader(paramPart.getStringValue()); try { - new TsvCsvImporter().read(reader, project, options, limit); + new TsvCsvImporter().read(reader, project, options, skip, limit); } finally { reader.close(); } @@ -139,7 +148,7 @@ public class CreateProjectCommand extends Command { } if (url != null && url.length() > 0) { - internalImportURL(request, project, options, url, limit); + internalImportURL(request, project, options, url, skip, limit); } } } @@ -149,6 +158,7 @@ public class CreateProjectCommand extends Command { Project project, Properties options, String urlString, + int skip, int limit ) throws Exception { URL url = new URL(urlString); @@ -182,9 +192,9 @@ public class CreateProjectCommand extends Command { Reader reader = new InputStreamReader( inputStream, (encoding == null) ? "ISO-8859-1" : encoding); - importer.read(reader, project, options, limit); + importer.read(reader, project, options, skip, limit); } else { - importer.read(inputStream, project, options, limit); + importer.read(inputStream, project, options, skip, limit); } } finally { inputStream.close(); diff --git a/src/main/java/com/metaweb/gridworks/importers/ExcelImporter.java b/src/main/java/com/metaweb/gridworks/importers/ExcelImporter.java index 8e2ad744f..b9f2f99b7 100644 --- a/src/main/java/com/metaweb/gridworks/importers/ExcelImporter.java +++ b/src/main/java/com/metaweb/gridworks/importers/ExcelImporter.java @@ -29,14 +29,14 @@ public class ExcelImporter implements Importer { return false; } - public void read(Reader reader, Project project, Properties options, int limit) + public void read(Reader reader, Project project, Properties options, int skip, int limit) throws Exception { throw new NotImplementedException(); } public void read(InputStream inputStream, Project project, - Properties options, int limit) throws Exception { + Properties options, int skip, int limit) throws Exception { Workbook wb = _xmlBased ? new XSSFWorkbook(inputStream) : @@ -99,6 +99,7 @@ public class ExcelImporter implements Importer { /* * Now process the data rows */ + int rowsWithData = 0; for (; r <= lastRow; r++) { org.apache.poi.ss.usermodel.Row row = sheet.getRow(r); if (row == null) { @@ -149,10 +150,14 @@ public class ExcelImporter implements Importer { } if (hasData) { - project.rows.add(newRow); - if (limit > 0 && project.rows.size() >= limit) { - break; - } + rowsWithData++; + + if (skip <= 0 || rowsWithData > skip) { + project.rows.add(newRow); + if (limit > 0 && project.rows.size() >= limit) { + break; + } + } } } } diff --git a/src/main/java/com/metaweb/gridworks/importers/Importer.java b/src/main/java/com/metaweb/gridworks/importers/Importer.java index da6ae2f34..af3e645c6 100644 --- a/src/main/java/com/metaweb/gridworks/importers/Importer.java +++ b/src/main/java/com/metaweb/gridworks/importers/Importer.java @@ -9,6 +9,6 @@ import com.metaweb.gridworks.model.Project; public interface Importer { public boolean takesReader(); - public void read(Reader reader, Project project, Properties options, int limit) throws Exception; - public void read(InputStream inputStream, Project project, Properties options, int limit) throws Exception; + public void read(Reader reader, Project project, Properties options, int skip, int limit) throws Exception; + public void read(InputStream inputStream, Project project, Properties options, int skip, int limit) throws Exception; } diff --git a/src/main/java/com/metaweb/gridworks/importers/TsvCsvImporter.java b/src/main/java/com/metaweb/gridworks/importers/TsvCsvImporter.java index def3c0545..d146616f5 100644 --- a/src/main/java/com/metaweb/gridworks/importers/TsvCsvImporter.java +++ b/src/main/java/com/metaweb/gridworks/importers/TsvCsvImporter.java @@ -13,7 +13,7 @@ import com.metaweb.gridworks.model.Row; public class TsvCsvImporter implements Importer { - public void read(Reader reader, Project project, Properties options, int limit) + public void read(Reader reader, Project project, Properties options, int skip, int limit) throws Exception { LineNumberReader lnReader = new LineNumberReader(reader); @@ -23,6 +23,7 @@ public class TsvCsvImporter implements Importer { boolean first = true; int cellCount = 1; + int rowsWithData = 0; while ((line = lnReader.readLine()) != null) { if (line.trim().length() == 0) { continue; @@ -57,12 +58,16 @@ public class TsvCsvImporter implements Importer { Row row = new Row(cellCount); if ((sep.charAt(0) == ',') ? ImporterUtilities.parseCSVIntoRow(row, line) : ImporterUtilities.parseTSVIntoRow(row, line)) { - project.rows.add(row); - project.columnModel.setMaxCellIndex(Math.max(project.columnModel.getMaxCellIndex(), row.cells.size())); - - if (limit > 0 && project.rows.size() >= limit) { - break; - } + rowsWithData++; + + if (skip <= 0 || rowsWithData > skip) { + project.rows.add(row); + project.columnModel.setMaxCellIndex(Math.max(project.columnModel.getMaxCellIndex(), row.cells.size())); + + if (limit > 0 && project.rows.size() >= limit) { + break; + } + } } } } @@ -72,7 +77,7 @@ public class TsvCsvImporter implements Importer { } public void read(InputStream inputStream, Project project, - Properties options, int limit) throws Exception { + Properties options, int skip, int limit) throws Exception { throw new NotImplementedException(); } diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html index ca822fa2a..3191d15b9 100644 --- a/src/main/webapp/index.html +++ b/src/main/webapp/index.html @@ -1,3 +1 @@ -
Create a new project by uploading a tab-separated value or comma-separated value file.
Create a new project by uploading a tab-separated value or comma-separated value file.
last modified |
last modified |