/* * Copyright 2015 Collective, Inc. * * Licensed 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 com.collective.celos.ci.testing.structure.fixobject; import com.collective.celos.ValueObject; import java.util.*; /** * Created by akonopko on 22.01.15. */ public class FixTable extends FixObject { private final List<String> columnNames; private final List<FixRow> rows; public FixTable(List<String> columnNames, List<FixRow> rows) { this.columnNames = columnNames; this.rows = rows; } public List<String> getColumnNames() { return Collections.unmodifiableList(columnNames); } public List<FixRow> getRows() { return Collections.unmodifiableList(rows); } public static class FixRow extends ValueObject { private final Map<String, String> cells; public FixRow(Map<String, String> cells) { for (Map.Entry<String, String> cell: cells.entrySet()) { if (cell.getValue() == null || cell.getKey() == null) { throw new IllegalStateException("Cannot create FixRow out of Map that contains nulls"); } } this.cells = new TreeMap<>(cells); } public Map<String, String> getCells() { return Collections.unmodifiableMap(cells); } // Utility to get columns in the order they are declared in a table public List<String> getOrderedColumns(List<String> columnNames) { List<String> values = new ArrayList<String>(columnNames.size()); for (String name : columnNames) { values.add(cells.get(name)); } return values; } } }