Giter VIP home page Giter VIP logo

datatable's Introduction

Hi there ๐Ÿ‘‹

I'm Emmanuel, a developer found of programming and of automation in general.

I'm currently a PhD student at Inria's DiverSE team. I work on the topic of Language Engineering; more specifically I experiment with new ways of making programming languages modular in the aim of making easier to create new languages and to evolve existing ones. Catchy, isn't it? ๐Ÿ˜„

I contribute to open-source projects as much as possible but sadly I haven't had much free time lately.

Emmanuel's GitHub stats

Contributions

I actively contribute to the following projects:

  • Pitclipse is an plug-in for the Eclipse IDE allowing to perform mutation testing on your Java projects. Is is based on PIT (Pitest).
  • ALE (Action Language for EMF is an interpreted action language allowing to define behaviors on top of Ecore models and making them executable right away.

Personal projects

I created the following projects:

  • Discord's Rich Presence for Eclipse IDE is an Eclipse IDE plug-in that updates your Discord's status with the name of the files you're working on. The information shown and the wording are highly customizable.
  • EKumi is a proof-of-concept to experiment with modular and polyglot workflow management systems (WfMS). It is provided as a set of plug-ins for the Eclipse IDE.

datatable's People

datatable's Issues

Methods' preconditions are not checked

As of now, calling a method with improper arguments leads to a non-explicit exception.

This must be replaced by either

  • a fail fast behavior with custom exceptions,
  • data structures like Try and Optional

It is complicated to filter a table's column on several conditions

The Query DSL does not allow to express easily OR conditions.

For instance, in order to keep the rows where the value of the column "A" is either null or a string in lower case, we have to write :

Query
    .select()
    .from(table)
    .where("A").asStr().match(str -> str == null || str.equals(str.toLowerCase());

The built-in methods such as isInstanceOf,in or isTrue cannot be used anymore and must be re-written by the user.

It would be better to write something like :

Query
    .select()
    .from(table)
    .where("A").isNull().or().asStr().isInLowerCase();

or even :

Query
    .select()
    .from(table)
    .where("A").asStr().match(str -> str.isNull() || str.isInLowerCase());

instead.

Either way, the current DSL makes predicate composition difficult and should be adapted.

Lack of tests

Current classes are not tested.

It would be great to add some tests in order to validate current implementation and to avoid possible regressions in future commits.

Query's DSL is not compatible with Oracle's JDK

The following code:

Query
    .from(people)
    .where(n(AGE));

does not compile with javac. The compiler is complaining that:

the method where is ambiguous: the methods 
    where(ColumnId<T>),
    where(ColumnOfNumbers<T>)

both match

Considering that:

  • n clearly returns a ColumnOfNumbers,
  • ColumnOfNumbers inherits from ColumnId
  • Eclipse is able to find to method to call,

I'd assume that javac was able to manage this situation... Apparently not.

Not available through Maven

As of now, the library cannot be set as a dependency through POM.xml

This should be fixed once code coverage becomes sufficient.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.