diff --git a/plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF index a7d216473789597aa5b3cc37720b902f72bb20f7..78b6a29102101d308a72ffe869a6ad8ccb47cbf3 100644 --- a/plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF @@ -13,7 +13,6 @@ Export-Package: org.jkiss.dbeaver, org.jkiss.dbeaver.registry, org.jkiss.dbeaver.registry.datatype, org.jkiss.dbeaver.registry.driver, - org.jkiss.dbeaver.registry.formatter, org.jkiss.dbeaver.registry.tools, org.jkiss.dbeaver.registry.updater, org.jkiss.dbeaver.runtime, diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties index 86900639eab09e6f7e5a861c04686e49327e4a76..923654d276b9a89808539f295963abcf18c4ede1 100644 --- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties +++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties @@ -2,16 +2,13 @@ Bundle-Vendor = JKISS Bundle-Name = DBeaver Core Plug-in -extension-point.org.jkiss.dbeaver.pluginService.name = Plugin service extension-point.org.jkiss.dbeaver.mavenRepository.name = Maven repositories config extension-point.org.jkiss.dbeaver.dataSourceProvider.name = DataSource provider extension-point.org.jkiss.dbeaver.dataSourceView.name = DataSource views extension-point.org.jkiss.dbeaver.databaseEditor.name = Custom Entity Editor extension-point.org.jkiss.dbeaver.dataTypeProvider.name = DataType provider extension-point.org.jkiss.dbeaver.dataManager.name = Data value managers -extension-point.org.jkiss.dbeaver.dataFormatter.name = Data value formatters extension-point.org.jkiss.dbeaver.objectManager.name = Database object managers -extension-point.org.jkiss.dbeaver.aggregateFunction.name = Aggregate Functions extension-point.org.jkiss.dbeaver.sqlCommand.name = SQL script commands extension-point.org.jkiss.dbeaver.sqlFormatter.name = SQL formatters extension-point.org.jkiss.dbeaver.resourceHandler.name = Resource Handlers @@ -322,38 +319,6 @@ command.org.jkiss.dbeaver.core.process.stop.description=Terminates running proce command.org.jkiss.dbeaver.ui.editors.text.content.format.name=Content Format command.org.jkiss.dbeaver.ui.editors.text.content.format.description=Format text -DateFormatter.date.label=Date -DateFormatter.date.general.label=General -DateFormatter.date.general.pattern.label=Pattern -DateFormatter.date.general.pattern.description=Date pattern - -DateFormatter.time.label=Time -DateFormatter.time.general.label=General -DateFormatter.time.general.pattern.label=Pattern -DateFormatter.time.general.pattern.description=Time pattern - -DateFormatter.timestamp.label=Timestamp -DateFormatter.timestamp.general.label=General -DateFormatter.timestamp.general.pattern.label=Pattern -DateFormatter.timestamp.general.pattern.description=Timestamp pattern - -DateFormatter.number.label=Numbers -DateFormatter.number.general.label=General -DateFormatter.number.general.grouping.label=Use Grouping -DateFormatter.number.general.grouping.description=Tells grouping is used in this format -DateFormatter.number.general.maxIntDigits.label=Maximum integer digits -DateFormatter.number.general.maxIntDigits.description=Maximum integer digits -DateFormatter.number.general.minIntDigits.label=Minimum integer digits -DateFormatter.number.general.minIntDigits.description=Minimum integer digits -DateFormatter.number.general.maxFractDigits.label=Maximum fraction digits -DateFormatter.number.general.maxFractDigits.description=Maximum fraction digits -DateFormatter.number.general.minFractDigits.label=Minimum fraction digits -DateFormatter.number.general.minFractDigits.description=Minimum fraction digits -DateFormatter.number.general.useTypeScale.label=Use data type scale for fraction digits -DateFormatter.number.general.useTypeScale.description=Use column/attribute data type scale as minimum fraction digits number -DateFormatter.number.general.roundingMode.label=Rounding mode -DateFormatter.number.general.roundingMode.description=Rounding mode - menu.navigate=Navigate menu.search=Se&arch menu.database=&Database diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_de.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_de.properties index 15bd580e93a6c9639f5fb82da927641aed032109..15e08c6f66ae33654c79bac196429e14651b6fd8 100644 --- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_de.properties +++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_de.properties @@ -3,35 +3,6 @@ # Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) # Copyright (C) 2016 Karl Griesser (fullref@gmail.com) -DateFormatter.date.general.label = Allgemein -DateFormatter.date.general.pattern.description = Datumsmuster -DateFormatter.date.general.pattern.label = Muster -DateFormatter.date.label = Datum -DateFormatter.number.general.grouping.description = Gruppierung wird bei diesem Format verwendet -DateFormatter.number.general.grouping.label = Gruppierung verwenden -DateFormatter.number.general.label = Allgemein -DateFormatter.number.general.maxFractDigits.description = Maximale Anzahl an Nachkommastellen -DateFormatter.number.general.maxFractDigits.label = Maximale Anzahl an Nachkommastellen -DateFormatter.number.general.maxIntDigits.description = Maximale Anzahl an Vorkommastellen -DateFormatter.number.general.maxIntDigits.label = Maximale Anzahl an Vorkommastellen -DateFormatter.number.general.minFractDigits.description = Minimale Anzahl an Nachkommastellen -DateFormatter.number.general.minFractDigits.label = Minimale Anzahl an Nachkommastellen -DateFormatter.number.general.minIntDigits.description = Minimale Anzahl an Vorkommastellen -DateFormatter.number.general.minIntDigits.label = Minimale Anzahl an Vorkommastellen -DateFormatter.number.general.roundingMode.description = Rundungsmodus -DateFormatter.number.general.roundingMode.label = Rundungsmodus -DateFormatter.number.general.useTypeScale.description = Verwendung der Spalten-/Attributdatentyp-Skala als minimale Bruchziffernanzahl -DateFormatter.number.general.useTypeScale.label = Datentypskala f\u00FCr Bruchziffern verwenden -DateFormatter.number.label = Zahlen -DateFormatter.time.general.label = Allgemein -DateFormatter.time.general.pattern.description = Zeitmuster -DateFormatter.time.general.pattern.label = Muster -DateFormatter.time.label = Zeit -DateFormatter.timestamp.general.label = Allgemein -DateFormatter.timestamp.general.pattern.description = Zeitstempelmuster -DateFormatter.timestamp.general.pattern.label = Muster -DateFormatter.timestamp.label = Zeitstempel - category.dbconnection.description = Datenbankverbindungsbefehle category.dbconnection.name = Verbindung category.dbnavigator.description = Datenbanknavigatorbefehle diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_es.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_es.properties index 1b0db7c371e183cd7f54e6d21d9974a0c0c64b70..055596999e4c0227667327a24f2858ba18392fdc 100644 --- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_es.properties +++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_es.properties @@ -100,32 +100,7 @@ command.org.jkiss.dbeaver.core.process.stop.name = Terminar proceso command.org.jkiss.dbeaver.core.process.stop.description = Terminar proceso en ejecuci\u0443n command.org.jkiss.dbeaver.ui.editors.text.content.format.name = Formatear contenidp command.org.jkiss.dbeaver.ui.editors.text.content.format.description = Formatear texto -DateFormatter.date.label = Fecha -DateFormatter.date.general.label = General -DateFormatter.date.general.pattern.label = Cadena de Formato -DateFormatter.date.general.pattern.description = Cadena de formato de las fechas -DateFormatter.time.label = Hora -DateFormatter.time.general.label = General -DateFormatter.time.general.pattern.label = Cadena de Formato -DateFormatter.time.general.pattern.description = Cadena de formato de las horas -DateFormatter.timestamp.label = Fecha/Hora -DateFormatter.timestamp.general.label = General -DateFormatter.timestamp.general.pattern.label = Cadena de formato de fecha/hora -DateFormatter.timestamp.general.pattern.description = Cadena de formato de fecha/hora -DateFormatter.number.label = N\u044Ameros -DateFormatter.number.general.label = General -DateFormatter.number.general.grouping.label = Usar agrupaci\u0443n -DateFormatter.number.general.grouping.description = Indica qu\u0439 agrupaci\u0443n se usa en el formato -DateFormatter.number.general.maxIntDigits.label = M\u0431ximas cifras enteras -DateFormatter.number.general.maxIntDigits.description = M\u0431ximas cifras enteras -DateFormatter.number.general.minIntDigits.label = M\u043Dnimas cifras enteras -DateFormatter.number.general.minIntDigits.description = M\u043Dnimas cifras enteras -DateFormatter.number.general.maxFractDigits.label = M\u0431ximas cifras decimales -DateFormatter.number.general.maxFractDigits.description = M\u0431ximas cifras decimales -DateFormatter.number.general.minFractDigits.label = M\u043Dximas cifras decimales -DateFormatter.number.general.minFractDigits.description = M\u043Dximas cifras decimales -DateFormatter.number.general.roundingMode.label = Modo de redondeo -DateFormatter.number.general.roundingMode.description = Modo de redondeo + menu.database = Base de Datos menu.database.tools = Herramientas menu.sqleditor = Editor SQL diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_fr.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_fr.properties index a266ed647587b7293113b5370a36198ea78d9322..069d3d4d9bbd8c3653083edfa1ac0bdb7dcc480b 100644 --- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_fr.properties +++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_fr.properties @@ -6,14 +6,11 @@ Bundle-Name = Extension Noyau DBeaver extension.org.jkiss.dbeaver.DBeaverNature.name = DBeaver Nature -extension-point.org.jkiss.dbeaver.pluginService.name = Service d'extensions extension-point.org.jkiss.dbeaver.mavenRepository.name = Config des d\u00E9p\u00F4ts Maven extension-point.org.jkiss.dbeaver.dataSourceProvider.name = Fournisseur de Sources de donn\u00E9es extension-point.org.jkiss.dbeaver.databaseEditor.name = Editeur d'entit\u00E9 personnalis\u00E9es extension-point.org.jkiss.dbeaver.dataTypeProvider.name = Fournisseur de types de donn\u00E9es extension-point.org.jkiss.dbeaver.dataManager.name = Gestionnaires de donn\u00E9es -extension-point.org.jkiss.dbeaver.dataFormatter.name = Formateurs de donn\u00E9es -extension-point.org.jkiss.dbeaver.aggregateFunction.name = Fonctions d'aggr\u00E9gation extension-point.org.jkiss.dbeaver.sqlCommand.name = Commandes de scripts SQL extension-point.org.jkiss.dbeaver.sqlFormatter.name = Formateurs SQL extension-point.org.jkiss.dbeaver.resourceHandler.name = Handlers de ressources @@ -33,35 +30,6 @@ view.shell.process.title = Processus view.database.output.title=Sortie view.sql.results.title=Donn\u00E9es -DateFormatter.date.general.label = G\u00E9n\u00E9ral -DateFormatter.date.general.pattern.description = Mod\u00E8le de date -DateFormatter.date.general.pattern.label = Mod\u00E8le -DateFormatter.date.label = Date -DateFormatter.number.general.grouping.description = Indique un regroupement dans ce format -DateFormatter.number.general.grouping.label = Regrouper -DateFormatter.number.general.label = G\u00E9n\u00E9ral -DateFormatter.number.general.maxFractDigits.description = Nombre maximal de chiffres apr\u00E8s la virgule -DateFormatter.number.general.maxFractDigits.label = Nombre maximal de chiffres apr\u00E8s la virgule -DateFormatter.number.general.maxIntDigits.description = Nombre maximal de chiffres entiers -DateFormatter.number.general.maxIntDigits.label = Nombre maximal de chiffres entiers -DateFormatter.number.general.minFractDigits.description = Nombre minimal de chiffres apr\u00E8s la virgule -DateFormatter.number.general.minFractDigits.label = Nombre minimal de chiffres apr\u00E8s la virgule -DateFormatter.number.general.minIntDigits.description = Nombre minimal de chiffres entiers -DateFormatter.number.general.minIntDigits.label = Nombre minimal de chiffres entiers -DateFormatter.number.general.useTypeScale.label = Utiliser l'\u00E9chelle du type de donne\u00E9s pour les chiffres \u00E0 virgules -DateFormatter.number.general.useTypeScale.description = Utiliser la colonne/attribut d'\u00E9chelle du type de donne\u00E9s comme nombre minimal de chiffres apr\u00E8s la virgule -DateFormatter.number.general.roundingMode.description = R\u00E8gle d'arrondissement -DateFormatter.number.general.roundingMode.label = R\u00E8gle d'arrondissement -DateFormatter.number.label = Nombre -DateFormatter.time.general.label = G\u00E9n\u00E9ral -DateFormatter.time.general.pattern.description = Mod\u00E8le de date/heure -DateFormatter.time.general.pattern.label = Mod\u00E8le -DateFormatter.time.label = Date/heure -DateFormatter.timestamp.general.label = G\u00E9n\u00E9ral -DateFormatter.timestamp.general.pattern.description = Mod\u00E8le d'horodatage -DateFormatter.timestamp.general.pattern.label = Mod\u00E8le -DateFormatter.timestamp.label = Horodatage - category.dbconnection.description = Connexion \u00E0 une base de donn\u00E9es category.dbconnection.name = Connexion category.dbnavigator.description = Navigateur de bases de donn\u00E9es diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_it.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_it.properties index 93ba93683ba89b29c4bb7217453f311d55d425d6..aa68604b204f596a2397695e696e2fcd72450331 100644 --- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_it.properties +++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_it.properties @@ -98,32 +98,7 @@ command.org.jkiss.dbeaver.core.process.stop.name = Termina processo command.org.jkiss.dbeaver.core.process.stop.description = Termina processo in esecuzione command.org.jkiss.dbeaver.ui.editors.text.content.format.name = Formatta contenuto command.org.jkiss.dbeaver.ui.editors.text.content.format.description = Formatta testo -DateFormatter.date.label = Data -DateFormatter.date.general.label = Generale -DateFormatter.date.general.pattern.label = Formato -DateFormatter.date.general.pattern.description = Formato Data -DateFormatter.time.label = Ora -DateFormatter.time.general.label = Generale -DateFormatter.time.general.pattern.label = Formato -DateFormatter.time.general.pattern.description = Formato Ora -DateFormatter.timestamp.label = Data/Oa -DateFormatter.timestamp.general.label = Generale -DateFormatter.timestamp.general.pattern.label = Formato -DateFormatter.timestamp.general.pattern.description = Formato Data/Ora -DateFormatter.number.label = Numeri -DateFormatter.number.general.label = Generale -DateFormatter.number.general.grouping.label = Usa il Raggruppamento -DateFormatter.number.general.grouping.description = Segnala quale raggruppamento \u00E8 usato in questo formato -DateFormatter.number.general.maxIntDigits.label = Massimo intero per le cifre -DateFormatter.number.general.maxIntDigits.description = Massimo intero per le cifre -DateFormatter.number.general.minIntDigits.label = Minimo intero per le cifre -DateFormatter.number.general.minIntDigits.description = Minimo intero per le cifre -DateFormatter.number.general.maxFractDigits.label = Massima frazione per le cifre -DateFormatter.number.general.maxFractDigits.description = Massima frazione per le cifre -DateFormatter.number.general.minFractDigits.label = Minima frazione per le cifre -DateFormatter.number.general.minFractDigits.description = Minima frazione per le cifre -DateFormatter.number.general.roundingMode.label = Modalit\u00E0 di arrotondamento -DateFormatter.number.general.roundingMode.description = Modalit\u00E0 di arrotondamento + menu.database = Database menu.database.tools = Strumenti menu.sqleditor = Editor SQL diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ja.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ja.properties index 9271b9ac70deaacd976af38fb2f4762d1775aa47..174528a7907fb0e058e58abfc9ef618a4ebdc5a9 100644 --- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ja.properties +++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ja.properties @@ -1,13 +1,10 @@ Bundle-Name =DBeaver\u30B3\u30A2\u30D7\u30E9\u30B0\u30A4\u30F3 -extension-point.org.jkiss.dbeaver.pluginService.name =\u30D7\u30E9\u30B0\u30A4\u30F3\u30B5\u30FC\u30D3\u30B9 extension-point.org.jkiss.dbeaver.mavenRepository.name =Maven\u30EA\u30DD\u30B8\u30C8\u30EA\u8A2D\u5B9A extension-point.org.jkiss.dbeaver.dataSourceProvider.name =\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u30D7\u30ED\u30D0\u30A4\u30C0 extension-point.org.jkiss.dbeaver.databaseEditor.name =\u30AB\u30B9\u30BF\u30E0\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u30A8\u30C7\u30A3\u30BF extension-point.org.jkiss.dbeaver.dataTypeProvider.name =\u30C7\u30FC\u30BF\u578B\u30D7\u30ED\u30D0\u30A4\u30C0 extension-point.org.jkiss.dbeaver.dataManager.name =\u30C7\u30FC\u30BF\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC -extension-point.org.jkiss.dbeaver.dataFormatter.name =\u30C7\u30FC\u30BF\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF -extension-point.org.jkiss.dbeaver.aggregateFunction.name =\u96C6\u8A08\u95A2\u6570 extension-point.org.jkiss.dbeaver.sqlCommand.name =SQL\u30B9\u30AF\u30EA\u30D7\u30C8\u30B3\u30DE\u30F3\u30C9 extension-point.org.jkiss.dbeaver.sqlFormatter.name =SQL\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF extension-point.org.jkiss.dbeaver.resourceHandler.name =\u30EA\u30BD\u30FC\u30B9\u30CF\u30F3\u30C9\u30E9 @@ -301,38 +298,6 @@ command.org.jkiss.dbeaver.core.process.stop.description=\u5B9F\u884C\u30D7\u30ED command.org.jkiss.dbeaver.ui.editors.text.content.format.name=\u30B3\u30F3\u30C6\u30F3\u30C4\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 command.org.jkiss.dbeaver.ui.editors.text.content.format.description=\u30C6\u30AD\u30B9\u30C8\u306E\u66F8\u5F0F\u8A2D\u5B9A -DateFormatter.date.label=\u65E5\u4ED8 -DateFormatter.date.general.label=\u4E00\u822C -DateFormatter.date.general.pattern.label=\u30D1\u30BF\u30FC\u30F3 -DateFormatter.date.general.pattern.description=\u65E5\u4ED8\u30D1\u30BF\u30FC\u30F3 - -DateFormatter.time.label=\u6642\u9593 -DateFormatter.time.general.label=\u4E00\u822C -DateFormatter.time.general.pattern.label=\u30D1\u30BF\u30FC\u30F3 -DateFormatter.time.general.pattern.description=\u6642\u9593\u30D1\u30BF\u30FC\u30F3 - -DateFormatter.timestamp.label=\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7 -DateFormatter.timestamp.general.label=\u4E00\u822C -DateFormatter.timestamp.general.pattern.label=\u30D1\u30BF\u30FC\u30F3 -DateFormatter.timestamp.general.pattern.description=\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u30D1\u30BF\u30FC\u30F3 - -DateFormatter.number.label=\u6570\u5B57 -DateFormatter.number.general.label=\u4E00\u822C -DateFormatter.number.general.grouping.label=\u30B0\u30EB\u30FC\u30D7\u5316\u306E\u4F7F\u7528 -DateFormatter.number.general.grouping.description=\u30B0\u30EB\u30FC\u30D7\u5316\u304C\u3053\u306E\u5F62\u5F0F\u3067\u4F7F\u7528\u3055\u308C\u308B\u3053\u3068\u3092\u4F1D\u3048\u308B -DateFormatter.number.general.maxIntDigits.label=\u6700\u5927\u6574\u6570\u6841 -DateFormatter.number.general.maxIntDigits.description=\u6700\u5927\u6574\u6570\u6841 -DateFormatter.number.general.minIntDigits.label=\u6700\u5C0F\u6574\u6570\u6841 -DateFormatter.number.general.minIntDigits.description=\u6700\u5C0F\u6574\u6570\u6841 -DateFormatter.number.general.maxFractDigits.label=\u6700\u5927\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570 -DateFormatter.number.general.maxFractDigits.description=\u6700\u5927\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570 -DateFormatter.number.general.minFractDigits.label=\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570 -DateFormatter.number.general.minFractDigits.description=\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570 -DateFormatter.number.general.useTypeScale.label=\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u306B\u306F\u30C7\u30FC\u30BF\u578B\u5C3A\u5EA6\u3092\u4F7F\u7528\u3059\u308B -DateFormatter.number.general.useTypeScale.description=\u5217/\u5C5E\u6027\u306E\u30C7\u30FC\u30BF\u578B\u306E\u30B9\u30B1\u30FC\u30EB\u3092\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B -DateFormatter.number.general.roundingMode.label=\u4E38\u3081\u30E2\u30FC\u30C9 -DateFormatter.number.general.roundingMode.description=\u4E38\u3081\u30E2\u30FC\u30C9 - menu.database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9 menu.database.tools=\u30C4\u30FC\u30EB menu.database.sql.generate=SQL\u306E\u751F\u6210 diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ru.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ru.properties index 8a6b0457fb2cbd06b8d9e0ad49c9a0968fe22dfd..fe585e76c25ab5dcf830a830f7ef1b1fa9720b43 100644 --- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ru.properties +++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_ru.properties @@ -4,35 +4,6 @@ Bundle-Name = DBeaver \u041F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0430 -Bundle-Vendor = JKISS - -DateFormatter.date.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 -DateFormatter.date.general.pattern.description = \u0428\u0430\u0431\u043B\u043E\u043D \u0434\u0430\u0442\u044B -DateFormatter.date.general.pattern.label = \u0428\u0430\u0431\u043B\u043E\u043D -DateFormatter.date.label = \u0414\u0430\u0442\u0430 -DateFormatter.number.general.grouping.description = \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0443 \u0432 \u044D\u0442\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435 -DateFormatter.number.general.grouping.label = \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0443 -DateFormatter.number.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 -DateFormatter.number.general.maxFractDigits.description = Maximum fraction digits -DateFormatter.number.general.maxFractDigits.label = Maximum fraction digits -DateFormatter.number.general.maxIntDigits.description = Maximum integer digits -DateFormatter.number.general.maxIntDigits.label = \u041C\u0430\u043A\u0441. \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0446\u0438\u0444\u0440 \u0432 \u0447\u0438\u0441\u043B\u0435 -DateFormatter.number.general.minFractDigits.description = Minimum fraction digits -DateFormatter.number.general.minFractDigits.label = Minimum fraction digits -DateFormatter.number.general.minIntDigits.description = Minimum integer digits -DateFormatter.number.general.minIntDigits.label = Minimum integer digits -DateFormatter.number.general.roundingMode.description = \u0420\u0435\u0436\u0438\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F -DateFormatter.number.general.roundingMode.label = \u0420\u0435\u0436\u0438\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F -DateFormatter.number.label = \u0427\u0438\u0441\u043B\u0430 -DateFormatter.time.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 -DateFormatter.time.general.pattern.description = \u0428\u0430\u0431\u043B\u043E\u043D \u0432\u0440\u0435\u043C\u0435\u043D\u0438 -DateFormatter.time.general.pattern.label = \u0428\u0430\u0431\u043B\u043E\u043D -DateFormatter.time.label = \u0412\u0440\u0435\u043C\u044F -DateFormatter.timestamp.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 -DateFormatter.timestamp.general.pattern.description = Timestamp pattern -DateFormatter.timestamp.general.pattern.label = \u0428\u0430\u0431\u043B\u043E\u043D -DateFormatter.timestamp.label = Timestamp - category.dbconnection.description = \u041A\u043E\u043C\u0430\u043D\u0434\u044B \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u0441 \u0411\u0414 category.dbconnection.name = \u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 category.dbnavigator.description = \u041A\u043E\u043C\u0430\u043D\u0434\u044B \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0411\u0414 diff --git a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_zh.properties b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_zh.properties index 3b231526752aa2c4b82cd3475d02972c39432131..4dbd6cd4b43a2f6e01e33461481ef4eb03878784 100644 --- a/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_zh.properties +++ b/plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle_zh.properties @@ -5,37 +5,6 @@ Bundle-Name = DBeaver \u6838\u5FC3\u63D2\u4EF6 -Bundle-Vendor = JKISS - -DateFormatter.date.general.label = \u5E38\u89C4 -DateFormatter.date.general.pattern.description = \u65E5\u671F\u6A21\u5F0F -DateFormatter.date.general.pattern.label = \u6A21\u5F0F -DateFormatter.date.label = \u65E5\u671F -DateFormatter.number.general.grouping.description = \u5728\u8BE5\u683C\u5F0F\u4E2D\u4F7F\u7528\u5206\u7EC4 -DateFormatter.number.general.grouping.label = \u5206\u7EC4 -DateFormatter.number.general.label = \u5E38\u89C4 -DateFormatter.number.general.maxFractDigits.description = \u6700\u591A\u5C0F\u6570\u4F4D\u6570 -DateFormatter.number.general.maxFractDigits.label = \u6700\u591A\u5C0F\u6570\u4F4D\u6570 -DateFormatter.number.general.maxIntDigits.description = \u6700\u5927\u6574\u6570\u4F4D\u6570 -DateFormatter.number.general.maxIntDigits.label = \u6700\u5927\u6574\u6570\u4F4D\u6570 -DateFormatter.number.general.minFractDigits.description = \u6700\u5C11\u5C0F\u6570\u4F4D\u6570 -DateFormatter.number.general.minFractDigits.label = \u6700\u5C11\u5C0F\u6570\u4F4D\u6570 -DateFormatter.number.general.minIntDigits.description = \u6700\u5C0F\u6574\u6570\u4F4D\u6570 -DateFormatter.number.general.minIntDigits.label = \u6700\u5C0F\u6574\u6570\u4F4D\u6570 -DateFormatter.number.general.roundingMode.description = \u53D6\u6574\u6A21\u5F0F -DateFormatter.number.general.roundingMode.label = \u53D6\u6574\u6A21\u5F0F -DateFormatter.number.general.useTypeScale.description = \u4F7F\u7528\u5217\u6216\u5C5E\u6027\u6570\u636E\u7C7B\u578B\u7684\u5C0F\u6570\u4F4D\u6570\u4F5C\u4E3A\u6700\u5C0F\u7684\u5C0F\u6570\u4F4D\u6570 -DateFormatter.number.general.useTypeScale.label = \u4F7F\u7528\u6570\u636E\u7C7B\u578B\u7684\u5C0F\u6570\u4F4D\u6570 -DateFormatter.number.label = \u6570\u5B57 -DateFormatter.time.general.label = \u5E38\u89C4 -DateFormatter.time.general.pattern.description = \u65F6\u95F4\u6A21\u5F0F -DateFormatter.time.general.pattern.label = \u6A21\u5F0F -DateFormatter.time.label = \u65F6\u95F4 -DateFormatter.timestamp.general.label = \u5E38\u89C4 -DateFormatter.timestamp.general.pattern.description = \u65F6\u95F4\u6233\u6A21\u5F0F -DateFormatter.timestamp.general.pattern.label = \u6A21\u5F0F -DateFormatter.timestamp.label = \u65F6\u95F4\u6233 - category.dbconnection.description = \u6570\u636E\u5E93\u8FDE\u63A5\u547D\u4EE4 category.dbconnection.name = \u8FDE\u63A5 category.dbnavigator.description = \u6570\u636E\u5E93\u5BFC\u822A\u547D\u4EE4 @@ -385,8 +354,6 @@ editor.folder.name = \u6587\u4EF6\u5939\u7F16\u8F91\u5668 editor.lob.name = \u5927\u578B\u5BF9\u8C61\u7F16\u8F91\u5668 editor.sql.name = SQL \u7F16\u8F91\u5668 -extension-point.org.jkiss.dbeaver.aggregateFunction.name = \u805A\u96C6\u51FD\u6570 -extension-point.org.jkiss.dbeaver.dataFormatter.name = \u6570\u636E\u683C\u5F0F\u5668 extension-point.org.jkiss.dbeaver.dataManager.name = \u6570\u636E\u7BA1\u7406\u5668 extension-point.org.jkiss.dbeaver.dataSourceProvider.name = \u6570\u636E\u6E90\u63D0\u4F9B\u8005 extension-point.org.jkiss.dbeaver.dataSourceView.name = \u6570\u636E\u6E90\u67E5\u770B\u5668 @@ -395,7 +362,6 @@ extension-point.org.jkiss.dbeaver.databaseEditor.name = \u81EA\u5B9A\u4 extension-point.org.jkiss.dbeaver.language.name = \u8BED\u8A00 extension-point.org.jkiss.dbeaver.mavenRepository.name = Maven \u4ED3\u5E93\u914D\u7F6E extension-point.org.jkiss.dbeaver.networkHandler.name = \u7F51\u7EDC\u5904\u7406\u5668 -extension-point.org.jkiss.dbeaver.pluginService.name = \u63D2\u4EF6\u670D\u52A1 extension-point.org.jkiss.dbeaver.product.bundles.name = \u4EA7\u54C1\u5305 extension-point.org.jkiss.dbeaver.resourceHandler.name = \u8D44\u6E90\u5904\u7406\u7A0B\u5E8F extension-point.org.jkiss.dbeaver.resources.name = \u8D44\u6E90 diff --git a/plugins/org.jkiss.dbeaver.core/plugin.xml b/plugins/org.jkiss.dbeaver.core/plugin.xml index 66f093fa5f88a664d85511a84690a40eb27f586c..affd45c22b7e805d848d714603006731f930c6a8 100644 --- a/plugins/org.jkiss.dbeaver.core/plugin.xml +++ b/plugins/org.jkiss.dbeaver.core/plugin.xml @@ -25,7 +25,6 @@ - @@ -3524,46 +3523,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/org.jkiss.dbeaver.model/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.model/META-INF/MANIFEST.MF index 56713be3273875737e495efa37e943ffd4cf0fbf..4658cb9d90e4e925d1fb8b3b96470924011992c4 100644 --- a/plugins/org.jkiss.dbeaver.model/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.model/META-INF/MANIFEST.MF @@ -65,6 +65,7 @@ Export-Package: org.jkiss.dbeaver, org.jkiss.dbeaver.model.struct, org.jkiss.dbeaver.model.struct.rdb, org.jkiss.dbeaver.model.virtual, + org.jkiss.dbeaver.registry.formatter, org.jkiss.dbeaver.runtime, org.jkiss.dbeaver.runtime.encode, org.jkiss.dbeaver.runtime.jobs, diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle.properties index 563d271efa0e3bb41ba86ecfbf2d447e22274a45..74c4e4d94a67040817bcca21de900d6551e497eb 100644 --- a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle.properties +++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle.properties @@ -4,6 +4,41 @@ Bundle-Vendor = JKISS Bundle-Name = DBeaver Model extension-point.org.jkiss.dbeaver.application.name = DBeaver applications +extension-point.org.jkiss.dbeaver.pluginService.name = Plugin service +extension-point.org.jkiss.dbeaver.dataFormatter.name = Data value formatters +extension-point.org.jkiss.dbeaver.aggregateFunction.name = Aggregate Functions + +DateFormatter.date.label=Date +DateFormatter.date.general.label=General +DateFormatter.date.general.pattern.label=Pattern +DateFormatter.date.general.pattern.description=Date pattern + +DateFormatter.time.label=Time +DateFormatter.time.general.label=General +DateFormatter.time.general.pattern.label=Pattern +DateFormatter.time.general.pattern.description=Time pattern + +DateFormatter.timestamp.label=Timestamp +DateFormatter.timestamp.general.label=General +DateFormatter.timestamp.general.pattern.label=Pattern +DateFormatter.timestamp.general.pattern.description=Timestamp pattern + +DateFormatter.number.label=Numbers +DateFormatter.number.general.label=General +DateFormatter.number.general.grouping.label=Use Grouping +DateFormatter.number.general.grouping.description=Tells grouping is used in this format +DateFormatter.number.general.maxIntDigits.label=Maximum integer digits +DateFormatter.number.general.maxIntDigits.description=Maximum integer digits +DateFormatter.number.general.minIntDigits.label=Minimum integer digits +DateFormatter.number.general.minIntDigits.description=Minimum integer digits +DateFormatter.number.general.maxFractDigits.label=Maximum fraction digits +DateFormatter.number.general.maxFractDigits.description=Maximum fraction digits +DateFormatter.number.general.minFractDigits.label=Minimum fraction digits +DateFormatter.number.general.minFractDigits.description=Minimum fraction digits +DateFormatter.number.general.useTypeScale.label=Use data type scale for fraction digits +DateFormatter.number.general.useTypeScale.description=Use column/attribute data type scale as minimum fraction digits number +DateFormatter.number.general.roundingMode.label=Rounding mode +DateFormatter.number.general.roundingMode.description=Rounding mode meta.org.jkiss.dbeaver.model.DBPNamedObject.name.name=Name meta.org.jkiss.dbeaver.model.data.DBDValueLocator.entity.name=Table diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_de.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_de.properties index 58546a6b1ec105f6b4f2ea983110d15d8b2d045f..4f1f4199df22ff0cc8e92a881587e4672f827158 100644 --- a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_de.properties +++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_de.properties @@ -2,10 +2,37 @@ Bundle-Name = DBeaver Model -Bundle-Vendor = JKISS - extension-point.org.jkiss.dbeaver.application.name = DBeaver Anwendungen +DateFormatter.date.general.label = Allgemein +DateFormatter.date.general.pattern.description = Datumsmuster +DateFormatter.date.general.pattern.label = Muster +DateFormatter.date.label = Datum +DateFormatter.number.general.grouping.description = Gruppierung wird bei diesem Format verwendet +DateFormatter.number.general.grouping.label = Gruppierung verwenden +DateFormatter.number.general.label = Allgemein +DateFormatter.number.general.maxFractDigits.description = Maximale Anzahl an Nachkommastellen +DateFormatter.number.general.maxFractDigits.label = Maximale Anzahl an Nachkommastellen +DateFormatter.number.general.maxIntDigits.description = Maximale Anzahl an Vorkommastellen +DateFormatter.number.general.maxIntDigits.label = Maximale Anzahl an Vorkommastellen +DateFormatter.number.general.minFractDigits.description = Minimale Anzahl an Nachkommastellen +DateFormatter.number.general.minFractDigits.label = Minimale Anzahl an Nachkommastellen +DateFormatter.number.general.minIntDigits.description = Minimale Anzahl an Vorkommastellen +DateFormatter.number.general.minIntDigits.label = Minimale Anzahl an Vorkommastellen +DateFormatter.number.general.roundingMode.description = Rundungsmodus +DateFormatter.number.general.roundingMode.label = Rundungsmodus +DateFormatter.number.general.useTypeScale.description = Verwendung der Spalten-/Attributdatentyp-Skala als minimale Bruchziffernanzahl +DateFormatter.number.general.useTypeScale.label = Datentypskala f\u00FCr Bruchziffern verwenden +DateFormatter.number.label = Zahlen +DateFormatter.time.general.label = Allgemein +DateFormatter.time.general.pattern.description = Zeitmuster +DateFormatter.time.general.pattern.label = Muster +DateFormatter.time.label = Zeit +DateFormatter.timestamp.general.label = Allgemein +DateFormatter.timestamp.general.pattern.description = Zeitstempelmuster +DateFormatter.timestamp.general.pattern.label = Muster +DateFormatter.timestamp.label = Zeitstempel + meta.org.jkiss.dbeaver.model.DBPNamedObject.name.name = Name meta.org.jkiss.dbeaver.model.data.DBDValueLocator.entity.name = Tabelle meta.org.jkiss.dbeaver.model.data.DBDValueLocator.uniqueKey.name = Schl\u00FCssel diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_es.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_es.properties new file mode 100644 index 0000000000000000000000000000000000000000..0281763ac84d1f53ca58cdfd1f557ec4e72a20b3 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_es.properties @@ -0,0 +1,26 @@ +DateFormatter.date.label = Fecha +DateFormatter.date.general.label = General +DateFormatter.date.general.pattern.label = Cadena de Formato +DateFormatter.date.general.pattern.description = Cadena de formato de las fechas +DateFormatter.time.label = Hora +DateFormatter.time.general.label = General +DateFormatter.time.general.pattern.label = Cadena de Formato +DateFormatter.time.general.pattern.description = Cadena de formato de las horas +DateFormatter.timestamp.label = Fecha/Hora +DateFormatter.timestamp.general.label = General +DateFormatter.timestamp.general.pattern.label = Cadena de formato de fecha/hora +DateFormatter.timestamp.general.pattern.description = Cadena de formato de fecha/hora +DateFormatter.number.label = N\u044Ameros +DateFormatter.number.general.label = General +DateFormatter.number.general.grouping.label = Usar agrupaci\u0443n +DateFormatter.number.general.grouping.description = Indica qu\u0439 agrupaci\u0443n se usa en el formato +DateFormatter.number.general.maxIntDigits.label = M\u0431ximas cifras enteras +DateFormatter.number.general.maxIntDigits.description = M\u0431ximas cifras enteras +DateFormatter.number.general.minIntDigits.label = M\u043Dnimas cifras enteras +DateFormatter.number.general.minIntDigits.description = M\u043Dnimas cifras enteras +DateFormatter.number.general.maxFractDigits.label = M\u0431ximas cifras decimales +DateFormatter.number.general.maxFractDigits.description = M\u0431ximas cifras decimales +DateFormatter.number.general.minFractDigits.label = M\u043Dximas cifras decimales +DateFormatter.number.general.minFractDigits.description = M\u043Dximas cifras decimales +DateFormatter.number.general.roundingMode.label = Modo de redondeo +DateFormatter.number.general.roundingMode.description = Modo de redondeo diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_fr.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_fr.properties index c060ad5760926f45a6708921553b7c1eb20cc122..8b523e4b55492c5aaf5d08cf817ab5cabec699d3 100644 --- a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_fr.properties +++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_fr.properties @@ -1,5 +1,37 @@ # Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) extension-point.org.jkiss.dbeaver.application.name = DBeaver applications +extension-point.org.jkiss.dbeaver.pluginService.name = Service d'extensions +extension-point.org.jkiss.dbeaver.dataFormatter.name = Formateurs de donn\u00E9es +extension-point.org.jkiss.dbeaver.aggregateFunction.name = Fonctions d'aggr\u00E9gation + +DateFormatter.date.general.label = G\u00E9n\u00E9ral +DateFormatter.date.general.pattern.description = Mod\u00E8le de date +DateFormatter.date.general.pattern.label = Mod\u00E8le +DateFormatter.date.label = Date +DateFormatter.number.general.grouping.description = Indique un regroupement dans ce format +DateFormatter.number.general.grouping.label = Regrouper +DateFormatter.number.general.label = G\u00E9n\u00E9ral +DateFormatter.number.general.maxFractDigits.description = Nombre maximal de chiffres apr\u00E8s la virgule +DateFormatter.number.general.maxFractDigits.label = Nombre maximal de chiffres apr\u00E8s la virgule +DateFormatter.number.general.maxIntDigits.description = Nombre maximal de chiffres entiers +DateFormatter.number.general.maxIntDigits.label = Nombre maximal de chiffres entiers +DateFormatter.number.general.minFractDigits.description = Nombre minimal de chiffres apr\u00E8s la virgule +DateFormatter.number.general.minFractDigits.label = Nombre minimal de chiffres apr\u00E8s la virgule +DateFormatter.number.general.minIntDigits.description = Nombre minimal de chiffres entiers +DateFormatter.number.general.minIntDigits.label = Nombre minimal de chiffres entiers +DateFormatter.number.general.useTypeScale.label = Utiliser l'\u00E9chelle du type de donne\u00E9s pour les chiffres \u00E0 virgules +DateFormatter.number.general.useTypeScale.description = Utiliser la colonne/attribut d'\u00E9chelle du type de donne\u00E9s comme nombre minimal de chiffres apr\u00E8s la virgule +DateFormatter.number.general.roundingMode.description = R\u00E8gle d'arrondissement +DateFormatter.number.general.roundingMode.label = R\u00E8gle d'arrondissement +DateFormatter.number.label = Nombre +DateFormatter.time.general.label = G\u00E9n\u00E9ral +DateFormatter.time.general.pattern.description = Mod\u00E8le de date/heure +DateFormatter.time.general.pattern.label = Mod\u00E8le +DateFormatter.time.label = Date/heure +DateFormatter.timestamp.general.label = G\u00E9n\u00E9ral +DateFormatter.timestamp.general.pattern.description = Mod\u00E8le d'horodatage +DateFormatter.timestamp.general.pattern.label = Mod\u00E8le +DateFormatter.timestamp.label = Horodatage meta.org.jkiss.dbeaver.model.DBPNamedObject.name.name=Nom meta.org.jkiss.dbeaver.model.data.DBDValueLocator.entity.name=Table diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_it.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_it.properties new file mode 100644 index 0000000000000000000000000000000000000000..0af65f17e131773953a26b757e7db2e5418d1ffb --- /dev/null +++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_it.properties @@ -0,0 +1,26 @@ +DateFormatter.date.label = Data +DateFormatter.date.general.label = Generale +DateFormatter.date.general.pattern.label = Formato +DateFormatter.date.general.pattern.description = Formato Data +DateFormatter.time.label = Ora +DateFormatter.time.general.label = Generale +DateFormatter.time.general.pattern.label = Formato +DateFormatter.time.general.pattern.description = Formato Ora +DateFormatter.timestamp.label = Data/Oa +DateFormatter.timestamp.general.label = Generale +DateFormatter.timestamp.general.pattern.label = Formato +DateFormatter.timestamp.general.pattern.description = Formato Data/Ora +DateFormatter.number.label = Numeri +DateFormatter.number.general.label = Generale +DateFormatter.number.general.grouping.label = Usa il Raggruppamento +DateFormatter.number.general.grouping.description = Segnala quale raggruppamento \u00E8 usato in questo formato +DateFormatter.number.general.maxIntDigits.label = Massimo intero per le cifre +DateFormatter.number.general.maxIntDigits.description = Massimo intero per le cifre +DateFormatter.number.general.minIntDigits.label = Minimo intero per le cifre +DateFormatter.number.general.minIntDigits.description = Minimo intero per le cifre +DateFormatter.number.general.maxFractDigits.label = Massima frazione per le cifre +DateFormatter.number.general.maxFractDigits.description = Massima frazione per le cifre +DateFormatter.number.general.minFractDigits.label = Minima frazione per le cifre +DateFormatter.number.general.minFractDigits.description = Minima frazione per le cifre +DateFormatter.number.general.roundingMode.label = Modalit\u00E0 di arrotondamento +DateFormatter.number.general.roundingMode.description = Modalit\u00E0 di arrotondamento diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ja.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ja.properties index f776f2d0cc538ff9616e88bcea01f33d3d0a5955..21ee6667843446e27a757dc4431da37c8133344e 100644 --- a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ja.properties +++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ja.properties @@ -1,6 +1,41 @@ # Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) extension-point.org.jkiss.dbeaver.application.name =DBeaver\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3 +extension-point.org.jkiss.dbeaver.pluginService.name =\u30D7\u30E9\u30B0\u30A4\u30F3\u30B5\u30FC\u30D3\u30B9 +extension-point.org.jkiss.dbeaver.dataFormatter.name =\u30C7\u30FC\u30BF\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF +extension-point.org.jkiss.dbeaver.aggregateFunction.name =\u96C6\u8A08\u95A2\u6570 + +DateFormatter.date.label=\u65E5\u4ED8 +DateFormatter.date.general.label=\u4E00\u822C +DateFormatter.date.general.pattern.label=\u30D1\u30BF\u30FC\u30F3 +DateFormatter.date.general.pattern.description=\u65E5\u4ED8\u30D1\u30BF\u30FC\u30F3 + +DateFormatter.time.label=\u6642\u9593 +DateFormatter.time.general.label=\u4E00\u822C +DateFormatter.time.general.pattern.label=\u30D1\u30BF\u30FC\u30F3 +DateFormatter.time.general.pattern.description=\u6642\u9593\u30D1\u30BF\u30FC\u30F3 + +DateFormatter.timestamp.label=\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7 +DateFormatter.timestamp.general.label=\u4E00\u822C +DateFormatter.timestamp.general.pattern.label=\u30D1\u30BF\u30FC\u30F3 +DateFormatter.timestamp.general.pattern.description=\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u30D1\u30BF\u30FC\u30F3 + +DateFormatter.number.label=\u6570\u5B57 +DateFormatter.number.general.label=\u4E00\u822C +DateFormatter.number.general.grouping.label=\u30B0\u30EB\u30FC\u30D7\u5316\u306E\u4F7F\u7528 +DateFormatter.number.general.grouping.description=\u30B0\u30EB\u30FC\u30D7\u5316\u304C\u3053\u306E\u5F62\u5F0F\u3067\u4F7F\u7528\u3055\u308C\u308B\u3053\u3068\u3092\u4F1D\u3048\u308B +DateFormatter.number.general.maxIntDigits.label=\u6700\u5927\u6574\u6570\u6841 +DateFormatter.number.general.maxIntDigits.description=\u6700\u5927\u6574\u6570\u6841 +DateFormatter.number.general.minIntDigits.label=\u6700\u5C0F\u6574\u6570\u6841 +DateFormatter.number.general.minIntDigits.description=\u6700\u5C0F\u6574\u6570\u6841 +DateFormatter.number.general.maxFractDigits.label=\u6700\u5927\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570 +DateFormatter.number.general.maxFractDigits.description=\u6700\u5927\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570 +DateFormatter.number.general.minFractDigits.label=\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570 +DateFormatter.number.general.minFractDigits.description=\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570 +DateFormatter.number.general.useTypeScale.label=\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u306B\u306F\u30C7\u30FC\u30BF\u578B\u5C3A\u5EA6\u3092\u4F7F\u7528\u3059\u308B +DateFormatter.number.general.useTypeScale.description=\u5217/\u5C5E\u6027\u306E\u30C7\u30FC\u30BF\u578B\u306E\u30B9\u30B1\u30FC\u30EB\u3092\u6700\u5C0F\u5C0F\u6570\u70B9\u4EE5\u4E0B\u306E\u6841\u6570\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B +DateFormatter.number.general.roundingMode.label=\u4E38\u3081\u30E2\u30FC\u30C9 +DateFormatter.number.general.roundingMode.description=\u4E38\u3081\u30E2\u30FC\u30C9 meta.org.jkiss.dbeaver.model.DBPNamedObject.name.name=\u540D\u524D meta.org.jkiss.dbeaver.model.data.DBDValueLocator.entity.name=\u8868 diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ru.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ru.properties index ad339eaabf6cacc2e3a980fb81fb7bed4a29a69a..d42c61f44058a4f63146cc79b8d1752ac6596baa 100644 --- a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ru.properties +++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_ru.properties @@ -1,7 +1,31 @@ # Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) -Bundle-Vendor = JKISS -Bundle-Name = DBeaver Model +DateFormatter.date.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 +DateFormatter.date.general.pattern.description = \u0428\u0430\u0431\u043B\u043E\u043D \u0434\u0430\u0442\u044B +DateFormatter.date.general.pattern.label = \u0428\u0430\u0431\u043B\u043E\u043D +DateFormatter.date.label = \u0414\u0430\u0442\u0430 +DateFormatter.number.general.grouping.description = \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0443 \u0432 \u044D\u0442\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435 +DateFormatter.number.general.grouping.label = \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0443 +DateFormatter.number.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 +DateFormatter.number.general.maxFractDigits.description = Maximum fraction digits +DateFormatter.number.general.maxFractDigits.label = Maximum fraction digits +DateFormatter.number.general.maxIntDigits.description = Maximum integer digits +DateFormatter.number.general.maxIntDigits.label = \u041C\u0430\u043A\u0441. \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0446\u0438\u0444\u0440 \u0432 \u0447\u0438\u0441\u043B\u0435 +DateFormatter.number.general.minFractDigits.description = Minimum fraction digits +DateFormatter.number.general.minFractDigits.label = Minimum fraction digits +DateFormatter.number.general.minIntDigits.description = Minimum integer digits +DateFormatter.number.general.minIntDigits.label = Minimum integer digits +DateFormatter.number.general.roundingMode.description = \u0420\u0435\u0436\u0438\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F +DateFormatter.number.general.roundingMode.label = \u0420\u0435\u0436\u0438\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F +DateFormatter.number.label = \u0427\u0438\u0441\u043B\u0430 +DateFormatter.time.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 +DateFormatter.time.general.pattern.description = \u0428\u0430\u0431\u043B\u043E\u043D \u0432\u0440\u0435\u043C\u0435\u043D\u0438 +DateFormatter.time.general.pattern.label = \u0428\u0430\u0431\u043B\u043E\u043D +DateFormatter.time.label = \u0412\u0440\u0435\u043C\u044F +DateFormatter.timestamp.general.label = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 +DateFormatter.timestamp.general.pattern.description = Timestamp pattern +DateFormatter.timestamp.general.pattern.label = \u0428\u0430\u0431\u043B\u043E\u043D +DateFormatter.timestamp.label = Timestamp meta.org.jkiss.dbeaver.model.data.DBDValueLocator.entity.name=\u0422\u0430\u0431\u043B\u0438\u0446\u0430 meta.org.jkiss.dbeaver.model.data.DBDValueLocator.uniqueKey.name=\u041A\u043B\u044E\u0447 diff --git a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_zh.properties b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_zh.properties index 5eb16aae962348b8a5dd235ec91ed2f32b835936..1c804f4b724e52b8f5b35e055156bc1ea5c480f4 100644 --- a/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_zh.properties +++ b/plugins/org.jkiss.dbeaver.model/OSGI-INF/l10n/bundle_zh.properties @@ -1,6 +1,38 @@ # Copyright (C) 2017 Liu, Yuanyuan (liuyuanyuan@highgo.com) extension-point.org.jkiss.dbeaver.application.name = DBeaver \u5E94\u7528\u7A0B\u5E8F +extension-point.org.jkiss.dbeaver.pluginService.name = \u63D2\u4EF6\u670D\u52A1 +extension-point.org.jkiss.dbeaver.aggregateFunction.name = \u805A\u96C6\u51FD\u6570 +extension-point.org.jkiss.dbeaver.dataFormatter.name = \u6570\u636E\u683C\u5F0F\u5668 + +DateFormatter.date.general.label = \u5E38\u89C4 +DateFormatter.date.general.pattern.description = \u65E5\u671F\u6A21\u5F0F +DateFormatter.date.general.pattern.label = \u6A21\u5F0F +DateFormatter.date.label = \u65E5\u671F +DateFormatter.number.general.grouping.description = \u5728\u8BE5\u683C\u5F0F\u4E2D\u4F7F\u7528\u5206\u7EC4 +DateFormatter.number.general.grouping.label = \u5206\u7EC4 +DateFormatter.number.general.label = \u5E38\u89C4 +DateFormatter.number.general.maxFractDigits.description = \u6700\u591A\u5C0F\u6570\u4F4D\u6570 +DateFormatter.number.general.maxFractDigits.label = \u6700\u591A\u5C0F\u6570\u4F4D\u6570 +DateFormatter.number.general.maxIntDigits.description = \u6700\u5927\u6574\u6570\u4F4D\u6570 +DateFormatter.number.general.maxIntDigits.label = \u6700\u5927\u6574\u6570\u4F4D\u6570 +DateFormatter.number.general.minFractDigits.description = \u6700\u5C11\u5C0F\u6570\u4F4D\u6570 +DateFormatter.number.general.minFractDigits.label = \u6700\u5C11\u5C0F\u6570\u4F4D\u6570 +DateFormatter.number.general.minIntDigits.description = \u6700\u5C0F\u6574\u6570\u4F4D\u6570 +DateFormatter.number.general.minIntDigits.label = \u6700\u5C0F\u6574\u6570\u4F4D\u6570 +DateFormatter.number.general.roundingMode.description = \u53D6\u6574\u6A21\u5F0F +DateFormatter.number.general.roundingMode.label = \u53D6\u6574\u6A21\u5F0F +DateFormatter.number.general.useTypeScale.description = \u4F7F\u7528\u5217\u6216\u5C5E\u6027\u6570\u636E\u7C7B\u578B\u7684\u5C0F\u6570\u4F4D\u6570\u4F5C\u4E3A\u6700\u5C0F\u7684\u5C0F\u6570\u4F4D\u6570 +DateFormatter.number.general.useTypeScale.label = \u4F7F\u7528\u6570\u636E\u7C7B\u578B\u7684\u5C0F\u6570\u4F4D\u6570 +DateFormatter.number.label = \u6570\u5B57 +DateFormatter.time.general.label = \u5E38\u89C4 +DateFormatter.time.general.pattern.description = \u65F6\u95F4\u6A21\u5F0F +DateFormatter.time.general.pattern.label = \u6A21\u5F0F +DateFormatter.time.label = \u65F6\u95F4 +DateFormatter.timestamp.general.label = \u5E38\u89C4 +DateFormatter.timestamp.general.pattern.description = \u65F6\u95F4\u6233\u6A21\u5F0F +DateFormatter.timestamp.general.pattern.label = \u6A21\u5F0F +DateFormatter.timestamp.label = \u65F6\u95F4\u6233 meta.org.jkiss.dbeaver.model.DBPNamedObject.name.name = \u540D\u79F0 meta.org.jkiss.dbeaver.model.data.DBDValueLocator.entity.name = \u8868 diff --git a/plugins/org.jkiss.dbeaver.model/plugin.xml b/plugins/org.jkiss.dbeaver.model/plugin.xml index 49f7dc7047a6063b607ccf4a048a492602b3a75e..43c0efad400b5d6c8d66457a436ce43c05c8d359 100644 --- a/plugins/org.jkiss.dbeaver.model/plugin.xml +++ b/plugins/org.jkiss.dbeaver.model/plugin.xml @@ -21,6 +21,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/org.jkiss.dbeaver.core/schema/org.jkiss.dbeaver.dataFormatter.exsd b/plugins/org.jkiss.dbeaver.model/schema/org.jkiss.dbeaver.dataFormatter.exsd similarity index 96% rename from plugins/org.jkiss.dbeaver.core/schema/org.jkiss.dbeaver.dataFormatter.exsd rename to plugins/org.jkiss.dbeaver.model/schema/org.jkiss.dbeaver.dataFormatter.exsd index ca5b3fa781c1247d6eefb9cecdc0fbb6a8409759..89ea99f5ecea7b26d474b7c452e9f115be63d540 100644 --- a/plugins/org.jkiss.dbeaver.core/schema/org.jkiss.dbeaver.dataFormatter.exsd +++ b/plugins/org.jkiss.dbeaver.model/schema/org.jkiss.dbeaver.dataFormatter.exsd @@ -1,223 +1,223 @@ - - - - - - - - - [Enter description of this extension point.] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [Enter the first release in which this extension point appears.] - - - - - - - - - [Enter extension point usage example here.] - - - - - - - - - [Enter API information here.] - - - - - - - - - [Enter information about supplied implementation of this extension point.] - - - - - + + + + + + + + + [Enter description of this extension point.] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [Enter the first release in which this extension point appears.] + + + + + + + + + [Enter extension point usage example here.] + + + + + + + + + [Enter API information here.] + + + + + + + + + [Enter information about supplied implementation of this extension point.] + + + + + diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterDescriptor.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterDescriptor.java similarity index 87% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterDescriptor.java rename to plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterDescriptor.java index a6b0b52ed344a5da3ae08b6f015df41d014c2906..704f902eb959fec127c14a115e2812737adc9dac 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterDescriptor.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterDescriptor.java @@ -1,102 +1,101 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jkiss.dbeaver.registry.formatter; - -import org.eclipse.core.runtime.IConfigurationElement; -import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.model.data.DBDDataFormatter; -import org.jkiss.dbeaver.model.data.DBDDataFormatterSample; -import org.jkiss.dbeaver.model.impl.AbstractDescriptor; -import org.jkiss.dbeaver.model.impl.PropertyDescriptor; -import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor; -import org.jkiss.dbeaver.registry.RegistryConstants; - -import java.util.ArrayList; -import java.util.List; - -/** - * DataFormatterDescriptor - */ -public class DataFormatterDescriptor extends AbstractDescriptor -{ - private static final Log log = Log.getLog(DataFormatterDescriptor.class); - - public static final String EXTENSION_ID = "org.jkiss.dbeaver.dataFormatter"; //$NON-NLS-1$ - - private String id; - private String name; - private String description; - private List properties = new ArrayList<>(); - private DBDDataFormatterSample sample; - private ObjectType formatterType; - - public DataFormatterDescriptor(IConfigurationElement config) - { - super(config); - - this.id = config.getAttribute(RegistryConstants.ATTR_ID); - this.formatterType = new ObjectType(config.getAttribute(RegistryConstants.ATTR_CLASS)); - this.name = config.getAttribute(RegistryConstants.ATTR_LABEL); - this.description = config.getAttribute(RegistryConstants.ATTR_DESCRIPTION); - - IConfigurationElement[] propElements = config.getChildren(PropertyDescriptor.TAG_PROPERTY_GROUP); - for (IConfigurationElement prop : propElements) { - properties.addAll(PropertyDescriptor.extractProperties(prop)); - } - Class objectClass = getObjectClass(config.getAttribute(RegistryConstants.ATTR_SAMPLE_CLASS)); - try { - sample = (DBDDataFormatterSample)objectClass.newInstance(); - } catch (Exception e) { - log.error("Can't instantiate data formatter '" + getId() + "' sample"); - } - } - - public String getId() - { - return id; - } - - public String getName() - { - return name; - } - - public String getDescription() - { - return description; - } - - public DBDDataFormatterSample getSample() - { - return sample; - } - - public List getProperties() { - return properties; - } - - public DBDDataFormatter createFormatter() throws IllegalAccessException, InstantiationException - { - Class clazz = formatterType.getObjectClass(DBDDataFormatter.class); - if (clazz == null) { - return null; - } - return clazz.newInstance(); - } - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jkiss.dbeaver.registry.formatter; + +import org.eclipse.core.runtime.IConfigurationElement; +import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.model.data.DBDDataFormatter; +import org.jkiss.dbeaver.model.data.DBDDataFormatterSample; +import org.jkiss.dbeaver.model.impl.AbstractDescriptor; +import org.jkiss.dbeaver.model.impl.PropertyDescriptor; +import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor; + +import java.util.ArrayList; +import java.util.List; + +/** + * DataFormatterDescriptor + */ +public class DataFormatterDescriptor extends AbstractDescriptor +{ + private static final Log log = Log.getLog(DataFormatterDescriptor.class); + + public static final String EXTENSION_ID = "org.jkiss.dbeaver.dataFormatter"; //$NON-NLS-1$ + + private String id; + private String name; + private String description; + private List properties = new ArrayList<>(); + private DBDDataFormatterSample sample; + private ObjectType formatterType; + + public DataFormatterDescriptor(IConfigurationElement config) + { + super(config); + + this.id = config.getAttribute("id"); + this.formatterType = new ObjectType(config.getAttribute("class")); + this.name = config.getAttribute("label"); + this.description = config.getAttribute("description"); + + IConfigurationElement[] propElements = config.getChildren(PropertyDescriptor.TAG_PROPERTY_GROUP); + for (IConfigurationElement prop : propElements) { + properties.addAll(PropertyDescriptor.extractProperties(prop)); + } + Class objectClass = getObjectClass(config.getAttribute("sampleClass")); + try { + sample = (DBDDataFormatterSample)objectClass.newInstance(); + } catch (Exception e) { + log.error("Can't instantiate data formatter '" + getId() + "' sample"); + } + } + + public String getId() + { + return id; + } + + public String getName() + { + return name; + } + + public String getDescription() + { + return description; + } + + public DBDDataFormatterSample getSample() + { + return sample; + } + + public List getProperties() { + return properties; + } + + public DBDDataFormatter createFormatter() throws IllegalAccessException, InstantiationException + { + Class clazz = formatterType.getObjectClass(DBDDataFormatter.class); + if (clazz == null) { + return null; + } + return clazz.newInstance(); + } + +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterProfile.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterProfile.java similarity index 97% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterProfile.java rename to plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterProfile.java index ca8a9f47294976796f5875af4edfbfce87a36786..cbcf1ff61f8074571368e424ce890f75c550e706 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterProfile.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterProfile.java @@ -1,231 +1,231 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.registry.formatter; - -import org.jkiss.dbeaver.model.data.DBDDataFormatter; -import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile; -import org.jkiss.dbeaver.model.impl.preferences.SimplePreferenceStore; -import org.jkiss.dbeaver.model.preferences.DBPPreferenceListener; -import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; -import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor; -import org.jkiss.dbeaver.model.struct.DBSTypedObject; -import org.jkiss.dbeaver.utils.PrefUtils; -import org.jkiss.utils.CommonUtils; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; - -/** - * DataFormatterProfile - */ -public class DataFormatterProfile implements DBDDataFormatterProfile, DBPPreferenceListener { - - private static final String PROP_LANGUAGE = "dataformat.profile.language"; //$NON-NLS-1$ - private static final String PROP_COUNTRY = "dataformat.profile.country"; //$NON-NLS-1$ - private static final String PROP_VARIANT = "dataformat.profile.variant"; //$NON-NLS-1$ - public static final String DATAFORMAT_PREFIX = "dataformat."; //$NON-NLS-1$ - public static final String DATAFORMAT_TYPE_PREFIX = DATAFORMAT_PREFIX + "type."; //$NON-NLS-1$ - - private DBPPreferenceStore store; - private String name; - private Locale locale; - - public DataFormatterProfile(String profileName, DBPPreferenceStore store) - { - this.name = profileName; - this.store = store; - loadProfile(); - } - - private void loadProfile() - { - { - String language = store.getString(PROP_LANGUAGE); - String country = store.getString(PROP_COUNTRY); - String variant = store.getString(PROP_VARIANT); - if (CommonUtils.isEmpty(language)) { - this.locale = Locale.getDefault(); - } else if (CommonUtils.isEmpty(country)) { - this.locale = new Locale(language); - } else if (CommonUtils.isEmpty(variant)) { - this.locale = new Locale(language, country); - } else { - this.locale = new Locale(language, country, variant); - } - } - } - - @Override - public void saveProfile() throws IOException - { - store.setValue(PROP_LANGUAGE, locale.getLanguage()); - store.setValue(PROP_COUNTRY, locale.getCountry()); - store.setValue(PROP_VARIANT, locale.getVariant()); - - PrefUtils.savePreferenceStore(store); - } - - @Override - public DBPPreferenceStore getPreferenceStore() - { - return store; - } - - @Override - public String getProfileName() - { - return name; - } - - @Override - public void setProfileName(String name) - { - this.name = name; - } - - @Override - public Locale getLocale() - { - return locale; - } - - @Override - public void setLocale(Locale locale) - { - this.locale = locale; - } - - @Override - public Map getFormatterProperties(String typeId) - { - DataFormatterDescriptor formatter = DataFormatterRegistry.getInstance().getDataFormatter(typeId); - Map defaultProperties = formatter.getSample().getDefaultProperties(locale); - Map formatterProps = new HashMap<>(); - for (DBPPropertyDescriptor prop : formatter.getProperties()) { - Object defaultValue = defaultProperties.get(prop.getId()); - Object propValue = PrefUtils.getPreferenceValue( - store, - DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId(), prop.getDataType()); - if (propValue != null && !CommonUtils.equalObjects(defaultValue, propValue)) { - formatterProps.put(prop.getId(), propValue); - } - } - return formatterProps; - } - - @Override - public void setFormatterProperties(String typeId, Map formatterProps) - { - DataFormatterDescriptor formatter = DataFormatterRegistry.getInstance().getDataFormatter(typeId); - for (DBPPropertyDescriptor prop : formatter.getProperties()) { - Object propValue = formatterProps == null ? null : formatterProps.get(prop.getId()); - if (propValue != null) { - PrefUtils.setPreferenceValue(store, DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId(), propValue); - } else { - store.setToDefault(DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId()); - } - } - } - - @Override - public boolean isOverridesParent() - { - if (store instanceof SimplePreferenceStore) { - SimplePreferenceStore prefStore = (SimplePreferenceStore) store; - - if (prefStore.isSet(PROP_LANGUAGE) || prefStore.isSet(PROP_COUNTRY) || prefStore.isSet(PROP_VARIANT)) { - return true; - } - - for (DataFormatterDescriptor formatter : DataFormatterRegistry.getInstance().getDataFormatters()) { - for (DBPPropertyDescriptor prop : formatter.getProperties()) { - if (prefStore.isSet(DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId())) { - return true; - } - } - } - - return false; - } - return true; - } - - @Override - public void reset() - { - if (store instanceof SimplePreferenceStore) { - // Set all formatter properties to default - store.setToDefault(PROP_LANGUAGE); - store.setToDefault(PROP_COUNTRY); - store.setToDefault(PROP_VARIANT); - - for (DataFormatterDescriptor formatter : DataFormatterRegistry.getInstance().getDataFormatters()) { - for (DBPPropertyDescriptor prop : formatter.getProperties()) { - store.setToDefault(DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId()); - } - } - } - loadProfile(); - } - - @Override - public DBDDataFormatter createFormatter(String typeId, DBSTypedObject type) - throws IllegalAccessException, InstantiationException, IllegalArgumentException - { - DataFormatterDescriptor descriptor = DataFormatterRegistry.getInstance().getDataFormatter(typeId); - if (descriptor == null) { - throw new IllegalArgumentException("Formatter '" + typeId + "' not found"); - } - DBDDataFormatter formatter = descriptor.createFormatter(); - - Map defProps = descriptor.getSample().getDefaultProperties(locale); - Map props = getFormatterProperties(typeId); - Map formatterProps = new HashMap<>(); - if (defProps != null && !defProps.isEmpty()) { - formatterProps.putAll(defProps); - } - if (props != null && !props.isEmpty()) { - formatterProps.putAll(props); - } - formatter.init(type, locale, formatterProps); - return formatter; - } - - public static void initDefaultPreferences(DBPPreferenceStore store, Locale locale) - { - for (DataFormatterDescriptor formatter : DataFormatterRegistry.getInstance().getDataFormatters()) { - Map defaultProperties = formatter.getSample().getDefaultProperties(locale); - Map formatterProps = new HashMap<>(); - for (DBPPropertyDescriptor prop : formatter.getProperties()) { - Object defaultValue = defaultProperties.get(prop.getId()); - if (defaultValue != null) { - PrefUtils.setPreferenceDefaultValue(store, DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId(), defaultValue); - } - } - } - } - - @Override - public void preferenceChange(PreferenceChangeEvent event) { - if (event.getProperty() != null && event.getProperty().startsWith(DATAFORMAT_PREFIX)) { - // Reload this profile - loadProfile(); - } - } -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.registry.formatter; + +import org.jkiss.dbeaver.model.data.DBDDataFormatter; +import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile; +import org.jkiss.dbeaver.model.impl.preferences.SimplePreferenceStore; +import org.jkiss.dbeaver.model.preferences.DBPPreferenceListener; +import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; +import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor; +import org.jkiss.dbeaver.model.struct.DBSTypedObject; +import org.jkiss.dbeaver.utils.PrefUtils; +import org.jkiss.utils.CommonUtils; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +/** + * DataFormatterProfile + */ +public class DataFormatterProfile implements DBDDataFormatterProfile, DBPPreferenceListener { + + private static final String PROP_LANGUAGE = "dataformat.profile.language"; //$NON-NLS-1$ + private static final String PROP_COUNTRY = "dataformat.profile.country"; //$NON-NLS-1$ + private static final String PROP_VARIANT = "dataformat.profile.variant"; //$NON-NLS-1$ + public static final String DATAFORMAT_PREFIX = "dataformat."; //$NON-NLS-1$ + public static final String DATAFORMAT_TYPE_PREFIX = DATAFORMAT_PREFIX + "type."; //$NON-NLS-1$ + + private DBPPreferenceStore store; + private String name; + private Locale locale; + + public DataFormatterProfile(String profileName, DBPPreferenceStore store) + { + this.name = profileName; + this.store = store; + loadProfile(); + } + + private void loadProfile() + { + { + String language = store.getString(PROP_LANGUAGE); + String country = store.getString(PROP_COUNTRY); + String variant = store.getString(PROP_VARIANT); + if (CommonUtils.isEmpty(language)) { + this.locale = Locale.getDefault(); + } else if (CommonUtils.isEmpty(country)) { + this.locale = new Locale(language); + } else if (CommonUtils.isEmpty(variant)) { + this.locale = new Locale(language, country); + } else { + this.locale = new Locale(language, country, variant); + } + } + } + + @Override + public void saveProfile() throws IOException + { + store.setValue(PROP_LANGUAGE, locale.getLanguage()); + store.setValue(PROP_COUNTRY, locale.getCountry()); + store.setValue(PROP_VARIANT, locale.getVariant()); + + PrefUtils.savePreferenceStore(store); + } + + @Override + public DBPPreferenceStore getPreferenceStore() + { + return store; + } + + @Override + public String getProfileName() + { + return name; + } + + @Override + public void setProfileName(String name) + { + this.name = name; + } + + @Override + public Locale getLocale() + { + return locale; + } + + @Override + public void setLocale(Locale locale) + { + this.locale = locale; + } + + @Override + public Map getFormatterProperties(String typeId) + { + DataFormatterDescriptor formatter = DataFormatterRegistry.getInstance().getDataFormatter(typeId); + Map defaultProperties = formatter.getSample().getDefaultProperties(locale); + Map formatterProps = new HashMap<>(); + for (DBPPropertyDescriptor prop : formatter.getProperties()) { + Object defaultValue = defaultProperties.get(prop.getId()); + Object propValue = PrefUtils.getPreferenceValue( + store, + DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId(), prop.getDataType()); + if (propValue != null && !CommonUtils.equalObjects(defaultValue, propValue)) { + formatterProps.put(prop.getId(), propValue); + } + } + return formatterProps; + } + + @Override + public void setFormatterProperties(String typeId, Map formatterProps) + { + DataFormatterDescriptor formatter = DataFormatterRegistry.getInstance().getDataFormatter(typeId); + for (DBPPropertyDescriptor prop : formatter.getProperties()) { + Object propValue = formatterProps == null ? null : formatterProps.get(prop.getId()); + if (propValue != null) { + PrefUtils.setPreferenceValue(store, DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId(), propValue); + } else { + store.setToDefault(DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId()); + } + } + } + + @Override + public boolean isOverridesParent() + { + if (store instanceof SimplePreferenceStore) { + SimplePreferenceStore prefStore = (SimplePreferenceStore) store; + + if (prefStore.isSet(PROP_LANGUAGE) || prefStore.isSet(PROP_COUNTRY) || prefStore.isSet(PROP_VARIANT)) { + return true; + } + + for (DataFormatterDescriptor formatter : DataFormatterRegistry.getInstance().getDataFormatters()) { + for (DBPPropertyDescriptor prop : formatter.getProperties()) { + if (prefStore.isSet(DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId())) { + return true; + } + } + } + + return false; + } + return true; + } + + @Override + public void reset() + { + if (store instanceof SimplePreferenceStore) { + // Set all formatter properties to default + store.setToDefault(PROP_LANGUAGE); + store.setToDefault(PROP_COUNTRY); + store.setToDefault(PROP_VARIANT); + + for (DataFormatterDescriptor formatter : DataFormatterRegistry.getInstance().getDataFormatters()) { + for (DBPPropertyDescriptor prop : formatter.getProperties()) { + store.setToDefault(DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId()); + } + } + } + loadProfile(); + } + + @Override + public DBDDataFormatter createFormatter(String typeId, DBSTypedObject type) + throws IllegalAccessException, InstantiationException, IllegalArgumentException + { + DataFormatterDescriptor descriptor = DataFormatterRegistry.getInstance().getDataFormatter(typeId); + if (descriptor == null) { + throw new IllegalArgumentException("Formatter '" + typeId + "' not found"); + } + DBDDataFormatter formatter = descriptor.createFormatter(); + + Map defProps = descriptor.getSample().getDefaultProperties(locale); + Map props = getFormatterProperties(typeId); + Map formatterProps = new HashMap<>(); + if (defProps != null && !defProps.isEmpty()) { + formatterProps.putAll(defProps); + } + if (props != null && !props.isEmpty()) { + formatterProps.putAll(props); + } + formatter.init(type, locale, formatterProps); + return formatter; + } + + public static void initDefaultPreferences(DBPPreferenceStore store, Locale locale) + { + for (DataFormatterDescriptor formatter : DataFormatterRegistry.getInstance().getDataFormatters()) { + Map defaultProperties = formatter.getSample().getDefaultProperties(locale); + Map formatterProps = new HashMap<>(); + for (DBPPropertyDescriptor prop : formatter.getProperties()) { + Object defaultValue = defaultProperties.get(prop.getId()); + if (defaultValue != null) { + PrefUtils.setPreferenceDefaultValue(store, DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId(), defaultValue); + } + } + } + } + + @Override + public void preferenceChange(PreferenceChangeEvent event) { + if (event.getProperty() != null && event.getProperty().startsWith(DATAFORMAT_PREFIX)) { + // Reload this profile + loadProfile(); + } + } +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterRegistry.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterRegistry.java similarity index 84% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterRegistry.java rename to plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterRegistry.java index 86a2eced88facb1a0633c54afaeef2e7cd57e328..fbc9605ebd60f4d666448be33041817ad5484283 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/formatter/DataFormatterRegistry.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/registry/formatter/DataFormatterRegistry.java @@ -1,254 +1,252 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jkiss.dbeaver.registry.formatter; - -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExtensionRegistry; -import org.eclipse.core.runtime.Platform; -import org.jkiss.code.Nullable; -import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.core.DBeaverActivator; -import org.jkiss.dbeaver.model.app.DBPDataFormatterRegistry; -import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile; -import org.jkiss.dbeaver.model.impl.preferences.SimplePreferenceStore; -import org.jkiss.dbeaver.registry.RegistryConstants; -import org.jkiss.dbeaver.runtime.DBWorkbench; -import org.jkiss.dbeaver.utils.GeneralUtils; -import org.jkiss.utils.CommonUtils; -import org.jkiss.utils.xml.SAXListener; -import org.jkiss.utils.xml.SAXReader; -import org.jkiss.utils.xml.XMLBuilder; -import org.jkiss.utils.xml.XMLException; -import org.xml.sax.Attributes; - -import java.io.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class DataFormatterRegistry implements DBPDataFormatterRegistry -{ - private static final Log log = Log.getLog(DataFormatterRegistry.class); - - public static final String CONFIG_FILE_NAME = "dataformat-profiles.xml"; //$NON-NLS-1$ - - private static DataFormatterRegistry instance = null; - - public synchronized static DataFormatterRegistry getInstance() - { - if (instance == null) { - instance = new DataFormatterRegistry(Platform.getExtensionRegistry()); - } - return instance; - } - - private final List dataFormatterList = new ArrayList<>(); - private final Map dataFormatterMap = new HashMap<>(); - private DBDDataFormatterProfile globalProfile; - private List customProfiles = null; - - private DataFormatterRegistry(IExtensionRegistry registry) - { - // Load data formatters from external plugins - { - IConfigurationElement[] extElements = registry.getConfigurationElementsFor(DataFormatterDescriptor.EXTENSION_ID); - for (IConfigurationElement ext : extElements) { - DataFormatterDescriptor formatterDescriptor = new DataFormatterDescriptor(ext); - dataFormatterList.add(formatterDescriptor); - dataFormatterMap.put(formatterDescriptor.getId(), formatterDescriptor); - } - } - } - - public void dispose() - { - this.dataFormatterList.clear(); - this.dataFormatterMap.clear(); - this.globalProfile = null; - } - - //////////////////////////////////////////////////// - // Data formatters - - public List getDataFormatters() - { - return dataFormatterList; - } - - public DataFormatterDescriptor getDataFormatter(String typeId) - { - return dataFormatterMap.get(typeId); - } - - @Override - public synchronized DBDDataFormatterProfile getGlobalProfile() - { - if (globalProfile == null) { - globalProfile = new DataFormatterProfile( - "Global", - DBWorkbench.getPlatform().getPreferenceStore()); - } - return globalProfile; - } - - @Override - @Nullable - public DBDDataFormatterProfile getCustomProfile(String name) - { - for (DBDDataFormatterProfile profile : getCustomProfiles()) { - if (profile.getProfileName().equals(name)) { - return profile; - } - } - return null; - } - - @Override - public synchronized List getCustomProfiles() - { - if (customProfiles == null) { - loadProfiles(); - } - return customProfiles; - } - - private void loadProfiles() - { - customProfiles = new ArrayList<>(); - - File storeFile = DBeaverActivator.getConfigurationFile(CONFIG_FILE_NAME); - if (!storeFile.exists()) { - return; - } - try { - try (InputStream is = new FileInputStream(storeFile)) { - SAXReader parser = new SAXReader(is); - try { - parser.parse(new FormattersParser()); - } catch (XMLException ex) { - throw new DBException("Datasource config parse error", ex); - } - } catch (DBException ex) { - log.warn("Can't load profiles config from " + storeFile.getPath(), ex); - } - } - catch (IOException ex) { - log.warn("IO error", ex); - } - } - - - private void saveProfiles() - { - if (customProfiles == null) { - return; - } - File storeFile = DBeaverActivator.getConfigurationFile(CONFIG_FILE_NAME); - try (OutputStream os = new FileOutputStream(storeFile)) { - XMLBuilder xml = new XMLBuilder(os, GeneralUtils.UTF8_ENCODING); - xml.setButify(true); - xml.startElement(RegistryConstants.TAG_PROFILES); - for (DBDDataFormatterProfile profile : customProfiles) { - xml.startElement(RegistryConstants.TAG_PROFILE); - xml.addAttribute(RegistryConstants.ATTR_NAME, profile.getProfileName()); - SimplePreferenceStore store = (SimplePreferenceStore) profile.getPreferenceStore(); - Map props = store.getProperties(); - if (props != null) { - for (Map.Entry entry : props.entrySet()) { - xml.startElement(RegistryConstants.TAG_PROPERTY); - xml.addAttribute(RegistryConstants.ATTR_NAME, entry.getKey()); - xml.addAttribute(RegistryConstants.ATTR_VALUE, entry.getValue()); - xml.endElement(); - } - } - xml.endElement(); - } - xml.endElement(); - xml.flush(); - } - catch (IOException ex) { - log.warn("IO error", ex); - } - } - - public DBDDataFormatterProfile createCustomProfile(String profileName) - { - getCustomProfiles(); - DBDDataFormatterProfile profile = new DataFormatterProfile(profileName, new CustomProfileStore()); - customProfiles.add(profile); - saveProfiles(); - return profile; - } - - public void deleteCustomProfile(DBDDataFormatterProfile profile) - { - getCustomProfiles(); - if (customProfiles.remove(profile)) { - saveProfiles(); - } - } - - private class CustomProfileStore extends SimplePreferenceStore { - private CustomProfileStore() - { - super(DBWorkbench.getPlatform().getPreferenceStore()); - } - - @Override - public void save() throws IOException - { - saveProfiles(); - } - } - - private class FormattersParser extends SAXListener.BaseListener - { - private String profileName; - private SimplePreferenceStore curStore; - - @Override - public void saxStartElement(SAXReader reader, String namespaceURI, String localName, Attributes atts) - throws XMLException - { - if (localName.equals(RegistryConstants.TAG_PROFILE)) { - curStore = new CustomProfileStore(); - profileName = atts.getValue(RegistryConstants.ATTR_NAME); - } else if (localName.equals(RegistryConstants.TAG_PROPERTY)) { - if (curStore != null) { - curStore.setValue( - atts.getValue(RegistryConstants.ATTR_NAME), - atts.getValue(RegistryConstants.ATTR_VALUE)); - } - } - } - - @Override - public void saxEndElement(SAXReader reader, String namespaceURI, String localName) - throws XMLException - { - if (localName.equals(RegistryConstants.TAG_PROFILE)) { - if (!CommonUtils.isEmpty(profileName)) { - DataFormatterProfile profile = new DataFormatterProfile(profileName, curStore); - customProfiles.add(profile); - } - } - } - } - -} +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.registry.formatter; + +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.Platform; +import org.jkiss.code.Nullable; +import org.jkiss.dbeaver.DBException; +import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.model.app.DBPDataFormatterRegistry; +import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile; +import org.jkiss.dbeaver.model.impl.preferences.SimplePreferenceStore; +import org.jkiss.dbeaver.runtime.DBWorkbench; +import org.jkiss.dbeaver.utils.GeneralUtils; +import org.jkiss.utils.CommonUtils; +import org.jkiss.utils.xml.SAXListener; +import org.jkiss.utils.xml.SAXReader; +import org.jkiss.utils.xml.XMLBuilder; +import org.jkiss.utils.xml.XMLException; +import org.xml.sax.Attributes; + +import java.io.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class DataFormatterRegistry implements DBPDataFormatterRegistry +{ + private static final Log log = Log.getLog(DataFormatterRegistry.class); + + public static final String CONFIG_FILE_NAME = "dataformat-profiles.xml"; //$NON-NLS-1$ + + private static DataFormatterRegistry instance = null; + + public synchronized static DataFormatterRegistry getInstance() + { + if (instance == null) { + instance = new DataFormatterRegistry(Platform.getExtensionRegistry()); + } + return instance; + } + + private final List dataFormatterList = new ArrayList<>(); + private final Map dataFormatterMap = new HashMap<>(); + private DBDDataFormatterProfile globalProfile; + private List customProfiles = null; + + private DataFormatterRegistry(IExtensionRegistry registry) + { + // Load data formatters from external plugins + { + IConfigurationElement[] extElements = registry.getConfigurationElementsFor(DataFormatterDescriptor.EXTENSION_ID); + for (IConfigurationElement ext : extElements) { + DataFormatterDescriptor formatterDescriptor = new DataFormatterDescriptor(ext); + dataFormatterList.add(formatterDescriptor); + dataFormatterMap.put(formatterDescriptor.getId(), formatterDescriptor); + } + } + } + + public void dispose() + { + this.dataFormatterList.clear(); + this.dataFormatterMap.clear(); + this.globalProfile = null; + } + + //////////////////////////////////////////////////// + // Data formatters + + public List getDataFormatters() + { + return dataFormatterList; + } + + public DataFormatterDescriptor getDataFormatter(String typeId) + { + return dataFormatterMap.get(typeId); + } + + @Override + public synchronized DBDDataFormatterProfile getGlobalProfile() + { + if (globalProfile == null) { + globalProfile = new DataFormatterProfile( + "Global", + DBWorkbench.getPlatform().getPreferenceStore()); + } + return globalProfile; + } + + @Override + @Nullable + public DBDDataFormatterProfile getCustomProfile(String name) + { + for (DBDDataFormatterProfile profile : getCustomProfiles()) { + if (profile.getProfileName().equals(name)) { + return profile; + } + } + return null; + } + + @Override + public synchronized List getCustomProfiles() + { + if (customProfiles == null) { + loadProfiles(); + } + return customProfiles; + } + + private void loadProfiles() + { + customProfiles = new ArrayList<>(); + + File storeFile = DBWorkbench.getPlatform().getConfigurationFile(CONFIG_FILE_NAME); + if (!storeFile.exists()) { + return; + } + try { + try (InputStream is = new FileInputStream(storeFile)) { + SAXReader parser = new SAXReader(is); + try { + parser.parse(new FormattersParser()); + } catch (XMLException ex) { + throw new DBException("Datasource config parse error", ex); + } + } catch (DBException ex) { + log.warn("Can't load profiles config from " + storeFile.getPath(), ex); + } + } + catch (IOException ex) { + log.warn("IO error", ex); + } + } + + + private void saveProfiles() + { + if (customProfiles == null) { + return; + } + File storeFile = DBWorkbench.getPlatform().getConfigurationFile(CONFIG_FILE_NAME); + try (OutputStream os = new FileOutputStream(storeFile)) { + XMLBuilder xml = new XMLBuilder(os, GeneralUtils.UTF8_ENCODING); + xml.setButify(true); + xml.startElement("profiles"); + for (DBDDataFormatterProfile profile : customProfiles) { + xml.startElement("profile"); + xml.addAttribute("name", profile.getProfileName()); + SimplePreferenceStore store = (SimplePreferenceStore) profile.getPreferenceStore(); + Map props = store.getProperties(); + if (props != null) { + for (Map.Entry entry : props.entrySet()) { + xml.startElement("property"); + xml.addAttribute("name", entry.getKey()); + xml.addAttribute("value", entry.getValue()); + xml.endElement(); + } + } + xml.endElement(); + } + xml.endElement(); + xml.flush(); + } + catch (IOException ex) { + log.warn("IO error", ex); + } + } + + public DBDDataFormatterProfile createCustomProfile(String profileName) + { + getCustomProfiles(); + DBDDataFormatterProfile profile = new DataFormatterProfile(profileName, new CustomProfileStore()); + customProfiles.add(profile); + saveProfiles(); + return profile; + } + + public void deleteCustomProfile(DBDDataFormatterProfile profile) + { + getCustomProfiles(); + if (customProfiles.remove(profile)) { + saveProfiles(); + } + } + + private class CustomProfileStore extends SimplePreferenceStore { + private CustomProfileStore() + { + super(DBWorkbench.getPlatform().getPreferenceStore()); + } + + @Override + public void save() throws IOException + { + saveProfiles(); + } + } + + private class FormattersParser extends SAXListener.BaseListener + { + private String profileName; + private SimplePreferenceStore curStore; + + @Override + public void saxStartElement(SAXReader reader, String namespaceURI, String localName, Attributes atts) + throws XMLException + { + if (localName.equals("profile")) { + curStore = new CustomProfileStore(); + profileName = atts.getValue("name"); + } else if (localName.equals("property")) { + if (curStore != null) { + curStore.setValue( + atts.getValue("name"), + atts.getValue("value")); + } + } + } + + @Override + public void saxEndElement(SAXReader reader, String namespaceURI, String localName) + throws XMLException + { + if (localName.equals("profile")) { + if (!CommonUtils.isEmpty(profileName)) { + DataFormatterProfile profile = new DataFormatterProfile(profileName, curStore); + customProfiles.add(profile); + } + } + } + } + +} diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/META-INF/MANIFEST.MF b/plugins/org.jkiss.dbeaver.ui.editors.data/META-INF/MANIFEST.MF index cb5f6070e0ef8c49b4f0dba892e7911b5f2b03ed..5d76986ecfd94e8046bdbba3d379914253783c21 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.data/META-INF/MANIFEST.MF +++ b/plugins/org.jkiss.dbeaver.ui.editors.data/META-INF/MANIFEST.MF @@ -21,7 +21,8 @@ Require-Bundle: org.eclipse.core.runtime, org.jkiss.dbeaver.ui.editors.base, org.jkiss.dbeaver.ui.navigator Bundle-ClassPath: . -Export-Package: org.jkiss.dbeaver.ui.controls, +Export-Package: org.jkiss.dbeaver.registry.functions, + org.jkiss.dbeaver.ui.controls, org.jkiss.dbeaver.ui.controls.lightgrid, org.jkiss.dbeaver.ui.data, org.jkiss.dbeaver.ui.data.managers, diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/build.properties b/plugins/org.jkiss.dbeaver.ui.editors.data/build.properties index 3c833df018f8d70ced93e47092c72a9f05b1bc58..cd9c1e5516b43eb12e73a67b4723c2dbf92a4154 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.data/build.properties +++ b/plugins/org.jkiss.dbeaver.ui.editors.data/build.properties @@ -3,4 +3,5 @@ output.. = target/classes/ bin.includes = .,\ META-INF/,\ OSGI-INF/,\ + schema/,\ plugin.xml diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/plugin.xml b/plugins/org.jkiss.dbeaver.ui.editors.data/plugin.xml index 2a619d4f4f2af027de018052aaa686a064f704ee..746ea4bb464677e130d3cbbc4978f560c3d68d77 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.data/plugin.xml +++ b/plugins/org.jkiss.dbeaver.ui.editors.data/plugin.xml @@ -8,5 +8,15 @@ description="Plain text" icon="platform:/plugin/org.jkiss.dbeaver.model/icons/types/text.png"/> + + + + + + + + + + diff --git a/plugins/org.jkiss.dbeaver.core/schema/org.jkiss.dbeaver.aggregateFunction.exsd b/plugins/org.jkiss.dbeaver.ui.editors.data/schema/org.jkiss.dbeaver.aggregateFunction.exsd similarity index 100% rename from plugins/org.jkiss.dbeaver.core/schema/org.jkiss.dbeaver.aggregateFunction.exsd rename to plugins/org.jkiss.dbeaver.ui.editors.data/schema/org.jkiss.dbeaver.aggregateFunction.exsd diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/functions/AggregateFunctionDescriptor.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/registry/functions/AggregateFunctionDescriptor.java similarity index 79% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/functions/AggregateFunctionDescriptor.java rename to plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/registry/functions/AggregateFunctionDescriptor.java index e4f596283a589913daf51254ac9e3e3ff1a7435e..629583fb4a0d757c89727bdb067896d5d7b78dd6 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/functions/AggregateFunctionDescriptor.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/registry/functions/AggregateFunctionDescriptor.java @@ -22,7 +22,6 @@ import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.model.DBPImage; import org.jkiss.dbeaver.model.data.aggregate.IAggregateFunction; import org.jkiss.dbeaver.model.impl.AbstractContextDescriptor; -import org.jkiss.dbeaver.registry.RegistryConstants; import org.jkiss.utils.CommonUtils; /** @@ -43,13 +42,13 @@ public class AggregateFunctionDescriptor extends AbstractContextDescriptor { public AggregateFunctionDescriptor(IConfigurationElement config) { super(config); - this.id = config.getAttribute(RegistryConstants.ATTR_ID); - this.label = config.getAttribute(RegistryConstants.ATTR_LABEL); - this.description = config.getAttribute(RegistryConstants.ATTR_DESCRIPTION); - this.implClass = new ObjectType(config.getAttribute(RegistryConstants.ATTR_CLASS)); - this.icon = iconToImage(config.getAttribute(RegistryConstants.ATTR_ICON)); - this.type = config.getAttribute(RegistryConstants.ATTR_TYPE); - this.isDefault = CommonUtils.toBoolean(config.getAttribute(RegistryConstants.ATTR_DEFAULT)); + this.id = config.getAttribute("id"); + this.label = config.getAttribute("label"); + this.description = config.getAttribute("description"); + this.implClass = new ObjectType(config.getAttribute("class")); + this.icon = iconToImage(config.getAttribute("icon")); + this.type = config.getAttribute("type"); + this.isDefault = CommonUtils.toBoolean(config.getAttribute("default")); } public String getId() { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/functions/FunctionsRegistry.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/registry/functions/FunctionsRegistry.java similarity index 100% rename from plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/functions/FunctionsRegistry.java rename to plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/registry/functions/FunctionsRegistry.java