Giter VIP home page Giter VIP logo

gndata-editor's Introduction

Build Status Coverage Status

About the gndata-editor

An application for data- and metadata management in the domain of neuroscience. This application is currently in the pre-alpha stage of development.

Getting Started

Build gndata-editor under Ubuntu 14.04

Dependencies

To build the gndata-editor the following applications have to be available:

  • Java version 1.8.0_40 or higher
  • Maven version 3.x.x or higher

Build instructions

First download this sample project and extract it to a directory of your choice. Next follow these build steps:

# git clone the current version of the gndata-editor into directory of your choice
git clone https://github.com/G-Node/gndata-editor.git

# move into the "gndata-editor" directory containing the "pom.xml" file
# and build the project using maven
mvn clean compile package install

# open the built application and use the provided sample as reference project
java -jar target/gndata-*.jar

gndata-editor's People

Contributors

asobolev avatar gicmo avatar mpsonntag avatar stoewer avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

gndata-editor's Issues

Move code to public API in package lib

Candidates are:

  • VisualItem.renderResource() this could be some kind of more general pretty print method.
  • RDFTreeItem.buildChildren() maybe parts of the function could be useful in the context of the API.

Absolute paths in project config file

Currently the absolute path of the project and the project settings file is store within the project settings file (heh!):

{
  "filePath" : "/Users/gicmo/Temp/gndata_test/.gnode/settings.json",
  "projectPath" : "/Users/gicmo/Temp/gndata_test",
  "name" : "Test Project",
  "description" : "Just a little test"
}%

That leads to either an exception (see below) when the path is not valid on the current computer or the creation of a new project if the path is valid (e.g. you move a project dir, an project gets created in the old location).

Not sure why both paths are stored in the first place.

Exception:

java.nio.file.FileSystemException: /home/andrey: Operation not supported
    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:91)

Display errors and exceptions in dialog

The dialog displays the error message and optionally the stack trace of the exception: ControlsFX provides such a dialog, maybe we should use it.

The dialog should appear in every situation where we currently just call printStacktrace().

Initialize services in separate thread

Initialization of the the services should be done in parallel in a background thread. Maybe it would make sense to keep information about running background threads inside the AppState.

BreadCrumbNavigation button unselectable

If a selected ToggleButton in the BreadCrumbNavigation is untoggled, "Exception in thread "JavaFX Application Thread" java.lang.IndexOutOfBoundsException: Index: -1, Size: 4" happens in BreadCrumbNav.java line 184.

        public void changed(ObservableValue<? extends Toggle> observable, Toggle oldValue, Toggle newValue) {
            ToggleButton btn = (ToggleButton) newValue;
            int position = buttons.getButtons().indexOf(btn);
-->            select(items.get().get(position));
        }

We could solve this either by simply using the select statement only if the index is greater -1:

if (position > -1) {
    select(items.get().get(position));
}

But a nicer solution would be, if its possible to fix a selected toggled button in its toggled state.

Problem with space characters in file names

This error can be reproduced by creating or opening a new project that has a space in the name of the project base folder.

Here is the stack trace:

