You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2012/09/24 11:34:41 UTC

svn commit: r1389258 - in /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings: data/user/dao/ web/components/admin/groups/

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"));
 	}
 }