Example usage for org.apache.wicket.util.collections MultiMap addValue

List of usage examples for org.apache.wicket.util.collections MultiMap addValue

Introduction

In this page you can find the example usage for org.apache.wicket.util.collections MultiMap addValue.

Prototype

public void addValue(final K key, final V value) 

Source Link

Document

Adds value to the specified key

Usage

From source file:org.forgerock.openam.amutils.config.processors.ServiceProcessor.java

License:CDDL license

protected final MultiMap<String, String> processAttributes(List<AttributeValuePair> attributes) {
    MultiMap<String, String> attrs = new MultiMap<>();
    for (AttributeValuePair avPair : attributes) {
        String key = avPair.getAttribute().getName();
        for (Value value : avPair.getValue()) {
            attrs.addValue(key, value.getvalue());
        }//  ww  w  .j  a v a2 s .c o m
    }
    return attrs;
}

From source file:org.wicketstuff.rest.resource.AbstractRestResource.java

License:Apache License

/***
 * Internal method to load class methods annotated with {@link MethodMapping}
 *
 * @return//from  w w w .ja  v a2  s  .  co m
 *       a map object contained annotated method. Mapped method are stored concatenating
 *       the number of the segments of their URL and their HTTP method (see annotation MethodMapping)
 */
private Map<String, List<MethodMappingInfo>> loadAnnotatedMethods() {
    Method[] methods = getClass().getDeclaredMethods();
    MultiMap<String, MethodMappingInfo> mappedMethods = new MultiMap<String, MethodMappingInfo>();
    boolean isUsingAuthAnnot = false;

    for (int i = 0; i < methods.length; i++) {
        Method method = methods[i];
        MethodMapping methodMapped = method.getAnnotation(MethodMapping.class);
        AuthorizeInvocation authorizeInvocation = method.getAnnotation(AuthorizeInvocation.class);

        isUsingAuthAnnot = isUsingAuthAnnot || authorizeInvocation != null;

        if (methodMapped != null) {
            HttpMethod httpMethod = methodMapped.httpMethod();
            MethodMappingInfo methodMappingInfo = new MethodMappingInfo(methodMapped, method);

            if (!webSerialDeserial.isMimeTypeSupported(methodMappingInfo.getInputFormat())
                    || !webSerialDeserial.isMimeTypeSupported(methodMappingInfo.getOutputFormat()))
                throw new WicketRuntimeException(
                        "Mapped methods use a MIME type not supported by obj serializer/deserializer!");

            mappedMethods.addValue(methodMappingInfo.getSegmentsCount() + "_" + httpMethod.getMethod(),
                    methodMappingInfo);
        }
    }
    // if AuthorizeInvocation has been found but no role-checker has been
    // configured, throw an exception
    if (isUsingAuthAnnot && roleCheckingStrategy == null)
        throw new WicketRuntimeException(
                "Annotation AuthorizeInvocation is used but no role-checking strategy has been set for the controller!");

    return CollectionUtils.makeListMapImmutable(mappedMethods);
}

From source file:org.wicketstuff.rest.resource.MethodMappingInfo.java

License:Apache License

private Map<Class<? extends Annotation>, List<MethodParameter<?>>> loadAnnotatedMethodParameters() {
    MultiMap<Class<? extends Annotation>, MethodParameter<?>> result = new MultiMap<>();

    for (MethodParameter<?> methodParameter : methodParameters) {
        Annotation annotationParam = methodParameter.getAnnotationParam();

        if (annotationParam != null) {
            result.addValue(annotationParam.getClass(), methodParameter);
        }// w  w  w .  ja  v  a 2 s .c  om
    }

    return CollectionUtils.makeListMapImmutable(result);
}

From source file:ro.fortsoft.wicket.pivot.PivotTableRenderModel.java

License:Apache License

