/* * Copyright 2007-2008 Amazon Technologies, 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://aws.amazon.com/apache2.0 * * This file 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.amazonaws.mturk.addon; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class HITDataBuffer extends AbstractHITDataOutput implements HITDataOutput, HITDataInput { protected List<String[]> rows; public HITDataBuffer() {} public synchronized void setRows( List<String[]> rows ) { this.rows = rows; setFieldNames( this.rows.get( 0 )); } public synchronized void writeLine( String[] fieldValues ) throws IOException { if( rows == null ) { rows = new ArrayList<String[]>(); } rows.add( fieldValues ); } public void writeValues( Map< String, String > values ) throws IOException { writeLine(getValuesByFieldName(values)); } public synchronized int getNumRows() { return (this.rows == null) ? 0 : this.rows.size(); } public Map< String, String > getRowAsMap( int rowNum ) { String[] rowValues = this.getRowValues(rowNum); if (this.getFieldNamesSize() == 0 || rowValues == null || rowValues.length == 0) { return null; } HashMap<String,String> rowValueMap = new HashMap<String,String>(); int index = 0; for (String fieldName : this.getFieldNames()) { rowValueMap.put(fieldName, rowValues[index++]); } return rowValueMap; } public synchronized String[] getRowValues( int rowNum ) { return this.rows.get( rowNum ); } }