This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new 76ad06a  EMPIREDB-362 vue example improvement
76ad06a is described below

commit 76ad06a32c98e9a0000a0b5ed3c2dae3430ca7e6
Author: Rainer Döbele <[email protected]>
AuthorDate: Sat Feb 26 20:12:57 2022 +0100

    EMPIREDB-362 vue example improvement
---
 .../org/apache/empire/rest/json/JsoColumnMeta.java | 14 ++++++++++
 .../org/apache/empire/vue/sample/db/SampleDB.java  | 10 ++++++++
 .../src/main/resources/lang/messages_de.properties |  1 +
 .../src/main/resources/lang/messages_en.properties |  1 +
 .../src/main/vue/src/assets/css/layout.css         | 13 +++++++---
 .../src/main/vue/src/components/e-input.vue        |  3 +++
 .../src/main/vue/src/pages/employeeDetail.vue      |  1 +
 .../src/main/webapp/index.html                     |  2 +-
 .../css/app.6f73e59d0c070317e676fd2670198e06.css   |  1 +
 .../css/app.e9a48e50315162d817c7ee8c66488a75.css   |  1 -
 .../webapp/static/js/app.5a998470448b25588615.js   |  2 ++
 .../webapp/static/js/app.bc501c1e8b514ab4b2be.js   |  2 --
 ...d615a8b.js => manifest.0accc17ec3598f932283.js} |  4 +--
 .../static/js/vendor.35b0b340e0dab7f340e2.js       | 30 ++++++++++++++++++++++
 .../static/js/vendor.797030c921ced786bb0a.js       | 30 ----------------------
 .../empire/jsf2/utils/TagEncodingHelper.java       |  8 ++++++
 .../main/java/org/apache/empire/data/Column.java   | 10 ++++++++
 .../java/org/apache/empire/data/ColumnExpr.java    |  4 +--
 .../org/apache/empire/data/bean/BeanProperty.java  | 15 +++++++++++
 .../main/java/org/apache/empire/db/DBColumn.java   | 14 ++++++++++
 20 files changed, 125 insertions(+), 41 deletions(-)

diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/rest/json/JsoColumnMeta.java
 
b/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/rest/json/JsoColumnMeta.java
index 1656016..5fd5913 100644
--- 
a/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/rest/json/JsoColumnMeta.java
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/rest/json/JsoColumnMeta.java
@@ -20,6 +20,7 @@ package org.apache.empire.rest.json;
 
 import java.util.LinkedHashMap;
 
+import org.apache.empire.commons.Attributes;
 import org.apache.empire.commons.OptionEntry;
 import org.apache.empire.commons.Options;
 import org.apache.empire.commons.StringUtils;
@@ -73,6 +74,19 @@ public class JsoColumnMeta extends LinkedHashMap<String, 
Object>
         {   // add maxLength
             put(_maxLength, (int)column.getSize());
         }
+        for (Attributes.Attribute attr : column.getAttributes())
+        {
+            String name = attr.getName();
+            if (DBColumnExpr.DBCOLATTR_TITLE.equals(name) ||
+                DBColumnExpr.DBCOLATTR_TYPE.equals(name))
+                continue; // ignore
+            // add attribute
+            Object value = attr.getValue();
+            if ((value instanceof String) ||
+                (value instanceof Number) ||
+                (value instanceof Boolean))
+                put(name, value);
+        }
         // ControlType And Options
         addControlTypeAndOptions(column.getControlType(), options, resolver);
     }
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/vue/sample/db/SampleDB.java
 
b/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/vue/sample/db/SampleDB.java
index c22c195..ccdec9a 100644
--- 
a/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/vue/sample/db/SampleDB.java
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/vue/sample/db/SampleDB.java
@@ -20,6 +20,7 @@ package org.apache.empire.vue.sample.db;
 
 import java.sql.SQLException;
 
+import org.apache.empire.data.Column;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBContext;
@@ -149,6 +150,15 @@ public class SampleDB extends DBDatabase
 
             // optional: set entity name for selectQualified() to singular 
since table is plural
             setEntityName("EMPLOYEE");
+            
+            // Set custom style for SALUTATION
+            SALUTATION.setAttribute("styleClass", "eInpShort");
+            // Salary special
+            SALARY.setAttribute("styleClass", "eInpDecimal")
+                  .setAttribute("format:unit", "USD")
+                  .setAttribute(Column.COLATTR_NUMBER_TYPE, "Decimal")
+                  .setAttribute(Column.COLATTR_FRACTION_DIGITS, 2)
+                  .setAttribute(Column.COLATTR_NUMBER_GROUPSEP, true);
         }
     }
 
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/resources/lang/messages_de.properties
 