private void calculate(PivotModel pivotModel) {
    spanCache = new HashMap<List<Object>, Integer>();
    column = new ArrayList<HeaderRenderRow>();
    row = new ArrayList<DataRenderRow>();
    grandTotalRow = new ArrayList<GrandTotalRenderRow>();

    List<PivotField> columnFields = pivotModel.getFields(PivotField.Area.COLUMN);
    List<PivotField> rowFields = pivotModel.getFields(PivotField.Area.ROW);
    List<PivotField> dataFields = pivotModel.getFields(PivotField.Area.DATA);

    int columnFieldsSize = columnFields.size();
    int rowFieldsSize = rowFields.size();
    int dataFieldsSize = dataFields.size();

    List<List<Object>> rowKeys = pivotModel.getRowKeys();
    List<List<Object>> columnKeys = pivotModel.getColumnKeys();

    // rendering header
    int headerRowCount = columnFieldsSize;
    if (headerRowCount == 0) {
        headerRowCount = 1;//from  w  w w .  ja v  a  2s . c  om
    }
    if ((dataFieldsSize > 1) && (columnFieldsSize > 0)) {
        // add an extra row (the row with data field titles)
        headerRowCount++;
    }

    for (int i = 0; i < headerRowCount; i++) {
        // rendering row header (first columns)
        HeaderRenderRow tr = new HeaderRenderRow();
        column.add(tr);

        for (int j = 0; j < rowFieldsSize; j++) {
            if (i < headerRowCount - 1) {
                // rendering empty cell
                tr.rowHeader.add(new HeaderRenderCell(null));
            } else {
                // rendering row field
                tr.rowHeader.add(new HeaderRenderCell(rowFields.get(j)));
            }
        }

        // rendering column keys
        Node columnsRoot = pivotModel.getColumnsHeaderTree().getRoot();
        /*HashSet look-up is O(1) more optimized than ArrayList*/
        Set<List<Object>> pathRenderedCache = new HashSet<List<Object>>();
        for (List<Object> columnKey : columnKeys) {
            if (i < columnFieldsSize) {
                PivotField columnField = columnFields.get(i);
                List<Object> path = new ArrayList<Object>(columnKey.subList(0, i + 1));
                int colspan = getSpan(columnsRoot, path);
                colspan = colspan * dataFieldsSize;

                HeaderValueRenderCell valueRenderCell = new HeaderValueRenderCell(columnKey.get(i),
                        columnField);
                valueRenderCell.colspan = colspan;

                if (pathRenderedCache.contains(path)) {
                    /*
                     * Was: setVisible(false). We just dont add the field
                     * here.
                     */
                } else {
                    tr.value.add(valueRenderCell);
                    pathRenderedCache.add(path);
                }
            } else {
                for (PivotField dataField : dataFields) {
                    tr.value.add(new HeaderRenderCell(dataField));
                }
            }
        }

        if (!columnFields.isEmpty() && pivotModel.isShowGrandTotalForRow()) {
            // rendering grand total column
            if (i == 0) {
                GrandTotalHeaderRenderCell cell = new GrandTotalHeaderRenderCell("Grand Total");
                cell.colspan = dataFieldsSize;
                tr.grandTotalColumn.add(cell);
            } else if (i < columnFieldsSize) {
                GrandTotalHeaderRenderCell cell = new GrandTotalHeaderRenderCell(null);
                cell.colspan = dataFieldsSize;
                tr.grandTotalColumn.add(cell);
            } else {
                for (PivotField dataField : dataFields) {
                    HeaderRenderCell cell = new HeaderRenderCell(dataField);
                    tr.grandTotalColumn.add(cell);
                }
            }
        }
    }

    // rendering rows
    Node rowsRoot = pivotModel.getRowsHeaderTree().getRoot();
    /*HashSet look-up is O(1) more optimized than ArrayList*/
    Set<List<Object>> pathRenderedCache = new HashSet<List<Object>>();
    for (List<Object> rowKey : rowKeys) {
        DataRenderRow tr = new DataRenderRow();
        row.add(tr);

        for (int k = 0; k < rowKey.size(); k++) {
            List<Object> path = new ArrayList<Object>(rowKey.subList(0, k + 1));
            int rowspan = getSpan(rowsRoot, path);

            PivotField rowField = rowFields.get(k);
            DataHeaderRenderCell cell = new DataHeaderRenderCell(rowKey.get(k), rowField);
            cell.rowspan = rowspan;

            // TODO optimization (create an emptyPanel is more optimal)
            if (pathRenderedCache.contains(path)) {
                /* tmp.setVisible(false); */
            } else {
                pathRenderedCache.add(path);
                tr.rowHeader.add(cell);
            }
        }

        for (List<Object> columnKey : columnKeys) {
            for (PivotField dataField : dataFields) {
                Number cellValue = (Number) pivotModel.getValueAt(dataField, rowKey, columnKey);
                tr.value.add(new DataValueRenderCell(cellValue, dataField));
            }
        }

        if (!columnFields.isEmpty() && pivotModel.isShowGrandTotalForRow()) {
            final MultiMap<PivotField, Object> values = new MultiMap<PivotField, Object>();
            for (List<Object> columnKey : columnKeys) {
                for (PivotField dataField : dataFields) {
                    values.addValue(dataField, pivotModel.getValueAt(dataField, rowKey, columnKey));
                }
            }
            for (PivotField dataField : dataFields) {
                double grandTotalForRow = 0.0d;
                if (dataField.getFieldCalculation() != null) {
                    grandTotalForRow = PivotUtils.getSummary(dataField, Collections.emptyList(),
                            new FieldValueProviderFromSummedValues(values)).doubleValue();
                } else {
                    List<Object> items = values.get(dataField);
                    for (Object item : items) {
                        if (item != null) {
                            grandTotalForRow += ((Number) item).doubleValue();
                        }
                    }
                }
                tr.value.add(new GrandTotalValueRenderCell(grandTotalForRow, true));
            }
        }
    }

    if (!rowFields.isEmpty() && pivotModel.isShowGrandTotalForColumn()) {
        GrandTotalRenderRow tr = new GrandTotalRenderRow();
        grandTotalRow.add(tr);

        GrandTotalRowHeaderRenderCell grandTotalCell = new GrandTotalRowHeaderRenderCell("Grand Total");
        tr.rowHeader.add(grandTotalCell);
        grandTotalCell.colspan = rowFieldsSize;

        final Map<PivotField, Double> grandTotal = new HashMap<PivotField, Double>();
        for (List<Object> columnKey : columnKeys) {
            MultiMap<PivotField, Object> values = new MultiMap<PivotField, Object>();
            for (List<Object> rowKey : rowKeys) {
                for (PivotField dataField : dataFields) {
                    if (dataField.getFieldCalculation() == null)
                        values.addValue(dataField, pivotModel.getValueAt(dataField, rowKey, columnKey));
                }
            }
            for (PivotField dataField : dataFields) {
                double grandTotalForColumn = 0.0d;
                if (dataField.getFieldCalculation() != null) {
                    grandTotalForColumn = PivotUtils.getSummary(dataField, Collections.emptyList(),
                            new FieldValueProviderFromSummedValues(values)).doubleValue();
                } else {
                    // We can sum all row values
                    List<Object> items = values.get(dataField);
                    for (Object item : items) {
                        if (item != null) {
                            grandTotalForColumn += ((Number) item).doubleValue();
                        }
                    }

                    if (!grandTotal.containsKey(dataField)) {
                        grandTotal.put(dataField, grandTotalForColumn);
                    } else {
                        grandTotal.put(dataField, grandTotal.get(dataField) + grandTotalForColumn);
                    }

                }
                tr.value.add(new GrandTotalValueRenderCell(grandTotalForColumn, false));
            }
        }
        if (!columnFields.isEmpty() && pivotModel.isShowGrandTotalForRow()) {
            for (PivotField dataField : dataFields) {
                if (dataField.getFieldCalculation() != null) {
                    double grandTotalValue = PivotUtils
                            .getSummary(dataField, Collections.emptyList(), new FieldValueProvider() {
                                @Override
                                public Object getFieldValue(PivotField field) {
                                    // If the field is not in the regular
                                    // data, we can not return a sum of it
                                    if (!grandTotal.containsKey(field))
                                        return 0;
                                    return grandTotal.get(field);
                                }
                            }).doubleValue();

                    tr.value.add(new GrandTotalValueRenderCell(grandTotalValue, true));
                } else {
                    tr.value.add(new GrandTotalValueRenderCell(grandTotal.get(dataField), true));
                }
            }
        }
    }
}

