Author: solomax
Date: Mon Sep 24 09:34:41 2012
New Revision: 1389258

URL: http://svn.apache.org/viewvc?rev=1389258&view=rev
Log:
Wicket: Group panel: User search is implemented

Added:
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/AddUsersForm.java
Modified:
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/UsersDaoImpl.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.html
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.java

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/UsersDaoImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/UsersDaoImpl.java?rev=1389258&r1=1389257&r2=1389258&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/UsersDaoImpl.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/UsersDaoImpl.java
 Mon Sep 24 09:34:41 2012
@@ -58,6 +58,38 @@ public class UsersDaoImpl implements OmD
                return getNondeletedUsers(first, count);
        }
        
+       //FIXME need to be generalized with other copy/pasted methods
+       public List<Users> get(String search) {
+               String[] searchItems = search.split(" ");
+               StringBuilder hql = new StringBuilder("SELECT u FROM Users u 
WHERE u.deleted = false ");
+
+               hql.append("AND ( ");
+               for (int i = 0; i < searchItems.length; ++i) {
+                       if (searchItems[i].isEmpty()) {
+                               continue;
+                       }
+                       if (i != 0) {
+                               hql.append(" OR ");
+                       }
+                       StringBuilder placeholder = new StringBuilder();
+                       
placeholder.append("%").append(StringUtils.lowerCase(searchItems[i])).append("%");
+
+                       hql.append("(lower(u.lastname) LIKE '")
+                               .append(placeholder)
+                               .append("' OR lower(u.firstname) LIKE '")
+                               .append(placeholder)
+                               .append("' OR lower(u.login) LIKE '")
+                               .append(placeholder)
+                               .append("' OR lower(u.adresses.email) LIKE '")
+                               .append(placeholder)
+                               .append("' ) ");
+               }
+
+               hql.append(" ) ");
+               TypedQuery<Users> q = em.createQuery(hql.toString(), 
Users.class);
+               return q.getResultList();
+       }
+       
        public long count() {
                return selectMaxFromUsers();
        }

Added: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/AddUsersForm.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/AddUsersForm.java?rev=1389258&view=auto
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/AddUsersForm.java
 (added)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/AddUsersForm.java
 Mon Sep 24 09:34:41 2012
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.openmeetings.web.components.admin.groups;
+
+import static 
org.apache.openmeetings.web.components.admin.groups.GroupUsersPanel.getUser;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.data.user.dao.UsersDaoImpl;
+import org.apache.openmeetings.persistence.beans.user.Users;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
+import org.apache.wicket.markup.html.form.ListMultipleChoice;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+
+public class AddUsersForm extends Form<Void> {
+       private static final long serialVersionUID = -2458265250684437277L;
+       private String userSearchText;
+       private List<Users> usersToAdd = new ArrayList<Users>();
+       
+       public AddUsersForm(String id) {
+               super(id);
+
+               IModel<List<Users>> usersModel = new 
PropertyModel<List<Users>>(AddUsersForm.this, "usersToAdd");
+               final ListMultipleChoice<Users> users = new 
ListMultipleChoice<Users>("users"
+                               , usersModel
+                               , usersModel
+                               , new IChoiceRenderer<Users>() {
+                       private static final long serialVersionUID = 1L;
+
+                       public Object getDisplayValue(Users object) {
+                               return getUser(object);
+                       }
+
+                       public String getIdValue(Users object, int index) {
+                               return "" + object.getUser_id();
+                       }
+               });
+               
+               add(new TextField<String>("searchText", new 
PropertyModel<String>(AddUsersForm.this, "userSearchText")));
+               add(new AjaxButton("search", 
Model.of(WebSession.getString(182L))) {
+                       private static final long serialVersionUID = 
-4752180617634945030L;
+
+                       protected void onAfterSubmit(AjaxRequestTarget target, 
org.apache.wicket.markup.html.form.Form<?> form) {
+                               usersToAdd.clear();
+                               
usersToAdd.addAll(Application.getBean(UsersDaoImpl.class).get(userSearchText));
+                               target.add(users);
+                       }
+               });
+               add(users.setOutputMarkupId(true));
+               add(new AjaxButton("add", Model.of(WebSession.getString(175L))) 
{
+                       private static final long serialVersionUID = 
5553555064487161840L;
+
+                       protected void onAfterSubmit(AjaxRequestTarget target, 
org.apache.wicket.markup.html.form.Form<?> form) {
+                               for (Users u : usersToAdd) {
+                                       //add them
+                               }
+                       }
+               });
+       }
+
+}

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.html
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.html?rev=1389258&r1=1389257&r2=1389258&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.html
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.html
 Mon Sep 24 09:34:41 2012
@@ -27,6 +27,7 @@
                                        closeOnEscape: true
                                        , autoOpen: false
                                        , resizable: false
+                                       , width: 400
                                });
                        };
                </script>
