View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table;
20  
21  import java.util.List;
22  import java.util.Optional;
23  import org.apache.syncope.common.lib.Attr;
24  import org.apache.syncope.common.lib.to.ConnObject;
25  import org.apache.syncope.common.lib.types.SchemaType;
26  import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
27  import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
28  import org.apache.wicket.markup.html.basic.Label;
29  import org.apache.wicket.markup.repeater.Item;
30  import org.apache.wicket.model.IModel;
31  import org.apache.wicket.model.ResourceModel;
32  
33  public class ConnObjectAttrColumn extends AbstractColumn<ConnObject, String> {
34  
35      private static final long serialVersionUID = 2624734332447371372L;
36  
37      private final String name;
38  
39      public ConnObjectAttrColumn(final String name, final SchemaType schemaType) {
40          // set sortProperty to schematype#name (e.g. derivedSchema#cn, 
41          // for use with SortableUserProviderComparator.AttrModel#getObject)
42          super(new ResourceModel(name, name), schemaType.name() + '#' + name);
43          this.name = name;
44      }
45  
46      @Override
47      public void populateItem(
48              final Item<ICellPopulator<ConnObject>> cellItem,
49              final String componentId,
50              final IModel<ConnObject> rowModel) {
51  
52          Optional<Attr> attr = rowModel.getObject().getAttr(name);
53          List<String> values = attr.map(Attr::getValues).orElse(null);
54  
55          if (values == null || values.isEmpty()) {
56              cellItem.add(new Label(componentId, ""));
57          } else if (values.size() == 1) {
58              cellItem.add(new Label(componentId, values.get(0)));
59          } else {
60              cellItem.add(new Label(componentId, values.toString()));
61          }
62      }
63  }