Changeset 5844


Ignore:
Timestamp:
11/24/14 08:35:50 (10 years ago)
Author:
Twan Goosen
Message:

Drop downs for groups and users in Groups management (admin pages)

Location:
ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry/frontend/Groups.html

    r5812 r5844  
    2424
    2525        <h2>Groups</h2>
    26         <ul>
    27             <li wicket:id="groups">
    28                 <span wicket:id="name">[name]</span>
    29                 <a wicket:id="select">[Select]</a>
    30             </li>
    31         </ul>
     26        <form wicket:id="groups">
     27            <select wicket:id="group">
     28                <option>Group 1</option>
     29            </select>
     30            <input type="submit" value="Select" />
     31        </form>
     32
    3233
    3334        <div wicket:id="group" style="border: 1px dashed; padding-left: 2em;">
     
    3738            <form wicket:id="newMember">
    3839                <div wicket:id="feedback"></div>           
    39                 Principal name: <input type="text" wicket:id="principal" /> <br />
     40                Principal name:
     41                <select wicket:id="principal">
     42                    <option>user</option>
     43                </select>
    4044                <input type="submit" value="Add member" />
    4145            </form>
  • ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry/frontend/Groups.java

    r5812 r5844  
    66import clarin.cmdi.componentregistry.impl.database.ValidationException;
    77import clarin.cmdi.componentregistry.model.RegistryUser;
     8import clarin.cmdi.componentregistry.persistence.jpa.UserDao;
    89import com.google.common.collect.Iterables;
    910import com.google.common.collect.Lists;
     11import com.google.common.collect.Ordering;
    1012import java.util.Collections;
    1113import java.util.List;
     
    1416import org.apache.wicket.markup.html.WebMarkupContainer;
    1517import org.apache.wicket.markup.html.basic.Label;
     18import org.apache.wicket.markup.html.form.DropDownChoice;
    1619import org.apache.wicket.markup.html.form.Form;
    1720import org.apache.wicket.markup.html.form.TextField;
    1821import org.apache.wicket.markup.html.link.ExternalLink;
    19 import org.apache.wicket.markup.html.link.Link;
    2022import org.apache.wicket.markup.html.list.ListItem;
    2123import org.apache.wicket.markup.html.list.ListView;
     
    2527import org.apache.wicket.model.Model;
    2628import org.apache.wicket.spring.injection.annot.SpringBean;
     29import org.slf4j.Logger;
     30import org.slf4j.LoggerFactory;
    2731
    2832/**
     
    3236public class Groups extends SecureAdminWebPage {
    3337
     38    private final static Logger logger = LoggerFactory.getLogger(Groups.class);
     39
    3440    @SpringBean
    3541    private GroupService groupService;
     42    @SpringBean
     43    private UserDao userDao;
    3644    private final IModel<Long> selectedGroup = new Model<Long>(null);
    3745
     
    6977
    7078    private Component createGroupList(String id) {
    71         final IModel<List> groupsModel = new AbstractReadOnlyModel<List>() {
    72 
    73             @Override
    74             public List getObject() {
     79        final IModel<String> groupModel = new Model<String>(null);
     80        final Form form = new Form(id) {
     81
     82            @Override
     83            protected void onSubmit() {
     84                final String groupName = groupModel.getObject();
     85                if (groupName != null) {
     86                    try {
     87                        final Long groupId = (Long) groupService.getGroupIdByName(groupName);
     88                        selectedGroup.setObject(groupId);
     89                    } catch (ItemNotFoundException ex) {
     90                        logger.warn("Could", ex);
     91                        selectedGroup.setObject(null);
     92                    }
     93                }
     94            }
     95
     96        };
     97
     98        // model for group options
     99        final IModel<List<String>> groupsModel = new AbstractReadOnlyModel<List<String>>() {
     100
     101            @Override
     102            public List<String> getObject() {
    75103                return groupService.listGroupNames();
    76104            }
    77105        };
    78106
    79         return new ListView(id, groupsModel) {
    80 
    81             @Override
    82             protected void populateItem(final ListItem li) {
    83                 li.add(new Label("name", li.getModel()));
    84                 li.add(new Link("select") {
    85 
    86                     @Override
    87                     public void onClick() {
    88                         final String groupName = (String) li.getModelObject();
    89                         try {
    90                             final Long groupId = (Long) groupService.getGroupIdByName(groupName);
    91                             selectedGroup.setObject(groupId);
    92                         } catch (ItemNotFoundException ex) {
    93                             selectedGroup.setObject(null);
    94                         }
    95                     }
    96                 });
    97             }
    98         };
    99 
     107        // group selector
     108        final DropDownChoice<String> groupChoice = new DropDownChoice<String>("group", groupModel, groupsModel);
     109        groupChoice.setRequired(true);
     110        form.add(groupChoice);
     111
     112        return form;
    100113    }
    101114
     
    129142
    130143    private Form createNewMemberForm(String id) {
    131         final IModel<String> principalModel = new Model<String>("");
     144        final IModel<RegistryUser> principalModel = new Model<RegistryUser>(null);
    132145        final Form memberForm = new Form(id) {
    133146
     
    136149                try {
    137150                    final String groupName = groupService.getGroupNameById(selectedGroup.getObject());
    138                     groupService.makeMember(principalModel.getObject(), groupName);
     151                    groupService.makeMember(principalModel.getObject().getPrincipalName(), groupName);
    139152                    info("User " + principalModel.getObject() + " added to group");
    140153                } catch (ItemNotFoundException ex) {
     
    145158        };
    146159        memberForm.add(new FeedbackPanel("feedback"));
    147         memberForm.add(new TextField("principal", principalModel).setRequired(true));
     160
     161        final IModel<List<RegistryUser>> usersModel = new AbstractReadOnlyModel<List<RegistryUser>>() {
     162
     163            @Override
     164            public List<RegistryUser> getObject() {
     165                // return all users sorted by their tostring value (ignoring case)
     166                return new Ordering<Object>() {
     167
     168                    @Override
     169                    public int compare(Object t, Object t1) {
     170                        return t.toString().compareToIgnoreCase(t1.toString());
     171                    }
     172
     173                }.sortedCopy(userDao.getAllUsers());
     174            }
     175        };
     176
     177        final DropDownChoice<RegistryUser> usersChoice = new DropDownChoice<RegistryUser>("principal", principalModel, usersModel);
     178        usersChoice.setRequired(true);
     179        memberForm.add(usersChoice);
    148180        return memberForm;
    149181    }
  • ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry/model/RegistryUser.java

    r4098 r5844  
    2424    @Column(name = "name")
    2525    private String name;
    26    
    27     @Column(name = "principal_name", unique=true)
     26
     27    @Column(name = "principal_name", unique = true)
    2828    private String principalName;
    29    
     29
    3030    @Id
    31     @SequenceGenerator( name = "registry_user_id_seq", sequenceName = "registry_user_id_seq", allocationSize = 1, initialValue = 1 )
    32     @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "registry_user_id_seq" )
     31    @SequenceGenerator(name = "registry_user_id_seq", sequenceName = "registry_user_id_seq", allocationSize = 1, initialValue = 1)
     32    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "registry_user_id_seq")
    3333    @Column(name = "id")
    3434    private Long id;
    3535
    3636    public void setName(String name) {
    37         this.name = name;
     37        this.name = name;
    3838    }
    3939
    4040    public String getName() {
    41         return name;
     41        return name;
    4242    }
    4343
    4444    public void setPrincipalName(String principalName) {
    45         this.principalName = principalName;
     45        this.principalName = principalName;
    4646    }
    4747
    4848    public String getPrincipalName() {
    49         return principalName;
     49        return principalName;
    5050    }
    5151
    5252    public Long getId() {
    53         return id;
     53        return id;
    5454    }
    5555
    5656    public void setId(Long id) {
    57         this.id = id;
     57        this.id = id;
    5858    }
     59
     60    @Override
     61    public String toString() {
     62        if (getName() == null) {
     63            return getPrincipalName();
     64        } else {
     65            return String.format("%s [%s]", getName(), getPrincipalName());
     66        }
     67    }
     68
    5969}
Note: See TracChangeset for help on using the changeset viewer.