@@ -67,7 +68,7 @@
                                                        </tr>
                                                        <tr>
                                                                <td 
style="font-weight: bold;"><wicket:ommessage key="273" /></td>
-                                                               <td 
style="text-align: right;"><div class="formNewButton" onclick="$('#addUsers 
:text').val(''); $('#addUsers').dialog('open');"><input/></div></td>
+                                                               <td 
style="text-align: right;"><div wicket:id="addUsersBtn" class="formNewButton" 
onclick="$('#addUsers :text').val(''); 
$('#addUsers').dialog('open');"><input/></div></td>
                                                        </tr>
                                                        <tr>
                                                                
<td><wicket:ommessage key="177" /></td>
@@ -92,7 +93,7 @@
                                        </tr>
                                        <tr>
                                                <td><wicket:ommessage key="183" 
/></td>
-                                               <td><select 
wicket:id="users"></select></td>
+                                               <td><select wicket:id="users" 
style="width: 200px;"></select></td>
                                        </tr>
                                        <tr>
                                                <td style="text-align: 
right"><input type="button" wicket:id="add" /></td>

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.java?rev=1389258&r1=1389257&r2=1389258&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.java
 Mon Sep 24 09:34:41 2012
@@ -18,42 +18,29 @@
  */
 package org.apache.openmeetings.web.components.admin.groups;
 
-import static 
org.apache.openmeetings.web.components.admin.groups.GroupUsersPanel.getUser;
-
 import org.apache.openmeetings.data.user.dao.OrganisationDAO;
-import org.apache.openmeetings.data.user.dao.UsersDaoImpl;
 import org.apache.openmeetings.persistence.beans.domain.Organisation;
-import org.apache.openmeetings.persistence.beans.user.Users;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.components.admin.AdminPanel;
 import org.apache.openmeetings.web.components.admin.PagedEntityListPanel;
 import org.apache.openmeetings.web.data.OmDataProvider;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.IChoiceRenderer;
-import org.apache.wicket.markup.html.form.ListMultipleChoice;
-import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.markup.repeater.data.DataView;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
 
 public class GroupsPanel extends AdminPanel {
        private static final long serialVersionUID = -5170400556006464830L;
-       private String userSearchText;
        
        public GroupsPanel(String id) {
                super(id);
                final WebMarkupContainer listContainer = new 
WebMarkupContainer("listContainer");
+        final WebMarkupContainer addUsersBtn = new 
WebMarkupContainer("addUsersBtn");
                final GroupForm form = new GroupForm("form", listContainer, new 
Organisation());
-        add(form);
-               
+        add(form.add(addUsersBtn.setEnabled(false).setOutputMarkupId(true)));
+
                DataView<Organisation> dataView = new 
DataView<Organisation>("groupList", new 
OmDataProvider<Organisation>(OrganisationDAO.class)) {
                        private static final long serialVersionUID = 
8715559628755439596L;
 
@@ -67,6 +54,7 @@ public class GroupsPanel extends AdminPa
 
                                        protected void 
onEvent(AjaxRequestTarget target) {
                                                
form.setModelObject(organisation);
+                                               addUsersBtn.setEnabled(true); 
//FIXME need to be handled differently
                                                form.updateView(target);
                                                target.add(form);
                                        }
@@ -85,37 +73,6 @@ public class GroupsPanel extends AdminPa
                        }
                });
                
-               add(new Form<Void>("addUsers"){
-                       private static final long serialVersionUID = 
3726465576292784604L;
-
-                       {
-                               add(new TextField<String>("searchText", new 
PropertyModel<String>(GroupsPanel.this, "userSearchText")));
-                               add(new AjaxButton("search", 
Model.of(WebSession.getString(182L))) {
-                                       private static final long 
serialVersionUID = -4752180617634945030L;
-
-                                       protected void 
onAfterSubmit(AjaxRequestTarget target, 
org.apache.wicket.markup.html.form.Form<?> form) {
-                                               
-                                       }
-                               });
-                               add(new ListMultipleChoice<Users>("users", 
Application.getBean(UsersDaoImpl.class).getAllUsers(), new 
IChoiceRenderer<Users>() {
-                                       private static final long 
serialVersionUID = 1L;
-
-                                       public Object getDisplayValue(Users 
object) {
-                                               return getUser(object);
-                                       }
-
-                                       public String getIdValue(Users object, 
int index) {
-                                               return "" + object.getUser_id();
-                                       }
-                               }));
-                               add(new AjaxButton("add", 
Model.of(WebSession.getString(175L))) {
-                                       private static final long 
serialVersionUID = 5553555064487161840L;
-
-                                       protected void 
onAfterSubmit(AjaxRequestTarget target, 
org.apache.wicket.markup.html.form.Form<?> form) {
-                                               
-                                       }
-                               });
-                       }
-               });
+               add(new AddUsersForm("addUsers"));
        }
 }


Reply via email to