halestudio / hale Goto Github PK
View Code? Open in Web Editor NEW(Spatial) data harmonisation with hale studio (formerly HUMBOLDT Alignment Editor)
(Spatial) data harmonisation with hale studio (formerly HUMBOLDT Alignment Editor)
Improvements of custom functions introduced with #61
During the last projects, we have encountered situations where one focus type is joined with multiple other types to find whether they exist and have certain properties. This should become a function of its own, where it is possible to emit a target feature only if one of the joined types matched.
Allow joins based on a defined spatial relationship between selected geometries of two object types, Support at least the "contains", "equals" and "touches" operations.
When I load source data and create condition contexts on the source schema, I want to see how many objects and properties there are for these contexts.
Got this error, though only once in a transformation where the function was applied multiple times, so probably an edge case because of a specific geometry.
28.07.2016 18:37:23 ERROR e.e.c.ConceptualSchemaTransformer.transform(168) - Skipping property transformation: Executing property transformation failed.
com.vividsolutions.jts.geom.TopologyException: side location conflict [ (576892.8988647707, 5926862.591675996, NaN) ]
at com.vividsolutions.jts.geomgraph.EdgeEndStar.propagateSideLabels(EdgeEndStar.java:300) ~[na:na]
at com.vividsolutions.jts.geomgraph.EdgeEndStar.computeLabelling(EdgeEndStar.java:136) ~[na:na]
at com.vividsolutions.jts.operation.relate.RelateComputer.labelNodeEdges(RelateComputer.java:297) ~[na:na]
at com.vividsolutions.jts.operation.relate.RelateComputer.computeIM(RelateComputer.java:132) ~[na:na]
at com.vividsolutions.jts.operation.relate.RelateOp.getIntersectionMatrix(RelateOp.java:138) ~[na:na]
at com.vividsolutions.jts.operation.relate.RelateOp.relate(RelateOp.java:83) ~[na:na]
at com.vividsolutions.jts.geom.Geometry.relate(Geometry.java:1035) ~[na:na]
at com.vividsolutions.jts.geom.Geometry.contains(Geometry.java:889) ~[na:na]
at com.vividsolutions.jts.geom.Geometry.within(Geometry.java:850) ~[na:na]
at eu.esdihumboldt.cst.functions.geometric.interiorpoint.InteriorPoint.calculateInteriorPoint(InteriorPoint.java:112) ~[na:na]
at eu.esdihumboldt.cst.functions.geometric.interiorpoint.InteriorPoint.evaluate(InteriorPoint.java:59) ~[na:na]
at eu.esdihumboldt.hale.common.align.transformation.function.impl.AbstractSingleTargetPropertyTransformation.evaluate(AbstractSingleTargetPropertyTransformation.java:57) ~[na:na]
at eu.esdihumboldt.hale.common.align.transformation.function.impl.AbstractPropertyTransformation.execute(AbstractPropertyTransformation.java:102) ~[na:na]
at eu.esdihumboldt.cst.internal.FunctionExecutor.executeTransformation(FunctionExecutor.java:224) ~[na:na]
at eu.esdihumboldt.cst.internal.FunctionExecutor.processValid(FunctionExecutor.java:133) ~[na:na]
at eu.esdihumboldt.hale.common.align.model.transformation.tree.visitor.CellNodeValidator.visit(CellNodeValidator.java:110) ~[na:na]
at eu.esdihumboldt.hale.common.align.model.transformation.tree.impl.CellNodeImpl.accept(CellNodeImpl.java:103) ~[na:na]
at eu.esdihumboldt.hale.common.align.model.transformation.tree.impl.TargetNodeImpl.accept(TargetNodeImpl.java:177) ~[na:na]
at eu.esdihumboldt.hale.common.align.model.transformation.tree.impl.TargetNodeImpl.accept(TargetNodeImpl.java:173) ~[na:na]
at eu.esdihumboldt.hale.common.align.model.transformation.tree.impl.TransformationTreeImpl.accept(TransformationTreeImpl.java:129) ~[na:na]
at eu.esdihumboldt.cst.internal.TreePropertyTransformer$3.run(TreePropertyTransformer.java:194) ~[na:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_101]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_101]
at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_101]
PostGIS assumes a different default axis order than hale (lon/lat instead of lat/lon).
Accessing the same instance via OrientDB (even if different Java objects) from multiple threads results in invalid objects (duplicate properties). In some cases this happens silently, sometimes a ConcurrentModificationException is raised.
High likelyhood for such behavior is with Groovy type transformations that create multiple targets (as the sources are always the same here).
Short term fix: Transformation in only one thread.
Long term fix could be one of these approaches:
Allow the user to define custom reusable transformation functions. First implementation is based on defining Groovy scripts. Custom functions can be stored in the alignment or included from an external source (later).
No simple case for reproduction found yet. In this example happened with a property nested at least three levels deep, with a choice in between.
Caused by: java.lang.NullPointerException
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:213)
at com.google.common.collect.SingletonImmutableList.<init>(SingletonImmutableList.java:40)
at com.google.common.collect.ImmutableList.of(ImmutableList.java:89)
at eu.esdihumboldt.util.groovy.paths.PathImpl.<init>(PathImpl.java:48)
at eu.esdihumboldt.hale.common.instance.groovy.InstanceAccessor$1.apply(InstanceAccessor.groovy:64)
at eu.esdihumboldt.hale.common.instance.groovy.InstanceAccessor$1.apply(InstanceAccessor.groovy)
at com.google.common.collect.Lists$TransformingRandomAccessList$1.transform(Lists.java:582)
at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
at java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1042)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.collectMany(DefaultGroovyMethods.java:2520)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.collectMany(DefaultGroovyMethods.java:2496)
at eu.esdihumboldt.hale.common.instance.groovy.InstanceAccessor.findChildPaths(InstanceAccessor.groovy:108)
at eu.esdihumboldt.util.groovy.paths.AbstractAccessor.findChildren(AbstractAccessor.java:102)
at eu.esdihumboldt.hale.common.instance.groovy.InstanceAccessor.findChildren(InstanceAccessor.groovy:77)
at eu.esdihumboldt.hale.common.instance.groovy.InstanceAccessor.findChildren(InstanceAccessor.groovy)
at eu.esdihumboldt.util.groovy.paths.AbstractAccessor.getProperty(AbstractAccessor.java:70)
at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:227)
at Script1.sourceNameFromModellart(Script1.groovy:3)
at sun.reflect.GeneratedMethodAccessor121.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:368)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:137)
at Script1$_run_closure1.doCall(Script1.groovy:17)
at Script1$_run_closure1.doCall(Script1.groovy)
at sun.reflect.GeneratedMethodAccessor120.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:278)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:54)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callSafe(AbstractCallSite.java:75)
at eu.esdihumboldt.util.groovy.builder.BuilderBase.methodMissing(BuilderBase.groovy:94)
at eu.esdihumboldt.util.groovy.builder.BuilderBase.createNode(BuilderBase.groovy:112)
at eu.esdihumboldt.hale.common.instance.groovy.InstanceBuilder.createInstance(InstanceBuilder.groovy:156)
at eu.esdihumboldt.hale.common.instance.groovy.InstanceBuilder.createInstance(InstanceBuilder.groovy:132)
at eu.esdihumboldt.hale.common.instance.groovy.InstanceBuilder.createInstance(InstanceBuilder.groovy)
at eu.esdihumboldt.cst.functions.groovy.internal.TargetCollector.toMultiValue(TargetCollector.java:115)
at eu.esdihumboldt.cst.functions.groovy.GroovyTransformation$1.process(GroovyTransformation.java:137)
at eu.esdihumboldt.util.groovy.sandbox.DefaultGroovyService.evaluate(DefaultGroovyService.java:163)
at eu.esdihumboldt.cst.functions.groovy.GroovyTransformation.evaluate(GroovyTransformation.java:120)
at eu.esdihumboldt.hale.common.align.custom.groovy.CustomGroovyTransformation.evaluate(CustomGroovyTransformation.java:103)
... 13 more
The MapQuest map used as a base map in hale until now is no longer available. Thus we need to look for an alternative. Preferred would be a map that also uses a simple URL pattern for accessing tiles based on zoom level and x/y ordinates.
Any suggestions are welcome.
Currently, the CSV reader defaults to the system setting for determining the decimal divisor in numeric fields. This fails if the source file used a different decimal divisor. It should be possible to specify the divisor (.
or ,
) in the configuration wizard.
It should be possible via the project view to remove a single (source or target) schema from a project.
Allow to import codelists using the SKOS format from Files or URLs, and allow to assign these code lists to schema elements.
Currently, it is possible to apply an alignment created for one type of data source to another, e.g. from Shapefile to a database table, by exporting the alignment as a separate file and then by importing it to a new project which uses the new schema as source. For each cell, the user then can assign matching entities. This process can be automated to some degree by providing hale studio with information on the general vertical mapping rules applied between the original source schema and the new data source schema. In this task, we improve this wizard so that the user can provide input on what general vertical mapping rules can be applied, either by allowing selection from a concrete list or from a prefixed "profile" (here: XSD to PostNAS).
DoD:
Right now the default behavior is to import tables and views from all schemas in a database. This should be configurable for the user, and the availability of these configuration options should be customizable for different kinds of databases.
NullPointerException here. Example had references to identifiers that were not present in the data set.
Generalize rules as defined by the AdV to provide a general ID function. Provide options to either generate an ID or a reference. Remove the old Inspire ID function. Main goal is to provide IDs for XML/GML.
Next problem :-)
I have a couple hundred relations in my PostgreSQL database. They are stored in some 40 database schemas. I can load the relations allright but when loading the data, hale only loads data from relations located in the "public" schema.
By the way I use upper and lower case schema and table names (but that is not the cause as data from relations with all lower case schema and relation names are not loaded either).
Extending the search path with alter role "myrole" set search_path to public, "myOtherSchema"
doesn't help either.
This is due to a bug in the underlying SWT implementation. The same issue can be observed with Eclipse Mars. In Eclipse Neon the problem seems to be fixed. An update to Eclipse Neon however is not a trivial task for hale, as some UI mechanisms retained from Eclipse 3 seem to be no longer supported.
Workaround is switching to GTK 2 for running hale. This can be done by adapting the HALE.ini
file.
You need to add the following lines before the -vmargs
line:
--launcher.GTK_Version
2
...because otherwise responses may get lost that are returned while hale is still sending request data.
Observed with deegree that may return responses when the request data has not been fully received yet. This can be problematic when trying to determine why deegree aborts the connection (as the reason cannot be found in the deegree logs).
Add an Option to source and target schema explorer to hide optional properties
A SharedDatabaseConnection
may be closed even if instances retrieved via InstanceReference
s are still in use.
Not sure why that happens, maybe only sub-instances/-groups are still in use, while the main instance was garbage collected.
If installing hale via the Windows installer the file associations created do not use the correct path for the data location.
Either fix or remove file associations in installer.
Add a schema and an instance reader to read from MS SQL Server databases. Support Geometry and Geography data types, as well as arrays. Read out as many constraints as possible from the schema. In case of Arcs, interpolate them as described in #181.
DoD:
Add a what's new page to the help for the release.
Currently, the size of the schema element display is fixed and doesn't use space if the view is large. This limits element label recognizability, especially when filters are present, and should be improved.
This function allows assigning values to any target element from any collector defined previously, either in a Groovy Script or in a "Define Collector" augmentation function (see #209).
Workflow:
Use Cases:
Add the possibility to define custom tile-based maps (based on a tile pattern).
Functionality should be similar (in principle) to defining custom maps based on a WMS.
see #64
Cell modifiers for cells that do not exist any more disappear silently and are gone once the project is saved again. The user should be notified about such modifiers, as often they need to be applied to another cell instead.
The HTML+SVG mapping documentation should use a release version of halejs.
When switching between synchronisation models in the Transformed Data view, I often get the following error:
Problems occurred when invoking code from plug-in: "org.eclipse.jface".
java.lang.IllegalStateException: Need an underlying widget to be able to set the input.(Has the widget been disposed?)
at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1692)
at eu.esdihumboldt.hale.ui.views.data.internal.filter.SampleTransformInstanceSelector$InstanceSelectorControl.updateFeatureTypesSelection(SampleTransformInstanceSelector.java:285)
at eu.esdihumboldt.hale.ui.views.data.internal.filter.SampleTransformInstanceSelector$InstanceSelectorControl.updateInDisplayThread(SampleTransformInstanceSelector.java:174)
at eu.esdihumboldt.hale.ui.views.data.internal.filter.SampleTransformInstanceSelector$InstanceSelectorControl.access$0(SampleTransformInstanceSelector.java:172)
at eu.esdihumboldt.hale.ui.views.data.internal.filter.SampleTransformInstanceSelector$InstanceSelectorControl$2.update(SampleTransformInstanceSelector.java:126)
at java.util.Observable.notifyObservers(Observable.java:159)
at java.util.Observable.notifyObservers(Observable.java:115)
at eu.esdihumboldt.hale.ui.service.instance.sample.internal.InstanceSampleServiceImpl.setReferenceInstances(InstanceSampleServiceImpl.java:52)
at eu.esdihumboldt.hale.ui.views.data.SourceDataView.onSelectionChange(SourceDataView.java:97)
at eu.esdihumboldt.hale.ui.views.data.AbstractDataView.selectionChanged(AbstractDataView.java:346)
at eu.esdihumboldt.hale.ui.views.data.internal.filter.InstanceServiceSelector$InstanceSelectorControl.updateSelection(InstanceServiceSelector.java:427)
at eu.esdihumboldt.hale.ui.views.data.internal.filter.InstanceServiceSelector$InstanceSelectorControl$2.selectionChanged(InstanceServiceSelector.java:159)
at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:163)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:50)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:173)
at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:160)
at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2197)
at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1228)
at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1257)
at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:242)
at org.eclipse.jface.util.OpenStrategy.access$4(OpenStrategy.java:236)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:408)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362)
Also, an additional dropdown appears that is empty an inactive.
Steps for reproduction:
AX_LageBezeichnungMitHausnummer
as the Source Data TypeAddress
Occurs when loading the project. Observed with Oracle and PostgreSQL sources. It seems that the wrong JDBC driver is being used (SQLite). Probably due to an issue with loading the driver class in OSGi.
Provide the Control Winding Order functionality currently implemented as a GML encoding option as a transformation function as well.
Our central PostgreSQL/PostGIS server requires users to connect using ssl. When trying to connect to it from Hale I receive this error:
org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "hostip", user "username", database "dbname", SSL off
When entering the credentials there should be a choice of how to connect to the db. In e.g. QGIS these are the choices for SSL:
maybe disable and require are sufficient, could then be done with a checkbox connect using SSL
defrault would be no
Currently, hale uses java standard number serialization, but in many situations a defined number format, with a fixed number of decimals before and after the point, potentially with leading zeroes is required. It should be possible to define this for formats that don't have a constraint expressing that (many databases do, but XSD doesn't). The preferred implementation for this is as a constraint on the property, with a writer configuration option.
DoD:
Hi,
I'm facing a problem with exporting HALE alignments as Geoserver App-Schema REST [Direct Upload]: The export always fails with HTTP exception "Method Not Allowed".
The Geoserver I'm using is a local installation straight from the OS X installer with no additional workspaces or other customisation. I have tried both Geoserver 2.8.5 and 2.9.1 running on the packaged jetty, the result is the same.
Based on the Geoserver log it seems to me that HALE is trying to make a DELETE operation for following resource: /rest/workspaces/nns/datastores/target.xml The "nns" workspace does not exist on the Geoserver.
The alignment is a very simple one based of the ProtectedSites project created by the INSPIRE Interactive Data Specifications application (http://inspire-regadmin.jrc.ec.europa.eu/dataspecification/FindYourScope.action). The source schema is the PS 4.0 XML Schema (http://inspire.ec.europa.eu/schemas/ps/4.0/ProtectedSites.xsd) and the source data is read from a local GML file containing a wfs:FeatureCollection of ProtectedSite 4.0 features (identity transformation).
I'm using the HALE 3.0.0 from the installed with the Mac Installer from https://www.wetransform.to/downloads/
Stack trace:
eu.esdihumboldt.hale.io.geoserver.rest.ResourceException: org.apache.http.client.HttpResponseException: Method Not Allowed at eu.esdihumboldt.hale.io.geoserver.rest.AbstractResourceManager.delete(AbstractResourceManager.java:302) at eu.esdihumboldt.hale.io.appschema.writer.AppSchemaMappingUploader.publishAppSchemaDataStore(AppSchemaMappingUploader.java:121) at eu.esdihumboldt.hale.io.appschema.writer.AppSchemaMappingUploader.handleMapping(AppSchemaMappingUploader.java:80) at eu.esdihumboldt.hale.io.appschema.writer.AbstractAppSchemaConfigurator.execute(AbstractAppSchemaConfigurator.java:92) at eu.esdihumboldt.hale.common.core.io.impl.AbstractIOProvider.execute(AbstractIOProvider.java:102) at eu.esdihumboldt.hale.ui.io.IOWizard$3.run(IOWizard.java:687) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119) Caused by: org.apache.http.client.HttpResponseException: Method Not Allowed at eu.esdihumboldt.hale.io.geoserver.rest.AbstractResourceManager$EmptyResponseHandler.handleResponse(AbstractResourceManager.java:463) at eu.esdihumboldt.hale.io.geoserver.rest.AbstractResourceManager$EmptyResponseHandler.handleResponse(AbstractResourceManager.java:1) at org.apache.http.client.fluent.Response.handleResponse(Response.java:90) at eu.esdihumboldt.hale.io.geoserver.rest.AbstractResourceManager.delete(AbstractResourceManager.java:299) ... 6 more
Variables for use in the mapping, which can be defined in the project and overridden for the transformation.
TODOs:
Currently no authentication is supported when using the InstanceWriters that upload data to a WFS-T interface. At least HTTP Basic Authentication should be supported.
DoD:
Add documentation on new features:
Steps to reproduce:
Workaround:
Hale studio doesn't support Arcs other than passing them through. They can't be rendered in the map view, and when a geometry with arcs is processed (buffered, aggregated), the arc isn't taken into account correctly. Therefore we need to interpolate any arcs during the reading process, to a linestring made of straight segments.
The interpolation method must take topology into account, i.e. if two arc nodes or segments touch each other, that relation needs to be maintained. There may be no new gaps or overlaps.
DoD:
Implementation suggestion: Use grid based iterative interpolation
Images used in the Windows Installer should be up-to-date with the rest of the hale CI.
Having a reproducible order for cells in an alignment when it is saved would allow for easier comparison in a diff.
It is suggested to do the ordering based on the cell target(s).
I got the following error when hale cleaned the project during loading of a new project:
java.lang.reflect.InvocationTargetException
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:420)
at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:500)
at eu.esdihumboldt.hale.ui.util.io.ThreadProgressMonitor$2.run(ThreadProgressMonitor.java:133)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4155)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3772)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:172)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:387)
at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:1002)
at eu.esdihumboldt.hale.ui.io.IOWizard.performFinish(IOWizard.java:580)
at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:799)
at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:429)
at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:619)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4180)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3769)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:827)
at org.eclipse.jface.window.Window.open(Window.java:803)
at eu.esdihumboldt.hale.ui.service.project.internal.ProjectServiceImpl$7.run(ProjectServiceImpl.java:790)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:186)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:145)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4761)
at eu.esdihumboldt.hale.ui.service.project.internal.ProjectServiceImpl.open(ProjectServiceImpl.java:781)
at eu.esdihumboldt.hale.ui.service.project.handler.OpenProjectHandler.execute(OpenProjectHandler.java:40)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:295)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
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:498)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:252)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:234)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:152)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:493)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:486)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:210)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:799)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:675)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$7(HandledContributionItem.java:659)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:592)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4180)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3769)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:694)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:606)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at eu.esdihumboldt.hale.ui.application.Application.run(Application.java:117)
at eu.esdihumboldt.hale.ui.application.Application.run(Application.java:1)
at eu.esdihumboldt.hale.common.app.AbstractApplication.run(AbstractApplication.java:51)
at eu.esdihumboldt.hale.common.app.AbstractApplication.start(AbstractApplication.java:33)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
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:498)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
Caused by: org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.IllegalStateException: Need an underlying widget to be able to set the input.(Has the widget been disposed?))
at org.eclipse.swt.SWT.error(SWT.java:4491)
at org.eclipse.swt.SWT.error(SWT.java:4406)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:208)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:145)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4761)
at eu.esdihumboldt.hale.ui.views.data.internal.filter.InstanceServiceSelector$InstanceSelectorControl$7.datasetChanged(InstanceServiceSelector.java:268)
at eu.esdihumboldt.hale.ui.service.instance.internal.AbstractInstanceService.notifyDatasetChanged(AbstractInstanceService.java:242)
at eu.esdihumboldt.hale.ui.service.instance.internal.orient.OrientInstanceService.clearTransformedInstances(OrientInstanceService.java:511)
at eu.esdihumboldt.hale.ui.service.instance.internal.AbstractInstanceService$2.alignmentCleared(AbstractInstanceService.java:90)
at eu.esdihumboldt.hale.ui.service.align.internal.AbstractAlignmentService.notifyAlignmentCleared(AbstractAlignmentService.java:63)
at eu.esdihumboldt.hale.ui.service.align.internal.AlignmentServiceImpl.clean(AlignmentServiceImpl.java:174)
at eu.esdihumboldt.hale.ui.service.align.internal.AlignmentServiceImpl$1.onClean(AlignmentServiceImpl.java:69)
at eu.esdihumboldt.hale.ui.service.project.internal.AbstractProjectService.notifyClean(AbstractProjectService.java:113)
at eu.esdihumboldt.hale.ui.service.project.internal.ProjectServiceImpl$3.run(ProjectServiceImpl.java:516)
at eu.esdihumboldt.hale.ui.util.io.ThreadProgressMonitor$1.run(ThreadProgressMonitor.java:121)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
Caused by: java.lang.IllegalStateException: Need an underlying widget to be able to set the input.(Has the widget been disposed?)
at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1692)
at eu.esdihumboldt.hale.ui.views.data.internal.filter.InstanceServiceSelector$InstanceSelectorControl.updateTypesSelection(InstanceServiceSelector.java:308)
at eu.esdihumboldt.hale.ui.views.data.internal.filter.InstanceServiceSelector$InstanceSelectorControl$7$1.run(InstanceServiceSelector.java:272)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4155)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3772)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:172)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:387)
at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:500)
at eu.esdihumboldt.hale.ui.util.io.ThreadProgressMonitor$2.run(ThreadProgressMonitor.java:133)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4155)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3772)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:172)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:387)
at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:1002)
at eu.esdihumboldt.hale.ui.io.IOWizard.performFinish(IOWizard.java:580)
at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:799)
at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:429)
at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:619)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4180)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3769)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:827)
at org.eclipse.jface.window.Window.open(Window.java:803)
at eu.esdihumboldt.hale.ui.service.project.internal.ProjectServiceImpl$7.run(ProjectServiceImpl.java:790)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:186)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:145)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4761)
at eu.esdihumboldt.hale.ui.service.project.internal.ProjectServiceImpl.open(ProjectServiceImpl.java:781)
at eu.esdihumboldt.hale.ui.service.project.handler.OpenProjectHandler.execute(OpenProjectHandler.java:40)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:295)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
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:498)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:252)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:234)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:152)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:493)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:486)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:210)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:799)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:675)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$7(HandledContributionItem.java:659)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:592)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4180)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3769)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:694)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:606)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at eu.esdihumboldt.hale.ui.application.Application.run(Application.java:117)
at eu.esdihumboldt.hale.ui.application.Application.run(Application.java:1)
at eu.esdihumboldt.hale.common.app.AbstractApplication.run(AbstractApplication.java:51)
at eu.esdihumboldt.hale.common.app.AbstractApplication.start(AbstractApplication.java:33)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
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:498)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
Instead of always having to connect to a DBMS, enable hale to read a schema directly from a *.SQL file.
Splash screen and icons (and maybe about) should be updated to the new halestudio CI.
S57 is a format used for Electronic Navigation Charts. There is a GDAL Reader available:
http://www.gdal.org/drv_s57.html
Support needs to be provided for schema and instance reading.
When opening a project that has cells defined only in the base alignment, the alignment view will be empty. Also, the entries in the Schema Explorer are not colored. It seems no event is fired in that case.
When performing "Transform External Data" or "Import Source Data", hale should partition requests, e.g. by using the WFS 2.0 pagination capabilities or by using WFS 1.1.0 vendor-specific parameters.
Ideally, hale first requests resultType=hits
, and then uses &startIndex=0&maxFeatures=500
for individual requests. This feature might require the user to select the type of WFS (Geoserver or deegree, ...)
It should be possible to remove a single loaded source data set via the project view.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.