blob: c1db6ea1a2228139f823af5d9c99537ca2c20805 [file] [log] [blame]
//*****************************************************************************
// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you 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.
//
//// @@@ END COPYRIGHT @@@
//*****************************************************************************
#ifndef PRIVMGR_COMPONENTS_H
#define PRIVMGR_COMPONENTS_H
#include "PrivMgrMD.h"
#include "PrivMgrDefs.h"
#include <string>
class ComDiagsArea;
class PrivMgrMDTable;
// *****************************************************************************
// *
// * File: PrivMgrComponents.h
// * Description: This file contains classes that access and maintain the
// * contents of the Privilege Manager Components Table
// *
// * Language: C++
// *
// *****************************************************************************
// *****************************************************************************
// * Class: PrivMgrComponents
// * Description: This class represents the component table which contains:
// * - fully qualified table name
// *****************************************************************************
class PrivMgrComponents : public PrivMgr
{
public:
// -------------------------------------------------------------------
// Constructors and destructors:
// -------------------------------------------------------------------
PrivMgrComponents(
const std::string & metadataLocation,
ComDiagsArea * pDiags = NULL);
PrivMgrComponents(const PrivMgrComponents &other);
virtual ~PrivMgrComponents();
// -------------------------------------------------------------------
// Public functions:
// -------------------------------------------------------------------
void clear();
PrivStatus describeComponents(
const std::string & componentName,
std::string & componentUIDString,
int64_t & componentUID,
std::vector<std::string> & outlines);
PrivStatus dropAll();
bool exists(const std::string & componentName);
PrivStatus fetchByName(
const std::string & componentName,
std::string & componentUIDString,
int64_t & componentUID,
bool & isSystem,
std::string & componentDescription);
//TODO: Not currently implemented.
PrivStatus fetchByUID(
int64_t componentUID,
std::string & componentName,
bool & isSystem,
std::string & componentDescription);
int64_t getCount();
PrivStatus registerComponent(
const std::string &componentName,
const bool isSystem,
const std::string & componentDescription,
const bool existsErrorOK = false);
PrivStatus registerComponentInternal(
const std::string & componentName,
const int64_t componentUID,
const bool isSystem,
const std::string & componentDescription);
PrivStatus unregisterComponent(
const std::string &componentName,
PrivDropBehavior dropBehavior);
private:
// -------------------------------------------------------------------
// Private functions:
// -------------------------------------------------------------------
PrivMgrComponents();
int64_t getUniqueID();
// -------------------------------------------------------------------
// Data Members:
// -------------------------------------------------------------------
std::string fullTableName_;
PrivMgrMDTable & myTable_;
};
#endif // PRIVMGR_COMPONENTS_H