b/empire-db-examples/empire-db-example-vue/src/main/resources/lang/messages_de.properties
index 9237547..661e8f5 100644
--- 
a/empire-db-examples/empire-db-example-vue/src/main/resources/lang/messages_de.properties
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/resources/lang/messages_de.properties
@@ -26,6 +26,7 @@ field.title.employees.departmentId=Abteilung
 field.title.employees.gender=Geschlecht
 field.title.employees.phoneNumber=Telefonnummer
 field.title.employees.email=E-Mail
+field.title.employees.salary=Jahresgehalt
 field.title.employees.retired=Ausgeschieden
 field.title.employees.updateTimestamp=Zuletzt ge�ndert am
 
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/resources/lang/messages_en.properties
 
b/empire-db-examples/empire-db-example-vue/src/main/resources/lang/messages_en.properties
index a3adc1d..8d70d58 100644
--- 
a/empire-db-examples/empire-db-example-vue/src/main/resources/lang/messages_en.properties
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/resources/lang/messages_en.properties
@@ -26,6 +26,7 @@ field.title.employees.departmentId=Department
 field.title.employees.gender=Gender
 field.title.employees.phoneNumber=Phone
 field.title.employees.email=E-Mail
+field.title.employees.salary=Salary p.a.
 field.title.employees.retired=Retired
 field.title.employees.updateTimestamp=Last change
 
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/assets/css/layout.css
 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/assets/css/layout.css
