#ifndef  META_QUALITY_2007_07_11
#define  META_QUALITY_2007_07_11
/**
      @file MetaQuality.h
      @author Brian Magill
      @date 7/11/2007

	$Date:$
    $Revision:$

    @copyright
     (©) Copyright 2006 by GATS Inc.
     11864 Canon Blvd., Suite 101, Newport News, VA 23606

     All Rights Reserved. No part of this software or publication may be
     reproduced, stored in a retrieval system, or transmitted, in any form
     or by any means, electronic, mechanical, photocopying, recording, or
     otherwise without the prior written permission of GATS Inc.

 
      @brief Class returns a vector of data associated with a given quality parameter 
      
      
*/
//----------------------------------------------------------------------
//
#include<string>
#include<vector>
#include "Event.h"
#include "GATS_DB.h"
#include "GATS_DB_Exception.h"
#include "GATS_Utilities.hpp"

class MetaQuality
{
private:

    Event *inEvent;
    gatsDBpp::GATS_DB *dbConn;        
    std::string metaTable;      // table of meta data associating a Level 1 table with an Event oject array 

public:

    MetaQuality():inEvent(0), dbConn(0), metaTable("")  { };     

    MetaQuality(Event &in, gatsDBpp::GATS_DB &conn, std::string name):
                            inEvent(&in), dbConn(&conn), metaTable(name)  { };     

    MetaQuality(MetaQuality const&rhs):inEvent(rhs.inEvent), 
                    dbConn(rhs.dbConn), metaTable(rhs.metaTable){ };     

    MetaQuality& operator = (MetaQuality const& rhs )
        {
        if (this == &rhs)
                return *this;

        inEvent = rhs.inEvent;
        dbConn = rhs.dbConn;
        metaTable = rhs.metaTable;
        
        return *this;        
        };
                             
    ~MetaQuality() { };     

    bool TableExists(std::string tableName) const;

    bool EntryExists(std::string tableName, std::string parameter) const;

    std::string getEntryName(std::string tableName, std::string parameter) const;

    std::vector<int> getData(std::string tableName, std::string parameter) const;

    std::vector<std::string> getParameterList(std::string tableName) const;

    std::vector<std::string> getTableList() const;

};

#endif