{"id":26525022,"url":"https://github.com/geosiris-technologies/webstudio","last_synced_at":"2025-03-21T14:50:33.579Z","repository":{"id":59683036,"uuid":"534704773","full_name":"geosiris-technologies/webstudio","owner":"geosiris-technologies","description":"The WebStudio is a web application that allows to manipulate energyml file (such as EPC or individual xml files)","archived":false,"fork":false,"pushed_at":"2024-12-17T10:37:01.000Z","size":7964,"stargazers_count":1,"open_issues_count":6,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-17T11:33:58.011Z","etag":null,"topics":["eml","energistics","energyml","epc","etp","java","javascript","maven","prodml","resqml","threejs","tomcat","web","web-app","web-application","witsml"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/geosiris-technologies.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-09T15:43:25.000Z","updated_at":"2024-09-11T13:03:42.000Z","dependencies_parsed_at":"2023-11-16T15:45:33.765Z","dependency_job_id":"e2d9fe37-2c96-4adf-84e4-9a6dcdd13152","html_url":"https://github.com/geosiris-technologies/webstudio","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geosiris-technologies%2Fwebstudio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geosiris-technologies%2Fwebstudio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geosiris-technologies%2Fwebstudio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geosiris-technologies%2Fwebstudio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/geosiris-technologies","download_url":"https://codeload.github.com/geosiris-technologies/webstudio/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244816334,"owners_count":20515073,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eml","energistics","energyml","epc","etp","java","javascript","maven","prodml","resqml","threejs","tomcat","web","web-app","web-application","witsml"],"created_at":"2025-03-21T14:50:32.413Z","updated_at":"2025-03-21T14:50:33.552Z","avatar_url":"https://github.com/geosiris-technologies.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WebStudio\n\n[![SonarCloud](https://sonarcloud.io/images/project_badges/sonarcloud-orange.svg)](https://sonarcloud.io/summary/new_code?id=geosiris-technologies_webstudio)\n\n## Introduction\n\nThe WebStudio is a web application that allows to manipulate energyml file (such as EPC or individual xml files)\n\n## Features\n\n- Edit/create energyml (resqml/witsml/prodml) files.\n- Working with [ETP](https://www.energistics.org/energistics-transfer-protocol/) servers\n- Generate EPC files\n- Validation of EPC file content\n- Graph and tree visualisation of energyml data\n- 3D data visualization\n\n## Requirements\n\n- Java 11\n- Maven\n- Tomcat 10\n- Docker\n- Docker-compose\n\n## Version History\n\n- 1.0.1:\n    - Initial working Release\n- 1.0.2:\n    - ETP connexion bug fix\n- 1.0.9:\n    - Better Ui\n    - Possibility to import only some element from an EPC file\n    - 3D vue to visualise some elements from an ETP server. Supported elements : \n      - TriangualtedSetRepresentation\n      - PolylineSetRepresentation\n      - PointSetRepresentation\n- 1.0.11:\n    - 3D visu : \n        - *ColorInformation* in a *GraphicalInformationSet* can be used if it references an **HSV color** in a *DiscreteColorMap*\n\n- 1.0.14:\n    - REST API : \n        - A REST API has been added to be able to validate/fix EPC/xml files.\n    - Bugfix : \n      - Sometimes export the EPC file was failing from the interface. It was due to specific entities that were not supported for export.\n      - Witsml/Prodml objects (like **Log**) can contain as *sub-objects* other *AbstractObject*. They are now detected during validation/auto-correction.\n\n- 1.0.15:\n  - Bugfix\n  - About button added in the interface to link to github\n  - Verifications:\n    - Verification on objectVersion in DOR\n\n## License\n\nThis project is licensed under the Apache 2.0 License - see the `LICENSE` file for details\n\n## Support\n\nPlease enter an issue in the repo for any questions or problems.\n\n## Run the code :\n\nSee project [webstudio-platfrom](https://github.com/geosiris-technologies/webstudio-platform)\n\n## Compile the project:\n\n```bash\nmvn -U clean package\n```\n\nIf you do not have a **settings.xml** file, please copy the **ci_settings.xml** file and replace the **${env.CI_JOB_TOKEN}** variable by your own token, and save this new file as **settings.xml**\n\n## Related projects :\n\n - https://github.com/geosiris-technologies/cloud-storage-api\n - https://github.com/geosiris-technologies/energyml-java-generator\n - https://github.com/geosiris-technologies/energyml-utils\n - https://github.com/geosiris-technologies/etpproto-java\n - https://github.com/geosiris-technologies/etptypes-java\n\n## Setting up project :\n\n### With ini file :\n\nThe WebStudio configuration can be done with a \".ini\" file. Examples are given in the \"docker/\" folder of this projet.\nTo be found by the WebStudio, you must set the environment variable **WS_CONFIG_INI_FILE_PATH** to the path of this file (inside the docker instance). \nExample in a dockerFile : \n```dockerfile\nENV WS_CONFIG_INI_FILE_PATH /config/sample-ws-config.ini\n```\n\n**User Database**\n\nYour can parametrize the WebStudio to use or not a user database with postgresSQL.\nTo enable this feature, set the property **enableUserDB** to **true** in the *webstudio* section.\n```ini\n[webstudio]\n...\nenableUserDB=true\n...\n```\n\n\nTo configure the database connection you can modify the ini file (with your own values) by creating a *userdb* section : \n```ini\n[userdb]\ndatabaseType=postgres \nhost=psql_demo\nport=5432\nlogin=postgres\npassword=pwd_ws_DEMO\nhashSalt=mqgztZ1VbL4cOwFjkwbARY\n```\n\n**User Workspace persitence**\n\nThe WebStudio also allows to save the work in progress for each user. This feature allows to recover data even if the user has been disconnected.+\n\n*Warning :* Thuis feature is only enabled if the user-database is also enabled.\n\nTo enable this feature, set the property **enableWorkspace** to **true** in the *webstudio* section.\n```ini\n[webstudio]\n...\nenableWorkspace=true\n...\n```\n\nTo configure the storage of the xml files, you can use an S3 bucket, Azure Blob Storage, or Google Cloud Storage.\n\nExample for bucket s3 :\n```ini\n[s3]\nlocalstackEnabled=true\n; must not have underscore in the url !\nlocalstackEndpoint=http://workspace-minio:9000 \nlocalstackRegion=us-east-1\naccessKey=minioadmin\nsecretKey=minioadmin\n```\n\nExample for Azure :\n```ini\n[azureblobstorage]\nconnectionString=YOUR_VALUE \ncontainerName=CONTAINER_NAME\n```\n\nExample for Google :\n```ini\n[googlecloudstorage]\nkeyfile=PATH_TO_YOUR_FILE \n```\n\n### With environment variables:\n\nAll variables set in the ini file can be **overwritten** with environment variable. To set variables you must follow the naming rule : \n```\n[INI_SECTION_LOWERCASE]_[VARIABLE_WITH_CASE]\n```\n\nExample for S3 Property in a docker-compose : \n```dockerfile\nenvironment:\n  webstudio_enableUserDB: true\n  webstudio_enableWorkspace: true\n  workspace_databaseType: s3\n  s3_localstackEndpoint: http://my-workspace:9000 \n  s3_accessKey: myAdminLogin\n  s3_secretKey: myAdminPassword\n```\n\n## Change the https certs:\n\nGenerate the key with your password\n```bash\nkeytool -genkey -alias tomcat -keyalg RSA -keystore sample-key.crt -storepass DemoCRT_password\n```\n\nChange the **docker/server-production.xml** to have a connector like this:\n\n```java \n\u003cConnector\n    protocol=\"org.apache.coyote.http11.Http11NioProtocol\"\n    port=\"8443\"\n    maxThreads=\"150\"\n    SSLEnabled=\"true\"\u003e\n  \u003cSSLHostConfig\u003e\n    \u003cCertificate\n      certificateKeystoreFile=\"/usr/certificates/sample-key.crt\"\n      certificateKeystorePassword=\"DemoCRT_password\"\n      type=\"RSA\"\n      /\u003e\n    \u003c/SSLHostConfig\u003e\n\u003c/Connector\u003e\n```\n\n## REST API\n\nThe WebStudio provides a simple REST API to validate and correct EPC/xml files.\n\n### Validation : \"/EnergymlValidation\"\n\nA post request on the endpoint \"/EnergymlValidation\" with files inside \"form-data\" will return a json file containing information about the correctness of your xml/epc files.\n\nThe messages help you with a dotted notation for each error. Example : *\".ChanelSet.O.Channel.1\"* means the 2nd Channel xml element in the 1st sub xml element \"ChannelSet\".\n\nExample with postman : \n![POSTMAN-validation-request](doc/image/REST/postman-energyml-validation.png)\n\n### Correction : \"/EnergymlFix\"\n\nA post request on the endpoint \"/EnergymlFix\" with files inside \"form-data\" will return an EPC file containing all of your xml files (even taken from an input EPC file), and also a log file that describes the modifications done to correct your entities.\n\nFor now the only correction done is on DOR information. If an object refers to an other one with its UUID, the *Title* and the *QualifiedType*/*ContentType* are verified and eventually fixed.\n\n**Export version:** The resulting EPC can follow the old file naming convention \"/[ENERGYML_TYPE]\\_[UUID].xml\" but also the new one : \"/[PACKAGE][PACKAGE\\_VERSION]/[ENERGYML\\_TYPE]_[UUID].xml\". The new version is obtainable by sending a parameter called \"version\" with the value **EXPANDED** (uppercase).\n\nExample with postman : \n![POSTMAN-correction-request](doc/image/REST/postman-energyml-fix.png)\n\n### Correction : \"/ETPSurfaceToFile\"\n\nA post request on the endpoint \"/ETPSurfaceToFile\" with files inside \"form-data\" will return a 3D surface file in text format.\n\n**Format:** The format can be \"off\" or \"obj\".\n\nExample with postman : \n![POSTMAN-correction-request](doc/image/REST/postman-etp-surface-to-file.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeosiris-technologies%2Fwebstudio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeosiris-technologies%2Fwebstudio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeosiris-technologies%2Fwebstudio/lists"}