/usr/lib/jvm/java-8-oracle/bin/java -Didea.launcher.port=7533 -Didea.launcher.bin.path=/home/stoewer/Programme/idea-13.1.3/bin -Dfile.encoding=UTF-8 -classpath /usr/lib/jvm/java-8-oracle/jre/lib/jfxswt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/javaws.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jfr.jar:/usr/lib/jvm/java-8-oracle/jre/lib/deploy.jar:/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jce.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jsse.jar:/usr/lib/jvm/java-8-oracle/jre/lib/charsets.jar:/usr/lib/jvm/java-8-oracle/jre/lib/plugin.jar:/usr/lib/jvm/java-8-oracle/jre/lib/resources.jar:/usr/lib/jvm/java-8-oracle/jre/lib/management-agent.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/sunec.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/dnsns.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/sunjce_provider.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/zipfs.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/cldrdata.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/jfxrt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/nashorn.jar:/home/stoewer/Entwicklung/gndata-editor/target/classes:/home/stoewer/.m2/repository/org/scala-lang/scala-compiler/2.11.1/scala-compiler-2.11.1.jar:/home/stoewer/.m2/repository/org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar:/home/stoewer/.m2/repository/org/scala-lang/scala-reflect/2.11.1/scala-reflect-2.11.1.jar:/home/stoewer/.m2/repository/org/scala-lang/modules/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar:/home/stoewer/.m2/repository/org/scala-lang/modules/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.jar:/home/stoewer/.m2/repository/org/apache/jena/jena-arq/2.12.0/jena-arq-2.12.0.jar:/home/stoewer/.m2/repository/org/apache/jena/jena-core/2.12.0/jena-core-2.12.0.jar:/home/stoewer/.m2/repository/org/slf4j/slf4j-api/1.7.6/slf4j-api-1.7.6.jar:/home/stoewer/.m2/repository/org/apache/jena/jena-iri/1.1.0/jena-iri-1.1.0.jar:/home/stoewer/.m2/repository/org/slf4j/slf4j-log4j12/1.7.6/slf4j-log4j12-1.7.6.jar:/home/stoewer/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar:/home/stoewer/.m2/repository/xerces/xercesImpl/2.11.0/xercesImpl-2.11.0.jar:/home/stoewer/.m2/repository/xml-apis/xml-apis/1.4.01/xml-apis-1.4.01.jar:/home/stoewer/.m2/repository/org/apache/httpcomponents/httpclient/4.2.6/httpclient-4.2.6.jar:/home/stoewer/.m2/repository/org/apache/httpcomponents/httpcore/4.2.5/httpcore-4.2.5.jar:/home/stoewer/.m2/repository/commons-codec/commons-codec/1.6/commons-codec-1.6.jar:/home/stoewer/.m2/repository/com/github/jsonld-java/jsonld-java/0.5.0/jsonld-java-0.5.0.jar:/home/stoewer/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.3.3/jackson-core-2.3.3.jar:/home/stoewer/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.3.3/jackson-databind-2.3.3.jar:/home/stoewer/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.3.0/jackson-annotations-2.3.0.jar:/home/stoewer/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.6/jcl-over-slf4j-1.7.6.jar:/home/stoewer/.m2/repository/org/apache/httpcomponents/httpclient-cache/4.2.6/httpclient-cache-4.2.6.jar:/home/stoewer/.m2/repository/org/controlsfx/controlsfx/8.0.5/controlsfx-8.0.5.jar:/home/stoewer/.m2/repository/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar:/home/stoewer/.m2/repository/com/google/inject/guice/3.0/guice-3.0.jar:/home/stoewer/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/home/stoewer/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/home/stoewer/.m2/repository/com/aquafx-project/aquafx/0.1/aquafx-0.1.jar:/home/stoewer/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar:/home/stoewer/Programme/idea-13.1.3/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain gndata.App
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [file:/home/boost/stoewer/Entwicklung/gndata-editor/target/classes/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/stoewer/.m2/repository/org/slf4j/slf4j-log4j12/1.7.6/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1762)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1645)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:462)
    at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1364)
    at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.lambda$createChildren$324(ContextMenuContent.java:1317)
    at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer$$Lambda$352/774875624.handle(Unknown Source)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3724)
    at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3452)
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1728)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2461)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:348)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:273)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:382)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:553)
    at com.sun.glass.ui.View.notifyMouse(View.java:925)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.lambda$null$45(GtkApplication.java:126)
    at com.sun.glass.ui.gtk.GtkApplication$$Lambda$43/1014781144.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1759)
    ... 43 more
Caused by: org.apache.jena.riot.RiotException: <file:///home/stoewer/Test Projects/test2/metadata/schemas/prov.owl> Code: 17/WHITESPACE in PATH: A single whitespace character. These match no grammar rules of URIs/IRIs. These characters are permitted in RDF URI References, XML system identifiers, and XML Schema anyURIs.
    at org.apache.jena.riot.system.IRIResolver.exceptions(IRIResolver.java:310)
    at org.apache.jena.riot.system.IRIResolver.access$000(IRIResolver.java:31)
    at org.apache.jena.riot.system.IRIResolver$IRIResolverNormal.resolve(IRIResolver.java:413)
    at org.apache.jena.riot.system.IRIResolver$IRIResolverSync.resolve(IRIResolver.java:448)
    at org.apache.jena.riot.system.IRIResolver.resolveIRI(IRIResolver.java:189)
    at org.apache.jena.riot.system.IRIResolver.resolveString(IRIResolver.java:169)
    at org.apache.jena.riot.SysRIOT.chooseBaseIRI(SysRIOT.java:73)
    at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:681)
    at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:208)
    at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:101)
    at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:92)
    at org.apache.jena.riot.RDFDataMgr.loadModel(RDFDataMgr.java:328)
    at gndata.lib.srv.MetadataService.create(MetadataService.java:136)
    at gndata.app.state.ProjectState.setConfig(ProjectState.java:58)
    at gndata.app.ui.main.MenuCtrl.createProject(MenuCtrl.java:63)
    ... 53 more

Process finished with exit code 0

Persist changes in the main model

Changes in the main model should be persisted to the main metadata file metadata.rdf. There are two ways how this could be solved and it might make sense to implement both:

  1. A change listener could listen for changes in the model and save the model to disk.

  2. Write the model to disk when the application is closed.

In both cases one could consider to check whether the reasoner finds contradictions in the model before writing it to disk.

Components for the calendar view

So basically the question is what to use for the top "timeline" and the main "week" views.

timeline:

  • one option is to use AreaChart / BarChart (built-in JavaFX)
  • anything else?

week view:

Hacking it from scratch woulnd't be a nice option.

Thanx

Metadata browser UI

Implement the metadata browser ui according to the description in the M2 planning document. The browser should use the navigation bar from #55.

Tree root display

  • op1 - add classes to display to the project configuration
  • op2 - make a DDL
  • op3 -make a panel with a list of all classes with a filter

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.