Coder Social home page Coder Social logo

jetbrains / xodus-entity-browser Goto Github PK

View Code? Open in Web Editor NEW
60.0 7.0 27.0 2.4 MB

Web UI entity browser for xodus database

License: Apache License 2.0

CSS 2.80% HTML 20.75% JavaScript 33.03% Kotlin 43.04% Batchfile 0.18% Shell 0.20%
xodus xodus-entity-browser xodus-database ktor

xodus-entity-browser's Introduction

Xodus entity browser

official JetBrains project

Web UI entity browser for Xodus database stores. Used in support activities for YouTrack and Hub applications. Highly desirable to use entity browser shipped with the same Xodus version as used in application which works with database.

Databases List of entities

Features

  • searching entities with specific query language (search by property values and by links)
  • bulk delete operations for search results
  • creating new entity types
  • edit entities properties and links (blobs are readonly)
  • creating and deleting entities
  • ability to work with few databases

Run

Custom JVM parameters and custom server port can be specified in startup script.

Build from sources

>./gradlew clean build

Run backend

Run method main in Main.kt or execute

>./gradlew runShadow

Run frontend

Command starts frontend on 19090 port

>npm install

>npm start

xodus-entity-browser's People

Contributors

dependabot[bot] avatar jk1 avatar lehvolk avatar leostryuk avatar mazine avatar morj avatar penemue avatar sedovalx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

xodus-entity-browser's Issues

Ability to delete several entities at a time

Would be nice to be able to delete all the entities which are result of a query or just all entities of an entity type. For suitable performance of huge deletions, please delete approx. 1000 entities per transaction.

Question on using entity browser

Hello! I've created Xodus DB using Xodus-DNQ definitions and I've checked that it works (data is saved successfully and can be obtained later), however, when I try to add same database to Entity Browser, it opens DB but says "Database is empty - you can add ", which is strange, since there IS data in DB.
When DB is opened in write-mode, it prompts me to create new Entity Type. I've tried to enter models names into corresponding field, but then it still shows "Nothing was found".
What am I missing? Thanks in advance!

Query by range is broken

Query by range seems to be completely broken. Though strangely, it seems to be broken in different ways depending on the data type. With entity browser version 1.3 and this database:

  • Select the FileNode entity and run the query CreationSeqNum = [0,2]. FileNode[2-3] is included in the results even though it should not be.
  • Select the TagMetadata entity and run the query Priority = [0,2]. No results are found even though some should be.

Also, the help provided by the ? button is a little unclear about the behavior of search by range. It says the search looks for values "inside the specified interval" but doesn't say whether the interval is inclusive or exclusive.

NPE on entity type select

