Hi Kasper,

You are welcome. I'm using the library for some tasks, any other problem
I'll let you know.

Thanks,
Junior


2014-07-18 5:22 GMT-03:00 Kasper Sørensen <[email protected]>:

> Hi Junior,
>
> I just committed/pushed the fix now. Thank you a ton for your contribution!
>
> Kasper
>
>
> 2014-07-17 17:03 GMT+02:00 Kasper Sørensen <[email protected]
> >:
>
> > We still need a bit of finishing off on the next MetaModel release, so I
> > would say a few weeks at least.
> >
> > Mentors, is there a way we can make a kind of promoted build or something
> > like that? I guess when contributors like Junior has an addition and it
> is
> > validated, they would like to be able to consume it as soon as possible?
> >
> >
> > 2014-07-17 15:22 GMT+02:00 Júnior <[email protected]>:
> >
> > It looks nice to me :)
> >>
> >> When do you think this could be available on maven central reppository?
> >>
> >> Thanks,
> >> Junior
> >>
> >>
> >> 2014-07-17 10:16 GMT-03:00 Kasper Sørensen <
> >> [email protected]>:
> >>
> >> > Hi Junior,
> >> >
> >> > I guess the test is now breaking because there are two columns, but
> you
> >> > assert that there are none. I think actually your fix worked, but the
> >> > unittest is invalid.
> >> >
> >> > I rewrote the test to do these assertions, which work and to me looks
> >> > correct:
> >> >
> >> >     public void testEmptyFileNoColumnHeaderLine() throws Exception {
> >> >         final File file = new
> >> > File("target/testEmptyFileNoColumnHeaderLine.csv");
> >> >         FileHelper.copy(new File("src/test/resources/empty_file.csv"),
> >> > file);
> >> >
> >> >         CsvConfiguration csvConfiguration = new
> >> > CsvConfiguration(CsvConfiguration.NO_COLUMN_NAME_LINE,
> >> >                 FileHelper.DEFAULT_ENCODING,
> >> > CsvConfiguration.DEFAULT_SEPARATOR_CHAR, CsvConfiguration.NOT_A_CHAR,
> >> >                 CsvConfiguration.DEFAULT_ESCAPE_CHAR);
> >> >         final CsvDataContext dc = new CsvDataContext(file,
> >> > csvConfiguration);
> >> >         assertEquals(1, dc.getDefaultSchema().getTableCount());
> >> >
> >> >         dc.executeUpdate(new UpdateScript() {
> >> >
> >> >             @Override
> >> >             public void run(UpdateCallback callback) {
> >> >                 callback.createTable(dc.getDefaultSchema(),
> >> > "new_table").withColumn("COL_1").withColumn("COL_2")
> >> >                         .execute();
> >> >                 callback.insertInto("new_table").value(0,
> "1").value(1,
> >> > 2).execute();
> >> >             }
> >> >         });
> >> >
> >> >         CsvDataContext dc1 = new CsvDataContext(file,
> csvConfiguration);
> >> >
> >> >         Table[] tables = dc1.getDefaultSchema().getTables();
> >> >         assertEquals(1, tables.length);
> >> >
> >> >         Table table = tables[0];
> >> >         assertEquals("testEmptyFileNoColumnHeaderLine.csv",
> >> > table.getName());
> >> >         assertEquals(2, table.getColumnCount());
> >> >
> >> >         DataSet ds = dc1.query().from(table).selectAll().execute();
> >> >         assertTrue(ds.next());
> >> >         assertEquals("Row[values=[1, 2]]", ds.getRow().toString());
> >> >         assertFalse(ds.next());
> >> >         ds.close();
> >> >     }
> >> >
> >> > What do you think?
> >> >
> >> >
> >> > 2014-07-17 14:48 GMT+02:00 Júnior <[email protected]>:
> >> >
> >> > > Hi Kasper,
> >> > >
> >> > > After some fight, I was able to write on an empty CSV, I needed to
> >> change
> >> > > the :
> >> > > CsvCreateTableBuilder.java
> >> > >
> >> > > public Table execute() {
> >> > >         CsvUpdateCallback csvUpdateCallback = getUpdateCallback();
> >> > >
> >> > >         MutableTable table = getTable();
> >> > >         String[] columnNames = table.getColumnNames();
> >> > >
> >> > >         CsvDataContext csvDataContext =
> >> > > (CsvDataContext)csvUpdateCallback.getDataContext();
> >> > >
> >> > >
> >> if(csvDataContext.getConfiguration().getColumnNameLineNumber() !=
> >> > >                         CsvConfiguration.NO_COLUMN_NAME_LINE) {
> >> > >                 csvUpdateCallback.writeRow(columnNames, false);
> >> > >         }
> >> > >
> >> > >         CsvSchema schema = (CsvSchema) table.getSchema();
> >> > >         CsvTable csvTable = new CsvTable(schema, table.getName(),
> >> > > table.getColumnNames());
> >> > >         schema.setTable(csvTable);
> >> > >         return csvTable;
> >> > >     }
> >> > >
> >> > >
> >> > > Then I've changed the
> >> > >
> >> > > CsvDataContextTest.testEmptyFile
> >> > >
> >> > > public void testEmptyFile() throws Exception {
> >> > >         CsvConfiguration csvConfiguration =
> >> > >         new CsvConfiguration(CsvConfiguration.NO_COLUMN_NAME_LINE,
> >> > > FileHelper.DEFAULT_ENCODING,
> CsvConfiguration.DEFAULT_SEPARATOR_CHAR,
> >> > > CsvConfiguration.NOT_A_CHAR,
> >> > >                         CsvConfiguration.DEFAULT_ESCAPE_CHAR);
> >> > >         final CsvDataContext dc = new CsvDataContext(new
> >> > > File("src/test/resources/empty_file.csv"), csvConfiguration);
> >> > >         assertEquals(1, dc.getDefaultSchema().getTableCount());
> >> > >
> >> > >         dc.executeUpdate(new UpdateScript() {
> >> > >
> >> > >                         @Override
> >> > >                         public void run(UpdateCallback callback) {
> >> > >
> >> > callback.createTable(dc.getDefaultSchema(),
> >> > > "new_table").withColumn("COL_1").withColumn("COL_2").execute();
> >> > >
> >> callback.insertInto("new_table").value(0,
> >> > > "1").value(1, 2).execute();
> >> > >                         }
> >> > >                 });
> >> > >         CsvDataContext dc1 = new CsvDataContext(new
> >> > > File("src/test/resources/empty_file.csv"), csvConfiguration);
> >> > >
> >> > >
> >> >
> >>
> System.out.println(dc1.query().from("empty_file.csv").selectAll().execute().toRows().size());
> >> > >
> >> > >         Table table = dc1.getDefaultSchema().getTables()[0];
> >> > >         assertEquals("empty_file.csv", table.getName());
> >> > >         assertEquals(0, table.getColumnCount());
> >> > >     }
> >> > >
> >> > >
> >> > > The test is breaking, but it wrote the lines in the empty csv.
> >> > >
> >> > > One thing I notice is that when we call the dropTable, if the
> >> > > DataContext was created pointing to a file, it simply delete the
> file,
> >> > > and that's the why I'm not calling it.
> >> > >
> >> > > Do you think it is working as expected after this change?
> >> > >
> >> > > Thanks,
> >> > >
> >> > > Junior
> >> > >
> >> > >
> >> > >
> >> > > 2014-07-16 18:29 GMT-03:00 Kasper Sørensen <
> >> > [email protected]
> >> > > >:
> >> > >
> >> > > > I think you're right about that. Would you be able to maybe give
> it
> >> a
> >> > > shot?
> >> > > > We can add a unittest for this particular case to show if it
> works.
> >> > > >
> >> > > >
> >> > > > 2014-07-16 23:26 GMT+02:00 Júnior <[email protected]>:
> >> > > >
> >> > > > > As I could see it is not possible to create without header
> >> because of
> >> > > > this
> >> > > > > line on CsvCreateTableBuilder:
> >> > > > >
> >> > > > >  csvUpdateCallback.writeRow(columnNames, false);
> >> > > > >
> >> > > > > on execute method, it is always creating the header column,
> maybe
> >> > just
> >> > > a
> >> > > > if
> >> > > > > before that would fix that
> >> > > > >
> >> > > > >
> >> > > > >
> >> > > > > 2014-07-16 18:22 GMT-03:00 Kasper Sørensen <
> >> > > > [email protected]
> >> > > > > >:
> >> > > > >
> >> > > > > > I'm just now simultaniously looking into the MM csv code ... I
> >> get
> >> > > the
> >> > > > > > feeling you're maybe a bit in untested territory. At least it
> >> seems
> >> > > > that
> >> > > > > > CsvDataContextTest does not exhibit a lot of test cases around
> >> > having
> >> > > > no
> >> > > > > > column headers ... Might be we need your feedback here if
> there
> >> are
> >> > > > > issues.
> >> > > > > >
> >> > > > > >
> >> > > > > > 2014-07-16 23:19 GMT+02:00 Kasper Sørensen <
> >> > > > > [email protected]
> >> > > > > > >:
> >> > > > > >
> >> > > > > > > Ah, you want a header-less CSV file? You then need to
> >> instantiate
> >> > > > your
> >> > > > > > > CsvDataContext with a CsvConfiguration that
> >> > > > > > > specifies CsvConfiguration.NO_COLUMN_NAME_LINE as the
> >> > > > > > > 'columnNameLineNumber' property. If you otherwise want
> >> defaults,
> >> > > that
> >> > > > > > would
> >> > > > > > > be like this:
> >> > > > > > >
> >> > > > > > > new CsvConfiguration(CsvConfiguration.NO_COLUMN_NAME_LINE);
> >> > > > > > >
> >> > > > > > >
> >> > > > > > > 2014-07-16 23:14 GMT+02:00 Júnior <[email protected]>:
> >> > > > > > >
> >> > > > > > > Right, what I'd like to know is to create the table without
> >> the
> >> > > > > header, I
> >> > > > > > >> think the only way would be changing the
> >> CsvCreateTableBuilder.
> >> > > > > > >> Thanks,
> >> > > > > > >>
> >> > > > > > >>
> >> > > > > > >>
> >> > > > > > >> 2014-07-16 18:12 GMT-03:00 Kasper Sørensen <
> >> > > > > > >> [email protected]>:
> >> > > > > > >>
> >> > > > > > >> > Hmm actually I just now realized that you can completely
> >> omit
> >> > > the
> >> > > > > Drop
> >> > > > > > >> > Table part ... if you use create table on an empty file,
> it
> >> > will
> >> > > > > > simply
> >> > > > > > >> > create the header.
> >> > > > > > >> >
> >> > > > > > >> >
> >> > > > > > >> > 2014-07-16 23:10 GMT+02:00 Kasper Sørensen <
> >> > > > > > >> [email protected]
> >> > > > > > >> > >:
> >> > > > > > >> >
> >> > > > > > >> > > Yes, you do that while creating the table. Like this:
> >> > > > > > >> > >
> >> > > > > > >> > >         CsvDataContext dc = ...;
> >> > > > > > >> > >         dc.executeUpdate(new UpdateScript() {
> >> > > > > > >> > >             @Override
> >> > > > > > >> > >             public void run(UpdateCallback callback) {
> >> > > > > > >> > >
> >> > > > > > callback.dropTable(dc.getDefaultSchema().getTable(0));
> >> > > > > > >> > >
> >> > > > > > >> > >
> >> callback.createTable(dc.getDefaultSchema(),
> >> > > > > > >> > >
> >> "newtable").withColumn("foo").withColumn("bar").execute();
> >> > > > > > >> > >             }
> >> > > > > > >> > >         });
> >> > > > > > >> > >
> >> > > > > > >> > > (replace with your own column names of course)
> >> > > > > > >> > >
> >> > > > > > >> > >
> >> > > > > > >> > > 2014-07-16 23:04 GMT+02:00 Júnior <[email protected]
> >:
> >> > > > > > >> > >
> >> > > > > > >> > > Hi Kasper,
> >> > > > > > >> > >>
> >> > > > > > >> > >> thanks for your reply, but what about the columns?
> >> > > > > > >> > >>
> >> > > > > > >> > >> Do I need to add columns to this newly created table?
> >> > > > > > >> > >>
> >> > > > > > >> > >> Att.
> >> > > > > > >> > >>
> >> > > > > > >> > >>
> >> > > > > > >> > >> 2014-07-16 18:00 GMT-03:00 Kasper Sørensen <
> >> > > > > > >> > >> [email protected]>:
> >> > > > > > >> > >>
> >> > > > > > >> > >> > Hi there,
> >> > > > > > >> > >> >
> >> > > > > > >> > >> > There is a little known trick to get around that
> >> issue,
> >> > so
> >> > > I
> >> > > > > > guess
> >> > > > > > >> > it's
> >> > > > > > >> > >> a
> >> > > > > > >> > >> > very fair question.
> >> > > > > > >> > >> >
> >> > > > > > >> > >> > The trick is to first do a drop table, and then a
> new
> >> > > create
> >> > > > > > table.
> >> > > > > > >> > >> >
> >> > > > > > >> > >> > When MM is initialized with an existing empty file,
> it
> >> > will
> >> > > > > > >> determine
> >> > > > > > >> > >> that
> >> > > > > > >> > >> > there IS a table, since the file is there, but that
> >> table
> >> > > has
> >> > > > > no
> >> > > > > > >> > >> columns,
> >> > > > > > >> > >> > because the file does not define any columns. Maybe
> >> it's
> >> > a
> >> > > > bit
> >> > > > > > >> silly
> >> > > > > > >> > - I
> >> > > > > > >> > >> > actually think that's worth discussing ... But the
> >> reason
> >> > > it
> >> > > > is
> >> > > > > > >> there
> >> > > > > > >> > >> is I
> >> > > > > > >> > >> > guess to indicate that at least the file is there,
> >> it's
> >> > > not a
> >> > > > > > >> > >> non-existing
> >> > > > > > >> > >> > file (in which case there would not be any table).
> >> > > > > > >> > >> >
> >> > > > > > >> > >> > Best regards,
> >> > > > > > >> > >> > Kasper
> >> > > > > > >> > >> >
> >> > > > > > >> > >> >
> >> > > > > > >> > >> > 2014-07-16 21:37 GMT+02:00 Júnior <
> >> [email protected]>:
> >> > > > > > >> > >> >
> >> > > > > > >> > >> > > Hi,
> >> > > > > > >> > >> > >
> >> > > > > > >> > >> > > I'm trying to use the metamodel to write on an
> empty
> >> > csv,
> >> > > > > > >> > >> > >
> >> > > > > > >> > >> > > But I'm getting errors saying that there is no
> >> column.
> >> > > > > > >> > >> > >
> >> > > > > > >> > >> > > I was able to do that calling create table with a
> >> > > different
> >> > > > > > name
> >> > > > > > >> > from
> >> > > > > > >> > >> the
> >> > > > > > >> > >> > > file.
> >> > > > > > >> > >> > > Then added the columns.
> >> > > > > > >> > >> > >
> >> > > > > > >> > >> > > I worked, but it created the header line with the
> >> > column
> >> > > > > names,
> >> > > > > > >> > would
> >> > > > > > >> > >> it
> >> > > > > > >> > >> > be
> >> > > > > > >> > >> > > possible to do that without adding the column
> names
> >> in
> >> > > the
> >> > > > > csv
> >> > > > > > >> file?
> >> > > > > > >> > >> > >
> >> > > > > > >> > >> > > Att.
> >> > > > > > >> > >> > > --
> >> > > > > > >> > >> > > Francisco Ribeiro
> >> > > > > > >> > >> > > *SCEA|SCJP|SCWCD|IBM Certified SOA Associate*
> >> > > > > > >> > >> > >
> >> > > > > > >> > >> >
> >> > > > > > >> > >>
> >> > > > > > >> > >>
> >> > > > > > >> > >>
> >> > > > > > >> > >> --
> >> > > > > > >> > >> Francisco Ribeiro
> >> > > > > > >> > >> *SCEA|SCJP|SCWCD|IBM Certified SOA Associate*
> >> > > > > > >> > >>
> >> > > > > > >> > >
> >> > > > > > >> > >
> >> > > > > > >> >
> >> > > > > > >>
> >> > > > > > >>
> >> > > > > > >>
> >> > > > > > >> --
> >> > > > > > >> Francisco Ribeiro
> >> > > > > > >> *SCEA|SCJP|SCWCD|IBM Certified SOA Associate*
> >> > > > > > >>
> >> > > > > > >
> >> > > > > > >
> >> > > > > >
> >> > > > >
> >> > > > >
> >> > > > >
> >> > > > > --
> >> > > > > Francisco Ribeiro
> >> > > > > *SCEA|SCJP|SCWCD|IBM Certified SOA Associate*
> >> > > > >
> >> > > >
> >> > >
> >> > >
> >> > >
> >> > > --
> >> > > Francisco Ribeiro
> >> > > *SCEA|SCJP|SCWCD|IBM Certified SOA Associate*
> >> > >
> >> >
> >>
> >>
> >>
> >> --
> >> Francisco Ribeiro
> >> *SCEA|SCJP|SCWCD|IBM Certified SOA Associate*
> >>
> >
> >
>



-- 
Francisco Ribeiro
*SCEA|SCJP|SCWCD|IBM Certified SOA Associate*

Reply via email to