/**
 * Copyright 2012 Twitter, 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 parquet.column;

/**
 * Container which can construct writers for multiple columns to be stored
 * together.
 *
 * @author Julien Le Dem
 */
public interface ColumnWriteStore {
  /**
   * @param path the column for which to create a writer
   * @return the column writer for the given column
   */
  abstract public ColumnWriter getColumnWriter(ColumnDescriptor path);

  /**
   * when we are done writing to flush to the underlying storage
   */
  abstract public void flush();

}
