Giter Club home page Giter Club logo

model-compare's Introduction

model-compare

A model comparison framework for EMF.cloud

Disclaimer This project is a Proof of Concept for how to enable EMF Compare in a Theia application. It is not in a state to consume it and/or use it in production. The project is the result of a student thesis, is provided as is and will not be maintained actively for now. If you are interested in a stable version of this feature, please get in contact with us. Note that the project was only tested on linux.

Project structure

This project contains:

Contributing

Like stated above, this project will not be actively maintained, as it is intended as a demo only. However, if you want to contribute a fix or raise an issue, feel free to do so.

model-compare's People

Contributors

eneufeld avatar jonashelming avatar leodennis avatar ndoschek avatar sgraband avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

model-compare's Issues

Improve client

This is an epic that tracks potential improvements on the server part:

  • Remove unused code parts
  • Refactor variable names (currently there are suboptimal namings, mixture of title cases and so on)
  • Proper usage of async functions instead of promise chaining
  • Correctly hide/gray out not applicable buttons on the tree comparison
  • Have keybinding support for undo
  • redo functionality
  • Improve styling of the tree view
  • Improve the file selection dialog
  • Allow for undo after save
  • Allow multiple comparisons at the same time
  • Do we actually need the node backend?

Improve extension-server communication

Currently the communication is implemented with custom strings that are parsed by the extension. This should be improved.
List of things that could be improved:

  • Custom class of JSONTreeNode/TreeNodeCollection/JSONCompareResponse/... We definitely should create POJOs based on the EObjects and use an Gson or something similar to serialize objects where necessary instead of using a custom ObjectManager concept.

  • In general we need some documentation as it is not obvious what every field is supposed to do. There is UUID, reference UUID, match, graphical IDs, reference Graphical IDs, connections, etc.

  • Server-Client communication is done through I/O, i.e., System.out read by the client. Partially these are json objects but some information is encoded differently, e.g., the merges are just a concatenated string of type, target, and direction which are manually encoded and decoded. Using a standardized protocol such as JsonRPC would be nicer and simplify communication as Theia already has support for JsonRPC (e.g., forwarding from backend to server etc).

Improve server

This is an epic that tracks potential improvements on the server part:

  • Clean up UUID operations
  • EPackage instance is loaded from a given jar by ARG_JAR and ARG_PACKAGE. This seems to work well but maybe should be documented somehow as it is not straight-forward. Also it has it's limitations as custom resources might not be supported, everything is loaded as an XMI Resource.
  • isValidFile / getUri: Windows support?
  • load: Re-registers packages and extensions into the resource set for every resource that is loaded. Currently does not matter as there is one resource per resource set (source, target, base).
  • Use Apache CLI to parse CLI arguments for starting.
  • Use some constants instead of duplicated strings, e.g., direction 'left', type 'conflict', etc.
  • Add sub-packages on the server to better structure code

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.