From source file:ro.nextreports.server.web.pivot.PivotTable.java

License:Apache License

public PivotTable(String id, PivotModel pivotModel) {
    super(id);//www .  j  a  v  a 2  s .  c  om

    List<PivotField> columnFields = pivotModel.getFields(PivotField.Area.COLUMN);
    List<PivotField> rowFields = pivotModel.getFields(PivotField.Area.ROW);
    List<PivotField> dataFields = pivotModel.getFields(PivotField.Area.DATA);

    List<List<Object>> rowKeys = pivotModel.getRowKeys();
    List<List<Object>> columnKeys = pivotModel.getColumnKeys();

    // rendering header
    RepeatingView column = new RepeatingView("header");
    add(column);
    int headerRowCount = columnFields.size();
    if (headerRowCount == 0) {
        headerRowCount = 1;
    }
    if (dataFields.size() > 1) {
        // add an extra row (the row with data field titles)
        headerRowCount++;
    }

    Component tmp = null;
    for (int i = 0; i < headerRowCount; i++) {
        // rendering row header (first columns)
        WebMarkupContainer tr = new WebMarkupContainer(column.newChildId());
        column.add(tr);
        RepeatingView rowHeader = new RepeatingView("rowHeader");
        tr.add(rowHeader);

        for (int j = 0; j < rowFields.size(); j++) {
            if (i < headerRowCount - 1) {
                // rendering an empty cell
                tmp = new Label(rowHeader.newChildId(), "");
                tmp.add(AttributeModifier.append("class", "empty"));
                rowHeader.add(tmp);
            } else {
                // rendering row field
                tmp = createTitleLabel(rowHeader.newChildId(), rowFields.get(j));
                rowHeader.add(tmp);
            }
        }

        // rendering column keys
        RepeatingView value = new RepeatingView("value");
        tr.add(value);
        for (List<Object> columnKey : columnKeys) {
            if (i < columnFields.size()) {
                PivotField columnField = columnFields.get(i);
                tmp = createValueLabel(value.newChildId(), columnKey.get(i), columnField);
                tmp.add(AttributeModifier.append("colspan", dataFields.size()));
                value.add(tmp);
            } else {
                for (PivotField dataField : dataFields) {
                    tmp = createTitleLabel(value.newChildId(), dataField);
                    value.add(tmp);
                }
            }
        }

        // rendering grand total column
        RepeatingView grandTotalColumn = new RepeatingView("grandTotalColumn");
        if (i == 0) {
            tmp = new Label(grandTotalColumn.newChildId(), getString("pivot.grandTotal"));
            tmp.add(AttributeModifier.append("colspan", dataFields.size()));
            grandTotalColumn.add(tmp);
        } else if (i < columnFields.size()) {
            tmp = new WebMarkupContainer(grandTotalColumn.newChildId());
            tmp.add(AttributeModifier.append("colspan", dataFields.size()));
            tmp.add(AttributeModifier.append("class", "empty"));
            grandTotalColumn.add(tmp);
        } else {
            for (PivotField dataField : dataFields) {
                tmp = createTitleLabel(value.newChildId(), dataField);
                grandTotalColumn.add(tmp);
            }
        }
        grandTotalColumn.setVisible(!columnFields.isEmpty() && pivotModel.isShowGrandTotalForRow());
        tr.add(grandTotalColumn);
    }

    // rendering rows
    RepeatingView row = new RepeatingView("row");
    add(row);
    for (List<Object> rowKey : rowKeys) {
        WebMarkupContainer tr = new WebMarkupContainer(row.newChildId());
        row.add(tr);
        RepeatingView rowHeader = new RepeatingView("rowHeader");
        tr.add(rowHeader);

        for (int k = 0; k < rowKey.size(); k++) {
            PivotField rowField = rowFields.get(k);
            tmp = createValueLabel(rowHeader.newChildId(), rowKey.get(k), rowField);
            rowHeader.add(tmp);
        }

        RepeatingView value = new RepeatingView("value");
        tr.add(value);

        for (List<Object> columnKey : columnKeys) {
            for (PivotField dataField : dataFields) {
                Number cellValue = (Number) pivotModel.getValueAt(dataField, rowKey, columnKey);
                tmp = createValueLabel(value.newChildId(), cellValue, dataField);
                value.add(tmp);
            }
        }

        if (!columnFields.isEmpty() && pivotModel.isShowGrandTotalForRow()) {
            MultiMap<PivotField, Object> values = new MultiMap<PivotField, Object>();
            for (List<Object> columnKey : columnKeys) {
                for (PivotField dataField : dataFields) {
                    values.addValue(dataField, pivotModel.getValueAt(dataField, rowKey, columnKey));
                }
            }
            for (PivotField dataField : dataFields) {
                double grandTotalForRow = 0.0d;

                List<Object> items = values.get(dataField);
                for (Object item : items) {
                    if (item != null) {
                        grandTotalForRow += ((Number) item).doubleValue();
                    }
                }

                tmp = createGrandTotalLabel(value.newChildId(), grandTotalForRow, true);
                tmp.add(AttributeModifier.append("class", "grand-total"));
                value.add(tmp);
            }
        }
    }

    WebMarkupContainer grandTotalRow = new WebMarkupContainer("grandTotalRow");
    grandTotalRow.setVisible(!rowFields.isEmpty() && pivotModel.isShowGrandTotalForColumn());
    add(grandTotalRow);

    Label grandTotalRowHeader = new Label("rowHeader", getString("pivot.grandTotal"));
    grandTotalRowHeader.add(AttributeModifier.append("colspan", rowFields.size()));
    grandTotalRow.add(grandTotalRowHeader);

    RepeatingView value = new RepeatingView("value");
    grandTotalRow.add(value);
    Map<PivotField, Double> grandTotal = new HashMap<PivotField, Double>();
    for (List<Object> columnKey : columnKeys) {
        MultiMap<PivotField, Object> values = new MultiMap<PivotField, Object>();
        for (List<Object> rowKey : rowKeys) {
            for (PivotField dataField : dataFields) {
                values.addValue(dataField, pivotModel.getValueAt(dataField, rowKey, columnKey));
            }
        }
        for (PivotField dataField : dataFields) {
            double grandTotalForColumn = 0.0d;

            List<Object> items = values.get(dataField);
            for (Object item : items) {
                if (item != null) {
                    grandTotalForColumn += ((Number) item).doubleValue();
                }
            }

            if (!grandTotal.containsKey(dataField)) {
                grandTotal.put(dataField, grandTotalForColumn);
            } else {
                grandTotal.put(dataField, grandTotal.get(dataField) + grandTotalForColumn);
            }
            tmp = createGrandTotalLabel(value.newChildId(), grandTotalForColumn, false);
            value.add(tmp);
        }
    }
    if (!columnFields.isEmpty() && pivotModel.isShowGrandTotalForRow()) {
        for (PivotField dataField : dataFields) {
            tmp = createGrandTotalLabel(value.newChildId(), grandTotal.get(dataField), true);
            value.add(tmp);
        }
    }
}