java.lang.IllegalStateException: kotlin.TypeCastException: null cannot be cast to non-null type com.lehvolk.xodus.web.UIPropertyTypes.UIPropertyType<T>
    at com.lehvolk.xodus.web.TransformationsKt.value2string(Transformations.kt:103) ~[classes/:na]
    at com.lehvolk.xodus.web.TransformationsKt.propertyView(Transformations.kt:69) ~[classes/:na]
    at com.lehvolk.xodus.web.TransformationsKt.asLightView(Transformations.kt:20) ~[classes/:na]
    at com.lehvolk.xodus.web.TransformationsKt.linkView(Transformations.kt:34) ~[classes/:na]
    at com.lehvolk.xodus.web.TransformationsKt.asView(Transformations.kt:11) ~[classes/:na]
    at com.lehvolk.xodus.web.PersistentStoreService$searchType$1.invoke(PersistentStoreService.kt:74) ~[classes/:na]
    at com.lehvolk.xodus.web.PersistentStoreService$searchType$1.invoke(PersistentStoreService.kt:10) ~[classes/:na]
    at com.lehvolk.xodus.web.PersistentStoreService$readonly$1.compute(PersistentStoreService.kt:178) ~[classes/:na]
    at jetbrains.exodus.entitystore.PersistentEntityStoreImpl.computeInReadonlyTransaction(PersistentEntityStoreImpl.java:558) ~[xodus-entity-store-1.0-20160512.155606-10.jar:1.0-SNAPSHOT]
    at com.lehvolk.xodus.web.PersistentStoreService.readonly(PersistentStoreService.kt:178) ~[classes/:na]
    at com.lehvolk.xodus.web.PersistentStoreService.searchType(PersistentStoreService.kt:70) ~[classes/:na]
    at com.lehvolk.xodus.web.XodusRestService.searchEntities(XodusRestService.kt:53) ~[classes/:na]
    at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) ~[na:na]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_73]
    at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_73]
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) [jersey-server-2.19.jar:na]
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) [jersey-server-2.19.jar:na]
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) [jersey-server-2.19.jar:na]
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205) [jersey-server-2.19.jar:na]
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) [jersey-server-2.19.jar:na]
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) [jersey-server-2.19.jar:na]
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) [jersey-server-2.19.jar:na]
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) [jersey-server-2.19.jar:na]
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:308) [jersey-server-2.19.jar:na]
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) [jersey-common-2.19.jar:na]
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) [jersey-common-2.19.jar:na]
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) [jersey-common-2.19.jar:na]
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) [jersey-common-2.19.jar:na]
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267) [jersey-common-2.19.jar:na]
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) [jersey-common-2.19.jar:na]
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:291) [jersey-server-2.19.jar:na]
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1140) [jersey-server-2.19.jar:na]
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:403) [jersey-container-servlet-core-2.19.jar:na]
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386) [jersey-container-servlet-core-2.19.jar:na]
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:334) [jersey-container-servlet-core-2.19.jar:na]
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221) [jersey-container-servlet-core-2.19.jar:na]
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.server.Server.handle(Server.java:497) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [jetty-runner.jar:9.2.10.v20150310]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [jetty-runner.jar:9.2.10.v20150310]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_73]
Caused by: kotlin.TypeCastException: null cannot be cast to non-null type com.lehvolk.xodus.web.UIPropertyTypes.UIPropertyType<T>
    at com.lehvolk.xodus.web.UIPropertyTypes.uiTypeOf(UITypes.kt:134) ~[classes/:na]
    at com.lehvolk.xodus.web.TransformationsKt.value2string(Transformations.kt:100) ~[classes/:na]
    ... 55 common frames omitted

Add link action is broken

vendor.726975f….js:20 TypeError: t.push is not a function
    at Object.r.addNewLink (main.726975f….js:2)
    at fn (eval at compile (vendor.726975f….js:22), <anonymous>:4:269)
    at t (vendor.726975f….js:21)
    at r (vendor.726975f….js:23)
    at h.$eval (vendor.726975f….js:21)
    at h.$apply (vendor.726975f….js:21)
    at HTMLAnchorElement.<anonymous> (vendor.726975f….js:23)
    at HTMLAnchorElement.dispatch (vendor.726975f….js:49)
    at HTMLAnchorElement.m.handle (vendor.726975f….js:48)

Open youtrack database empty

Both my entity-browser and youtrack are hosted in windows platform.

When I tried to use the entity-browser, click [add] database, what should I fill for the path of the database?
image

The first one is directly pointing to my youtrack home directory. I can click on the link, but it shows "Database is empty - you can add"

The second one is pointing to my youtrack export. I can't even click on the link.

May I know if I have missed anything?

How to create a database from scratch?

I want to create some entity stores. For this purpose I try to setup it by entering some existing path in the "location" field and a property name in the "key" field. When I submit the form I get the error "There is no entity types in Xodus store. Try setup another one".

How can I create a new entity store?

Question: Using entity browser

I have some few questions:

  1. What's the purpose of Database State ON/OFF in the browser?
  2. Can the Xodus Entity Browser manage production database? I understand that you can't open the same environment that is locked by an application, so how can this entity browser work at all?
  3. Does it mean that it manages database that are either copied or synced from a remote server?

Database is not unlocked when it is in the "Off" state

Issue description

Can't connect to database from another application if Entity Browser is launched but database is not enabled in UI:
Screenshot_2020-08-04_18-09-01

Steps to reproduce

  1. Run Entity Browser.
  2. Add your database in writable mode.
  3. Close database and put State switcher in Off state.
  4. Connect to the same database from another application (e.g. your Kotlin program).

AR

Can't acquire lock from another process.

ER

Another process can connect to database successfully.

Note: terminating Entity Browser releasing lock.

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.