EMPIREDB-306
Allow id on linkTag
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java
index ed707d4..eb3a0ad 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java
@@ -37,8 +37,11 @@
 import org.apache.empire.commons.ObjectUtils;

 import org.apache.empire.commons.StringUtils;

 import org.apache.empire.data.DataType;

+import org.apache.empire.exceptions.InvalidPropertyException;

+import org.apache.empire.jsf2.app.FacesUtils;

 import org.apache.empire.jsf2.controls.InputControl;

 import org.apache.empire.jsf2.controls.InputControlManager;

+import org.apache.empire.jsf2.utils.ParameterMap;

 import org.apache.empire.jsf2.utils.StringResponseWriter;

 import org.apache.empire.jsf2.utils.TagEncodingHelper;

 import org.apache.empire.jsf2.utils.TagEncodingHelperFactory;

@@ -83,6 +86,24 @@
     private String treeClientId = null;

     

     @Override

+    public void setId(String id) 

+    {   // empty?

+        if(StringUtils.isEmpty(id))

+        {   // Generate unique id

+            Object page = getAttributes().get("page");

+            String outcome = StringUtils.toString(page);

+            if (StringUtils.isEmpty(outcome))

+                throw new InvalidPropertyException("page", page);

+            ParameterMap pm = FacesUtils.getParameterMap(FacesUtils.getContext());

+            id = pm.encodeString(outcome);

+        }

+        // set

+        super.setId(id);

+        // reset record

+        helper.setRecord(null);

+    }

+    

+    @Override

     public boolean visitTree(VisitContext visitContext, VisitCallback callback) 

     {

         FacesContext context = visitContext.getFacesContext();

@@ -238,6 +259,10 @@
         boolean hasColumn = helper.hasColumn();

         Object value = getLinkValue(hasColumn);

         link.setValue(value);

+        // id

+        String id = getId();

+        if (id.startsWith("j_")==false)

+            link.setId(id+"_a");

         // css Style

         DataType dataType = (hasColumn ? helper.getColumn().getDataType() : DataType.UNKNOWN);

         link.setStyleClass(helper.getTagStyleClass(dataType, null, getLinkStyleClass()));

diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/Page.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/Page.java
index 26ca141..25af54b 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/Page.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/Page.java
@@ -22,6 +22,7 @@
 import java.lang.reflect.Method;

 import java.sql.Connection;

 import java.util.ArrayList;

+import java.util.Iterator;

 import java.util.List;

 import java.util.Map;

 

@@ -224,8 +225,8 @@
     

     public boolean isHasMessages()

     {

-        List<FacesMessage> msgl = FacesContext.getCurrentInstance().getMessageList();

-        return !msgl.isEmpty();

+        Iterator<FacesMessage> fmi = FacesContext.getCurrentInstance().getMessages();

+        return fmi.hasNext();

     }

     

     protected void checkPageAccess()

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 40eb08a..312e445 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
@@ -605,7 +605,7 @@
     

     public String getColumnName()

     {

-        return (getColumn()!=null ? column.getName() : "null");

+        return ((this.column=findColumn())!=null ? column.getName() : "null");

     }

 

     public void setColumn(Column column)