Search in sources :

Example 1 with Column

use of org.molgenis.oneclickimporter.model.Column in project molgenis by molgenis.

the class OneClickImporterServiceImpl method buildDataCollectionsFromExcel.

@Override
public List<DataCollection> buildDataCollectionsFromExcel(List<Sheet> sheets) {
    List<DataCollection> dataCollections = newArrayList();
    sheets.forEach(sheet -> {
        List<Column> columns = newArrayList();
        Row headerRow = sheet.getRow(0);
        headerRow.cellIterator().forEachRemaining(cell -> columns.add(createColumnFromCell(sheet, cell)));
        dataCollections.add(DataCollection.create(sheet.getSheetName(), columns));
    });
    return dataCollections;
}
Also used : DataCollection(org.molgenis.oneclickimporter.model.DataCollection) Column(org.molgenis.oneclickimporter.model.Column) Row(org.apache.poi.ss.usermodel.Row)

Example 2 with Column

use of org.molgenis.oneclickimporter.model.Column in project molgenis by molgenis.

the class OneClickImporterServiceTest method testBuildDataSheetBuildsColumnsOfEqualLength.

@Test
public void testBuildDataSheetBuildsColumnsOfEqualLength() throws IOException, InvalidFormatException, URISyntaxException, EmptySheetException {
    List<Sheet> sheets = loadSheetFromFile(OneClickImporterServiceTest.class, "/valid-with-blank-values.xlsx");
    DataCollection actual = oneClickImporterService.buildDataCollectionsFromExcel(sheets).get(0);
    Column c1 = Column.create("name", 0, newArrayList("Mark", "Bart", "Tommy", "Sido", "Connor", null));
    Column c2 = Column.create("favorite food", 1, newArrayList("Fries", null, "Vegan food", "Pizza", null, "Spinache"));
    DataCollection expected = DataCollection.create("Sheet1", newArrayList(c1, c2));
    assertEquals(actual, expected);
    assertEquals(6, c1.getDataValues().size());
    assertEquals(6, c2.getDataValues().size());
}
Also used : DataCollection(org.molgenis.oneclickimporter.model.DataCollection) Column(org.molgenis.oneclickimporter.model.Column) Sheet(org.apache.poi.ss.usermodel.Sheet) Test(org.testng.annotations.Test)

Example 3 with Column

use of org.molgenis.oneclickimporter.model.Column in project molgenis by molgenis.

the class OneClickImporterServiceTest method testBuildDataSheetWithDates.

@Test
public void testBuildDataSheetWithDates() throws IOException, InvalidFormatException, URISyntaxException, EmptySheetException {
    List<Sheet> sheets = loadSheetFromFile(OneClickImporterServiceTest.class, "/valid-with-dates.xlsx");
    DataCollection actual = oneClickImporterService.buildDataCollectionsFromExcel(sheets).get(0);
    Column c1 = Column.create("dates", 0, newArrayList("2018-01-03T00:00", "2018-01-04T00:00", "2018-01-05T00:00", "2018-01-06T00:00", "2018-01-07T00:00"));
    Column c2 = Column.create("event", 1, newArrayList("being cool day", "bike day", "sleep day", "bye bye day", "work day"));
    DataCollection expected = DataCollection.create("Sheet1", newArrayList(c1, c2));
    assertEquals(actual, expected);
}
Also used : DataCollection(org.molgenis.oneclickimporter.model.DataCollection) Column(org.molgenis.oneclickimporter.model.Column) Sheet(org.apache.poi.ss.usermodel.Sheet) Test(org.testng.annotations.Test)

Example 4 with Column

use of org.molgenis.oneclickimporter.model.Column in project molgenis by molgenis.

the class OneClickImporterServiceTest method testBuildDataSheetWithComplexFile.

@Test
public void testBuildDataSheetWithComplexFile() throws IOException, InvalidFormatException, URISyntaxException, EmptySheetException {
    List<Sheet> sheets = loadSheetFromFile(OneClickImporterServiceTest.class, "/complex-valid.xlsx");
    DataCollection actual = oneClickImporterService.buildDataCollectionsFromExcel(sheets).get(0);
    Column c1 = Column.create("first name", 0, newArrayList("Mark", "Fleur", "Dennis", "Bart", "Sido", "Mariska", "Tommy", "Connor", "Piet", "Jan"));
    Column c2 = Column.create("last name", 1, newArrayList("de Haan", "Kelpin", "Hendriksen", "Charbon", "Haakma", "Slofstra", "de Boer", "Stroomberg", "Klaassen", null));
    Column c3 = Column.create("full name", 2, newArrayList("Mark de Haan", "Fleur Kelpin", "Dennis Hendriksen", "Bart Charbon", "Sido Haakma", "Mariska Slofstra", "Tommy de Boer", "Connor Stroomberg", "Piet Klaassen", null));
    Column c4 = Column.create("UMCG employee", 3, newArrayList(true, true, true, true, true, true, true, true, false, false));
    Column c5 = Column.create("Age", 4, newArrayList(26.0, null, null, null, null, 22.0, 27.0, null, 53.0, 32.0));
    DataCollection expected = DataCollection.create("Sheet1", newArrayList(c1, c2, c3, c4, c5));
    assertEquals(actual, expected);
}
Also used : DataCollection(org.molgenis.oneclickimporter.model.DataCollection) Column(org.molgenis.oneclickimporter.model.Column) Sheet(org.apache.poi.ss.usermodel.Sheet) Test(org.testng.annotations.Test)

Example 5 with Column

use of org.molgenis.oneclickimporter.model.Column in project molgenis by molgenis.

the class OneClickImporterServiceTest method testIsFirstColumnUnique.

@Test
public void testIsFirstColumnUnique() {
    Column column = Column.create("col", 0, Arrays.asList(1, 2, 3));
    assertTrue(oneClickImporterService.hasUniqueValues(column), "should return true for unique int list");
    column = Column.create("col", 0, Arrays.asList("a", "b", "c"));
    assertTrue(oneClickImporterService.hasUniqueValues(column), "should return true for unique string list");
    column = Column.create("col", 0, Arrays.asList(1, 2, 1));
    assertFalse(oneClickImporterService.hasUniqueValues(column), "should return false for non-unique int list");
    column = Column.create("col", 0, Arrays.asList(1, null, 2));
    assertFalse(oneClickImporterService.hasUniqueValues(column), "should return false a list containing null's ");
    column = Column.create("col", 0, Arrays.asList(1, "1"));
    assertFalse(oneClickImporterService.hasUniqueValues(column), "should return false if types differ ");
}
Also used : Column(org.molgenis.oneclickimporter.model.Column) Test(org.testng.annotations.Test)

Aggregations

Column (org.molgenis.oneclickimporter.model.Column)11 DataCollection (org.molgenis.oneclickimporter.model.DataCollection)9 Test (org.testng.annotations.Test)9 Sheet (org.apache.poi.ss.usermodel.Sheet)5 Entity (org.molgenis.data.Entity)2 OneClickImporterServiceImpl (org.molgenis.oneclickimporter.service.impl.OneClickImporterServiceImpl)2 Row (org.apache.poi.ss.usermodel.Row)1 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)1 AttributeType (org.molgenis.data.meta.AttributeType)1 org.molgenis.data.meta.model (org.molgenis.data.meta.model)1 Package (org.molgenis.data.meta.model.Package)1 EntityServiceImpl (org.molgenis.oneclickimporter.service.impl.EntityServiceImpl)1