List of usage examples for org.apache.wicket.util.collections MultiMap addValue
public void addValue(final K key, final V value)
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); }