Some questions about WFS-T with Openlayers3 - openlayers-3

Recently, I am working for a web based mapping tool with Openlayers3. I choose Postgres for database, Geoserver for map server which publish the layer from database source. The questions is listing as Below:
1. I want to save new drawn geometry to database, how can i do: directly connect to database, or connect to geoserver with writeTranscation, then change databse automatically?
2. If should program with writeTranction, what kind of format i should initiate, (ol.format.gml or others)?
3. What is featureType, How i know the value of, in order to initiate?

You can always do the transaction directly on the DB but using WFS-T through geoserver will save you time and also will make you compatitable if you deside ,in the future, to change the DB for example from Postgres to Oracle. WFS trnasaction is a protocol accepting the geometry and/or attribute to insert or modify and then geoserver has to translate the xml to proper SQL insert or update or delete.
GML is defenetly supported by geoserver for the transaction. I am not sure whether it support any other format for transactions. You can get an example using GML within the "demo requests" area of your installed geoserver.
Featuretype is the layers configured within geoserver. So whenever you add a new layer this is the feature type. The synatx ussually is workspace:layername

Related

Generate a table in the UI Designer from a local variable and from business variable

I have a connector that selects data from an external database in Bonitasoft, I was able to assign the result of this select to a process variable and display the contents of that variable in the UI Designer in an Input type field, however I need to display this in a table, as I configure This in the UI Designer to display the contents of my process variable in a table, if possible show the step by step thank you. Another thing as I can also pass the contents of my connector to a business variable and then display in UI Designer also if needed
First of all I want to draw your attention that using business or process variables to store data already stored in an external database will lead to duplication.
Recommended solution would be to use a REST API extension (such as REST API SQL data source) to query the data from the external database and use this REST API extension in the forms.
Now if you are ok with duplication of data you can refer to an example I create that demonstrate how to set process and business data with PostgreSQL connector output and then display the variables in form table widgets.
I highly recommend to use business variable and if possible consider migrating the data from the external database to the business data database.

Handling more than one db server/different schema in the same server in a single application

As part of one of the requirements in our project we need to connect to a DB based on input in the UI and then fetch the result accordingly. Now this db can be on different db server or in the same db server it can be a different schema.
We are looking to do it in the most efficient way.
One of the ways we have figured out is having the db connection information (like db server, schema etc) in separate properties files. Based on the input from the UI, we pass the input to a db factory that will read the corresponding properties file and will return the corresponding db connection if it already exists, if it doesn't then it will create a new connection and will return it.
We are using spring; we use weblogic for application deployment.
The most efficient way would be to let the respective functions "know" where to look for the requested data. But that's a lot of work in advance.
If the schemes describe similar data (e.g. address data), think about merging the data or the implementation of an frontend/proxy. Both ways would delegate the "looking for data" to the DB-Server(s) which should be able to handle each request way faster and more efficient than any program-logic.

Binding a irregular URL encoded POST request with Nancy

I'm supposed to make an old sqlite database editable trough a Sketchup Plugin in its WebDialog. Sketchups Ruby is not able to install the sqlite3 gem and since I already need to display the table in a WebDialog, I opted for a micro service with the help of Nancy. The existing Plugin already uses the dhtmlxSuite and its Grid Component is exactly what I need. They even offer a Connector that can send requests based on the actions of the user in the grid.
They also offer a connector for the server side, but that too does not work with sqlite. I already managed to connect to my database, used Dapper to bin the result of an SQL query to an object and return that data with a manually crafted JSON object. Very hacky, but it populates the data successful.
Now the client-Connector sends data manipulated by the user (delete and insert is forbidden) back with an url encoded POST request that looks quite weird:
4_gr_id=4&4_c0=0701.041&4_c1=Diagonale%20f%3Fr%202.07%20X%201.50%20m&4_c2=AR&4_c3=8.3&4_c4=380&4_c5=38.53&4_c6=0&4_c7=0&4_!nativeeditor_status=updated&ids=4
I'm not sure exactly why the hell they would use the row index inside the key for the key-value pairs, but this just makes my life that much harder. The only thing that comes to my mind is extracting the data I'm interested in with a regex, but that sounds even worse than what I did before.
Any suggestions for me how I could map that POST request to something usable?

CouchDB and iOS

I need some help with a CouchDB iOS project.
I'm using Apache CouchDB Server and the couchbase-lite iOS Framework.
On my CouchDB I have a template document.
- CouchDB Server
- database
- template
- document 1
- document 2
- ...
My goal is to only synchronise my iPad with this template document to get the latest data which my application needs.
But when I enter some data on my iPad, I want that this data should be pushed only to couchBase Server.
How can I "tell" my application to synchronise only one file and not the entire database with my server and at the end how can I "tell" my application to only push the data that is input from user side ?
More importantly, Do I need two databases on my server? One for the template and a second one for user input data?
If YES, then I just need to know how I can only push my data.
Guidance needed. Thanks.
This is how I solve this:
I tend to add a 'last update' date to all my documents, and store this in a format that means they'll be sorted in time order (epoch or yyymmddhhmmss) both do.
Create a view that uses the update time as a date.
On your client, store the time since you last updated.
When you update, access the view with a startkey parameter set to the last update date.
You can then either use 'include-docs=true' to get the documents as you query the view.
I tend to use 'include-docs=false' though as it means when a lot of documents have been updated I transfer less data in a single query. I then just directly access each document id that the view returns.

How to handle multiple database accesses?

In my program I have multiple databases. One is fixed and cannot be changed, but there are also some others, the so called user databases.
I thought now I have to start for every database one connection and to connect to each data dictionary. How is it possible to connect to more than one database with one connection by handing over the data dictionary filename? Btw. I am using a local server.
thank you very much,
André
P.S.: Okay I might find the answer to my problem.
The Key word is CreateDDLink. The procedure is connecting to another data dictionary, but before a master dictionary has to be set.
Links may be what you are looking for as you indicated in the question. You can use the API or SQL to create a permanent link alias, or you can dynamically create links on the fly.
I would recomend reviewing this specific help file page: Using Tables from Multiple Data Dictionaries
for a permanent alias (using SQL) look at sp_createlink. You can either create the link to authenticate the current user or set up the link to authenticate as a specific user. Then use the link name in your SQL statements.
select * from linkname.tablename
Or dynamically you can use the following which will authenticate the current user:
select * from "..\dir\otherdd.add".table1
However, links are only available to SQL. If you want to use the table directly (i.e. via a TAdsTable component) you will need to create views. See KB 080519-2034. The KB mentions you can't post updates if the SQL statement for the view results in a static cursor, but you can get around that by creating triggers on the view.

Resources