From source file:ro.nextreports.server.web.pivot.PivotUtil.java

License:Apache License

public static TableData getTableData(PivotModel pivotModel) {

    List<List<Object>> data = new ArrayList<List<Object>>();

    List<PivotField> columnFields = pivotModel.getFields(PivotField.Area.COLUMN);
    List<PivotField> rowFields = pivotModel.getFields(PivotField.Area.ROW);
    List<PivotField> dataFields = pivotModel.getFields(PivotField.Area.DATA);

    List<List<Object>> rowKeys = pivotModel.getRowKeys();
    List<List<Object>> columnKeys = pivotModel.getColumnKeys();

    int headerRowCount = columnFields.size();
    if (headerRowCount == 0) {
        headerRowCount = 1;/* w  ww . ja  v a  2 s .c  o  m*/
    }
    if (dataFields.size() > 1) {
        // add an extra row (the row with data field titles)
        headerRowCount++;
    }

    for (int i = 0; i < headerRowCount; i++) {

        List<Object> row = new ArrayList<Object>();
        data.add(row);

        for (int j = 0; j < rowFields.size(); j++) {
            if (i < headerRowCount - 1) {
                // empty cell
                row.add("");
            } else {
                row.add(rowFields.get(j).getName());
            }
        }

        // column keys         
        for (List<Object> columnKey : columnKeys) {
            if (i < columnFields.size()) {
                row.add(columnKey.get(i));
                for (int k = 0; k < dataFields.size() - 1; k++) {
                    row.add("");
                }
            } else {
                for (PivotField dataField : dataFields) {
                    row.add(dataField.getTitle());
                }
            }
        }

        // grand total column
        if (!columnFields.isEmpty() && pivotModel.isShowGrandTotalForRow()) {
            if (i == 0) {
                row.add(new StringResourceModel("pivot.grandTotal", null).getString());
                for (int k = 0; k < dataFields.size() - 1; k++) {
                    row.add("");
                }
            } else if (i < columnFields.size()) {
                for (int k = 0; k < dataFields.size() - 1; k++) {
                    row.add("");
                }
            } else {
                for (PivotField dataField : dataFields) {
                    row.add(dataField.getName());
                }
            }
        }
    }

    // rows      
    for (List<Object> rowKey : rowKeys) {
        List<Object> row = new ArrayList<Object>();
        data.add(row);
        for (int k = 0; k < rowKey.size(); k++) {
            row.add(convert(rowKey.get(k)));
        }

        for (List<Object> columnKey : columnKeys) {
            for (PivotField dataField : dataFields) {
                Number cellValue = (Number) pivotModel.getValueAt(dataField, rowKey, columnKey);
                row.add(convert(cellValue));
            }
        }

        if (!columnFields.isEmpty() && pivotModel.isShowGrandTotalForRow()) {
            MultiMap<PivotField, Object> values = new MultiMap<PivotField, Object>();
            for (List<Object> columnKey : columnKeys) {
                for (PivotField dataField : dataFields) {
                    values.addValue(dataField, pivotModel.getValueAt(dataField, rowKey, columnKey));
                }
            }
            for (PivotField dataField : dataFields) {
                double grandTotalForRow = PivotUtils.getSummary(dataField, values.get(dataField)).doubleValue();
                row.add(convert(grandTotalForRow));
            }
        }
    }

    if (!rowFields.isEmpty() && pivotModel.isShowGrandTotalForColumn()) {
        List<Object> row = new ArrayList<Object>();
        data.add(row);

        row.add(new StringResourceModel("pivot.grandTotal", null).getString());
        for (int k = 0; k < rowFields.size() - 1; k++) {
            row.add("");
        }

        Map<PivotField, Double> grandTotal = new HashMap<PivotField, Double>();
        for (List<Object> columnKey : columnKeys) {
            MultiMap<PivotField, Object> values = new MultiMap<PivotField, Object>();
            for (List<Object> rowKey : rowKeys) {
                for (PivotField dataField : dataFields) {
                    values.addValue(dataField, pivotModel.getValueAt(dataField, rowKey, columnKey));
                }
            }
            for (PivotField dataField : dataFields) {
                double grandTotalForColumn = PivotUtils.getSummary(dataField, values.get(dataField))
                        .doubleValue();
                if (!grandTotal.containsKey(dataField)) {
                    grandTotal.put(dataField, grandTotalForColumn);
                } else {
                    grandTotal.put(dataField, grandTotal.get(dataField) + grandTotalForColumn);
                }
                row.add(convert(grandTotalForColumn));
            }
        }

        if (!columnFields.isEmpty() && pivotModel.isShowGrandTotalForRow()) {
            for (PivotField dataField : dataFields) {
                row.add(convert(grandTotal.get(dataField)));
            }
        }
    }

    return new TableData(null, data, null);
}