1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
* Copyright (C) 2009 Sun Microsystems, Inc.
4
* Copyright (C) 2009 Sun Microsystems
6
6
* This program is free software; you can redistribute it and/or modify
7
7
* it under the terms of the GNU General Public License as published by
29
29
This will replace Table_ident.
34
#ifndef DRIZZLED_IDENTIFIER_SCHEMA_H
35
#define DRIZZLED_IDENTIFIER_SCHEMA_H
32
#ifndef DRIZZLED_SCHEMA_IDENTIFIER_H
33
#define DRIZZLED_SCHEMA_IDENTIFIER_H
37
35
#include <drizzled/enum.h>
38
#include <drizzled/definitions.h>
39
#include <drizzled/message/table.pb.h>
40
#include <drizzled/catalog/local.h>
36
#include "drizzled/definitions.h"
37
#include "drizzled/message/table.pb.h"
41
38
#include <string.h>
43
40
#include <assert.h>
48
45
#include <functional>
49
46
#include <iostream>
51
#include <boost/algorithm/string.hpp>
53
#include <drizzled/visibility.h>
55
48
namespace drizzled {
56
namespace identifier {
58
class DRIZZLED_API Schema : public Identifier
50
class SchemaIdentifier
61
53
std::string db_path;
64
typedef std::vector <Schema> vector;
65
typedef const Schema& const_reference;
67
Schema(const std::string &db_arg);
56
// @note this should be changed to protected once Session contains an
57
// identifier for current db.
60
const std::string &getLower()
66
SchemaIdentifier(const std::string &db_arg) :
70
std::transform(lower_db.begin(), lower_db.end(),
71
lower_db.begin(), ::tolower);
74
virtual ~SchemaIdentifier()
72
virtual void getSQLPath(std::string &arg) const;
74
const std::string &getPath() const;
77
virtual const std::string &getSQLPath();
78
const std::string &getPath();
76
80
const std::string &getSchemaName() const
81
const std::string &getCatalogName() const;
83
virtual bool isValid() const;
85
inline virtual bool isSystem() const
86
bool compare(std::string arg) const;
88
friend bool operator<(const SchemaIdentifier &left, const SchemaIdentifier &right)
90
return left.lower_db < right.lower_db;
93
friend std::ostream& operator<<(std::ostream& output,
94
SchemaIdentifier &identifier)
96
output << "SchemaIdentifier:(";
97
output << identifier.db;
99
output << identifier.getPath();
102
return output; // for multiple << operators.
105
friend bool operator==(const SchemaIdentifier &left,
106
const SchemaIdentifier &right)
108
if (left.lower_db == right.lower_db)
90
bool compare(const std::string &arg) const;
91
bool compare(Schema::const_reference) const;
93
friend bool operator<(Schema::const_reference left, Schema::const_reference right)
95
return boost::algorithm::to_upper_copy(left.getSchemaName()) < boost::algorithm::to_upper_copy(right.getSchemaName());
98
friend bool operator==(Schema::const_reference left,
99
Schema::const_reference right)
101
return boost::iequals(left.getSchemaName(), right.getSchemaName());
105
std::ostream& operator<<(std::ostream& output, const Schema&identifier);
108
} /* namespace identifier */
118
typedef std::list <SchemaIdentifier> SchemaIdentifierList;
109
120
} /* namespace drizzled */
111
#endif /* DRIZZLED_IDENTIFIER_SCHEMA_H */
122
#endif /* DRIZZLED_SCHEMA_IDENTIFIER_H */