index e43c767..e24bcb5 100644
--- 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/assets/css/layout.css
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/assets/css/layout.css
@@ -162,7 +162,8 @@ input[type=password] {
 }
 select.eInpReq,
 input[type=text].eInpReq {
-       border: 1px brown solid;
+/*     border: 1px brown solid; */
+       background-color: #FFFFE0;
 }
 select.eInpDis,
 input[type=text].eInpDis {
@@ -183,8 +184,14 @@ span.eInpDis {
 .eSelect {
   width: 100%;
 }
-.eInpText.eTypeDATE {
-  width: 100px;
+select.eInput.eInpShort,
+input.eInput.eInpShort,
+input.eInput.eTypeDATE {
+       width: 100px;
+}
+input.eInput.eInpDecimal {
+       width: 100px;
+       text-align: right;
 }
 .eInputHint {
        padding-left: 4px;
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/components/e-input.vue
 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/components/e-input.vue
index 3526445..5c247cc 100644
--- 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/components/e-input.vue
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/components/e-input.vue
@@ -145,6 +145,9 @@
         if (meta.required) {
           cls += ' eInpReq'
         }
+        if (meta.styleClass) {
+          cls += ' ' + meta.styleClass
+        }
         return cls
       },
       inputValue (event) {
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeDetail.vue
 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeDetail.vue
index bfca8d0..0f95636 100644
--- 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeDetail.vue
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeDetail.vue
@@ -32,6 +32,7 @@
         <tr><e-control column="gender"   /> </tr>
         <tr><e-control column="phoneNumber" /></tr>
         <tr><e-control column="email" /></tr>
+        <tr><e-control column="salary" /></tr>
         <tr><e-control column="retired" /></tr>
       </table>
     </e-record>
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/index.html 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/index.html
index 1c80241..634da8c 100644
--- a/empire-db-examples/empire-db-example-vue/src/main/webapp/index.html
+++ b/empire-db-examples/empire-db-example-vue/src/main/webapp/index.html
@@ -15,4 +15,4 @@
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
- --><html><head><meta charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1"><title>Empire-db employee app 
using vue.js</title><link 
href=static/css/app.e9a48e50315162d817c7ee8c66488a75.css 
rel=stylesheet></head><body><div class=container><div 
id=app></div></div><script type=text/javascript 
src=static/js/manifest.dedad91e27787d615a8b.js></script><script 
type=text/javascript 
src=static/js/vendor.797030c921ced786bb0a.js></script><script 
type=text/javascript src=stat [...]
\ No newline at end of file
+ --><html><head><meta charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1"><title>Empire-db employee app 
using vue.js</title><link 
href=static/css/app.6f73e59d0c070317e676fd2670198e06.css 
rel=stylesheet></head><body><div class=container><div id=app></div><!-- built 
files will be auto injected --></div><script type=text/javascript 
src=static/js/manifest.0accc17ec3598f932283.js></script><script 
type=text/javascript src=static/js/vendor.35b0b340e0dab7f340e2.js></sc [...]
\ No newline at end of file
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/static/css/app.6f73e59d0c070317e676fd2670198e06.css
 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/static/css/app.6f73e59d0c070317e676fd2670198e06.css
new file mode 100644
index 0000000..b778cea
--- /dev/null
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/static/css/app.6f73e59d0c070317e676fd2670198e06.css
@@ -0,0 +1 @@
+*,:after,:before{box-sizing:border-box}body,html{width:800px;margin-left:10px;margin-right:auto;margin-bottom:5px;color:#000;background-color:#fff;font-family:Verdana,Arial,sans-serif;font-size:12px}.titleDiv{background-color:#effbef;font-size:18px;padding-left:10px;padding-top:10px;padding-bottom:10px;border:2px
 solid 
#8f99ef}.titleDiv,h1{font-weight:700;text-align:left}h1{color:brown;font-size:15px}td{font-size:12px}td,th{padding-right:10px}th{text-align:left;font-weight:700;font-size:
 [...]
\ No newline at end of file
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/static/css/app.e9a48e50315162d817c7ee8c66488a75.css
 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/static/css/app.e9a48e50315162d817c7ee8c66488a75.css
deleted file mode 100644
index acbf492..0000000
--- 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/static/css/app.e9a48e50315162d817c7ee8c66488a75.css
+++ /dev/null
@@ -1 +0,0 @@
-*,:after,:before{box-sizing:border-box}body,html{width:800px;margin-left:10px;margin-right:auto;margin-bottom:5px;color:#000;background-color:#fff;font-family:Verdana,Arial,sans-serif;font-size:12px}.titleDiv{background-color:#effbef;font-size:18px;padding-left:10px;padding-top:10px;padding-bottom:10px;border:2px
 solid 
#8f99ef}.titleDiv,h1{font-weight:700;text-align:left}h1{color:brown;font-size:15px}td{font-size:12px}td,th{padding-right:10px}th{text-align:left;font-weight:700;font-size:
 [...]
\ No newline at end of file
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/app.5a998470448b25588615.js
 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/app.5a998470448b25588615.js
new file mode 100644
index 0000000..dbcc9cc
--- /dev/null
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/app.5a998470448b25588615.js
@@ -0,0 +1,2 @@
+webpackJsonp([1],[,,function(e,t,n){"use strict";var 
r=n(35),o=n.n(r),a=n(17),s=n.n(a),i={initialized:!1,baseURL:"api",defaultOptions:{xhrFields:{withCredentials:!0},statusCode:{401:function(){l.loggedIn=!1},404:function(){alert("The
 requested service is not available!")}},error:function(e){var t=e.statusText+" 
("+e.status+")";e.responseText&&(t=t+": "+e.responseText),l.debug("Ajax error: 
"+t)}},setup:function(){s.a.ajaxSetup(i.defaultOptions),i.initialized=!0},call:function(e){return!0!
 [...]
+//# sourceMappingURL=app.5a998470448b25588615.js.map
\ No newline at end of file
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/app.bc501c1e8b514ab4b2be.js
 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/app.bc501c1e8b514ab4b2be.js
deleted file mode 100644
index b028364..0000000
--- 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/app.bc501c1e8b514ab4b2be.js
+++ /dev/null
@@ -1,2 +0,0 @@
-webpackJsonp([1],[,,function(e,t,n){"use strict";var 
r=n(35),o=n.n(r),a=n(17),s=n.n(a),i={initialized:!1,baseURL:"api",defaultOptions:{xhrFields:{withCredentials:!0},statusCode:{401:function(){l.loggedIn=!1},404:function(){alert("The
 requested service is not available!")}},error:function(e){var t=e.statusText+" 
("+e.status+")";e.responseText&&(t=t+": "+e.responseText),l.debug("Ajax error: 
"+t)}},setup:function(){s.a.ajaxSetup(i.defaultOptions),i.initialized=!0},call:function(e){return!0!
 [...]
-//# sourceMappingURL=app.bc501c1e8b514ab4b2be.js.map
\ No newline at end of file
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/manifest.dedad91e27787d615a8b.js
 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/manifest.0accc17ec3598f932283.js
similarity index 87%
rename from 
empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/manifest.dedad91e27787d615a8b.js
rename to 
empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/manifest.0accc17ec3598f932283.js
index 4acba47..164cc18 100644
--- 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/manifest.dedad91e27787d615a8b.js
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/manifest.0accc17ec3598f932283.js
@@ -1,2 +1,2 @@
-!function(e){function n(r){if(t[r])return t[r].exports;var 
o=t[r]={i:r,l:!1,exports:{}};return 
e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var 
r=window.webpackJsonp;window.webpackJsonp=function(t,c,i){for(var 
u,a,f,s=0,l=[];s<t.length;s++)a=t[s],o[a]&&l.push(o[a][0]),o[a]=0;for(u in 
c)Object.prototype.hasOwnProperty.call(c,u)&&(e[u]=c[u]);for(r&&r(t,c,i);l.length;)l.shift()();if(i)for(s=0;s<i.length;s++)f=n(n.s=i[s]);return
 f};var t={},o={2:0};n.e=function(e){function r(){u.onerr [...]
-//# sourceMappingURL=manifest.dedad91e27787d615a8b.js.map
\ No newline at end of file
+!function(e){function n(r){if(t[r])return t[r].exports;var 
o=t[r]={i:r,l:!1,exports:{}};return 
e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var 
r=window.webpackJsonp;window.webpackJsonp=function(t,c,i){for(var 
u,a,f,s=0,l=[];s<t.length;s++)a=t[s],o[a]&&l.push(o[a][0]),o[a]=0;for(u in 
c)Object.prototype.hasOwnProperty.call(c,u)&&(e[u]=c[u]);for(r&&r(t,c,i);l.length;)l.shift()();if(i)for(s=0;s<i.length;s++)f=n(n.s=i[s]);return
 f};var t={},o={2:0};n.e=function(e){function r(){u.onerr [...]
+//# sourceMappingURL=manifest.0accc17ec3598f932283.js.map
\ No newline at end of file
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/vendor.35b0b340e0dab7f340e2.js
 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/vendor.35b0b340e0dab7f340e2.js
new file mode 100644
index 0000000..5820ead
--- /dev/null
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/vendor.35b0b340e0dab7f340e2.js
@@ -0,0 +1,30 @@
+webpackJsonp([0],[function(e,t){e.exports=function(e,t,n,r,o){var 
i,a=e=e||{},s=typeof 
e.default;"object"!==s&&"function"!==s||(i=e,a=e.default);var 
u="function"==typeof 
a?a.options:a;t&&(u.render=t.render,u.staticRenderFns=t.staticRenderFns),r&&(u._scopeId=r);var
 
c;if(o?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"==typeof
 __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),n&&n.call(this,e),e&&e._register 
[...]
+ * Vue.js v2.6.14
+ * (c) 2014-2021 Evan You
+ * Released under the MIT License.
+ */
+var 
Ti=Object.freeze({}),ki=Object.prototype.toString,Ai=v("slot,component",!0),Si=v("key,ref,slot,slot-scope,is"),$i=Object.prototype.hasOwnProperty,Ei=/-(\w)/g,Oi=g(function(e){return
 e.replace(Ei,function(e,t){return 
t?t.toUpperCase():""})}),ji=g(function(e){return 
e.charAt(0).toUpperCase()+e.slice(1)}),Ni=/\B([A-Z])/g,Di=g(function(e){return 
e.replace(Ni,"-$1").toLowerCase()}),Li=Function.prototype.bind?x:b,Ri=function(e,t,n){return!1},Mi=function(e){return
 e},Ii="data-server-rendere [...]
+ * jQuery JavaScript Library v3.6.0
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright OpenJS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2021-03-02T17:08Z
+ */
+!function(t,n){"use strict";"object"==typeof e&&"object"==typeof 
e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new 
Error("jQuery requires a window with a document");return 
n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,i){"use 
strict";function a(e,t,n){n=n||ke;var 
r,o,i=n.createElement("script");if(i.text=e,t)for(r in 
Ae)(o=t[r]||t.getAttribute&&t.getAttribute(r))&&i.setAttribute(r,o);n.head.appendChild(i).parentNode.removeChild(i)}function
 s(e){r [...]
+ * Sizzle CSS Selector Engine v2.3.6
+ * https://sizzlejs.com/
+ *
+ * Copyright JS Foundation and other contributors
+ * Released under the MIT license
+ * https://js.foundation/
+ *
+ * Date: 2021-02-16
+ */
+function(e){function t(e,t,n,r){var 
o,i,a,s,u,l,p,d=t&&t.ownerDocument,h=t?t.nodeType:9;if(n=n||[],"string"!=typeof 
e||!e||1!==h&&9!==h&&11!==h)return 
n;if(!r&&(O(t),t=t||j,D)){if(11!==h&&(u=ye.exec(e)))if(o=u[1]){if(9===h){if(!(a=t.getElementById(o)))return
 n;if(a.id===o)return n.push(a),n}else 
if(d&&(a=d.getElementById(o))&&I(t,a)&&a.id===o)return 
n.push(a),n}else{if(u[2])return 
Y.apply(n,t.getElementsByTagName(e)),n;if((o=u[3])&&x.getElementsByClassName&&t.getElementsByClassName)retur
 [...]
+//# sourceMappingURL=vendor.35b0b340e0dab7f340e2.js.map
\ No newline at end of file
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/vendor.797030c921ced786bb0a.js
 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/vendor.797030c921ced786bb0a.js
deleted file mode 100644
index 929cf15..0000000
--- 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/static/js/vendor.797030c921ced786bb0a.js
+++ /dev/null
@@ -1,30 +0,0 @@
-webpackJsonp([0],[function(e,t){e.exports=function(e,t,n,r,o){var 
i,a=e=e||{},s=typeof 
e.default;"object"!==s&&"function"!==s||(i=e,a=e.default);var 
u="function"==typeof 
a?a.options:a;t&&(u.render=t.render,u.staticRenderFns=t.staticRenderFns),r&&(u._scopeId=r);var
 
c;if(o?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"==typeof
 __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),n&&n.call(this,e),e&&e._register 
[...]
- * Vue.js v2.5.17
- * (c) 2014-2018 Evan You
- * Released under the MIT License.
- */
-var 
si=Object.freeze({}),ui=Object.prototype.toString,ci=h("slot,component",!0),li=h("key,ref,slot,slot-scope,is"),fi=Object.prototype.hasOwnProperty,pi=/-(\w)/g,di=y(function(e){return
 e.replace(pi,function(e,t){return 
t?t.toUpperCase():""})}),hi=y(function(e){return 
e.charAt(0).toUpperCase()+e.slice(1)}),vi=/\B([A-Z])/g,mi=y(function(e){return 
e.replace(vi,"-$1").toLowerCase()}),yi=Function.prototype.bind?b:g,gi=function(e,t,n){return!1},bi=function(e){return
 e},xi="data-server-rendere [...]
- * jQuery JavaScript Library v3.3.1
- * https://jquery.com/
- *
- * Includes Sizzle.js
- * https://sizzlejs.com/
- *
- * Copyright JS Foundation and other contributors
- * Released under the MIT license
- * https://jquery.org/license
- *
- * Date: 2018-01-20T17:24Z
- */
-!function(t,n){"use strict";"object"==typeof e&&"object"==typeof 
e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new 
Error("jQuery requires a window with a document");return 
n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,i){"use 
strict";function a(e,t,n){t=t||le;var 
r,o=t.createElement("script");if(o.text=e,n)for(r in 
Te)n[r]&&(o[r]=n[r]);t.head.appendChild(o).parentNode.removeChild(o)}function 
s(e){return null==e?e+"":"object"==typeof e||"function" [...]
- * Sizzle CSS Selector Engine v2.3.3
- * https://sizzlejs.com/
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2016-08-08
- */
-function(e){function t(e,t,n,r){var 
o,i,a,s,u,l,p,d=t&&t.ownerDocument,h=t?t.nodeType:9;if(n=n||[],"string"!=typeof 
e||!e||1!==h&&9!==h&&11!==h)return 
n;if(!r&&((t?t.ownerDocument||t:q)!==j&&O(t),t=t||j,L)){if(11!==h&&(u=ve.exec(e)))if(o=u[1]){if(9===h){if(!(a=t.getElementById(o)))return
 n;if(a.id===o)return n.push(a),n}else 
if(d&&(a=d.getElementById(o))&&P(t,a)&&a.id===o)return 
n.push(a),n}else{if(u[2])return 
G.apply(n,t.getElementsByTagName(e)),n;if((o=u[3])&&x.getElementsByClassName&& 
[...]
-//# sourceMappingURL=vendor.797030c921ced786bb0a.js.map
\ No newline at end of file
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
index 45dccb5..026be5e 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Iterator;
 import java.util.Locale;
+import java.util.Set;
 
 import javax.el.ValueExpression;
 import javax.faces.FacesWrapper;
@@ -41,6 +42,7 @@ import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.beanutils.BeanUtilsBean;
 import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.beanutils.PropertyUtilsBean;
+import org.apache.empire.commons.Attributes;
 import org.apache.empire.commons.ObjectUtils;
 import org.apache.empire.commons.Options;
 import org.apache.empire.commons.StringUtils;
@@ -129,6 +131,12 @@ public class TagEncodingHelper implements NamingContainer
         {
             return expr.getAttribute(name);
         }
+    
+        @Override
+        public Set<Attributes.Attribute> getAttributes()
+        {
+            return expr.getSourceColumn().getAttributes();
+        }
 
         @Override
         public Options getOptions()
diff --git a/empire-db/src/main/java/org/apache/empire/data/Column.java 
b/empire-db/src/main/java/org/apache/empire/data/Column.java
index 92b9678..c5e5c5e 100644
--- a/empire-db/src/main/java/org/apache/empire/data/Column.java
+++ b/empire-db/src/main/java/org/apache/empire/data/Column.java
@@ -18,6 +18,10 @@
  */
 package org.apache.empire.data;
 
+import java.util.Set;
+
+import org.apache.empire.commons.Attributes;
+
 /**
  * The column interface provides methods for accessing metadata that is only 
relevant for updating records.
  * <P>
@@ -81,6 +85,12 @@ public interface Column extends ColumnExpr
     boolean isReadOnly();
 
     /**
+     * Returns all metadata attributes.
+     * @return set of metadata attributes
+     */
+    Set<Attributes.Attribute> getAttributes();
+
+    /**
      * Checks if the given value is a valid value for this column 
      * If not, an exception is thrown
      * @return the value the validated and possibly converted value
diff --git a/empire-db/src/main/java/org/apache/empire/data/ColumnExpr.java 
b/empire-db/src/main/java/org/apache/empire/data/ColumnExpr.java
index cf6bfab..29ed800 100644
--- a/empire-db/src/main/java/org/apache/empire/data/ColumnExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/data/ColumnExpr.java
@@ -53,9 +53,9 @@ public interface ColumnExpr extends Unwrappable<ColumnExpr>
     String getControlType();
 
     /**
-     * Returns futher metadata attributes.
+     * Returns a metadata attribute.
      * @param name the name of the attribute
-     * @return futher metadata attributes
+     * @return the metadata attribute
      */
     Object getAttribute(String name);
 
diff --git 
a/empire-db/src/main/java/org/apache/empire/data/bean/BeanProperty.java 
b/empire-db/src/main/java/org/apache/empire/data/bean/BeanProperty.java
index 0df3dec..9c66574 100644
--- a/empire-db/src/main/java/org/apache/empire/data/bean/BeanProperty.java
+++ b/empire-db/src/main/java/org/apache/empire/data/bean/BeanProperty.java
@@ -18,6 +18,9 @@
  */
 package org.apache.empire.data.bean;
 
+import java.util.Collections;
+import java.util.Set;
+
 import org.apache.empire.commons.Attributes;
 import org.apache.empire.commons.ObjectUtils;
 import org.apache.empire.commons.Options;
@@ -129,6 +132,18 @@ public class BeanProperty implements Column
     }
 
     /**
+     * Returns all metadata attributes.
+     * @return set of metadata attributes
+     */
+    @Override
+    @SuppressWarnings("unchecked")
+    public Set<Attributes.Attribute> getAttributes()
+    {
+        return (attributes!=null ? Collections.unmodifiableSet(attributes)
+                                 : Collections.EMPTY_SET);
+    }
+
+    /**
      * Returns the title attribute.
      * @return the column title
      */
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBColumn.java 
b/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
index f7254ed..849a767 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
@@ -18,8 +18,10 @@
  */
 package org.apache.empire.db;
 
+import java.util.Collections;
 import java.util.Set;
 
+import org.apache.empire.commons.Attributes;
 import org.apache.empire.commons.Options;
 import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.Column;
@@ -350,6 +352,18 @@ public abstract class DBColumn extends DBColumnExpr
     }
 
     /**
+     * Returns all metadata attributes.
+     * @return set of metadata attributes
+     */
+    @Override
+    @SuppressWarnings("unchecked")
+    public Set<Attributes.Attribute> getAttributes()
+    {
+        return (attributes!=null ? Collections.unmodifiableSet(attributes)
+                                 : Collections.EMPTY_SET);
+    }
+
+    /**
      *  @see DBColumnExpr#getOptions()
      */
     @Override

Reply via email to