~drizzle-trunk/drizzle/development

1643.3.1 by Brian Aker
Move schema listing logic out.
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 *
4
 *  Copyright (C) 2010 Brian Aker
5
 *
6
 *  This program is free software; you can redistribute it and/or modify
7
 *  it under the terms of the GNU General Public License as published by
8
 *  the Free Software Foundation; either version 2 of the License, or
9
 *  (at your option) any later version.
10
 *
11
 *  This program is distributed in the hope that it will be useful,
12
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 *  GNU General Public License for more details.
15
 *
16
 *  You should have received a copy of the GNU General Public License
17
 *  along with this program; if not, write to the Free Software
18
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
 */
20
2173.2.1 by Monty Taylor
Fixes incorrect usage of include
21
#include <config.h>
1643.3.1 by Brian Aker
Move schema listing logic out.
22
2154.2.17 by Brian Aker
Additional removal of session
23
#include <drizzled/generator.h>
24
#include <drizzled/session.h>
1643.3.1 by Brian Aker
Move schema listing logic out.
25
26
using namespace std;
27
28
namespace drizzled
29
{
1643.3.4 by Brian Aker
Moved generators out of trunk of server.
30
namespace generator
31
{
1643.3.1 by Brian Aker
Move schema listing logic out.
32
1643.3.4 by Brian Aker
Moved generators out of trunk of server.
33
Schema::Schema(Session &arg) :
1643.3.1 by Brian Aker
Move schema listing logic out.
34
  session(arg)
35
  {
1663.1.4 by Brian Aker
Removed identifier bit
36
    plugin::StorageEngine::getIdentifiers(session, schema_names);
1643.3.13 by Brian Aker
Remove sort() and add in DEBUG mode to randomize the results of generators.
37
#if defined(DEBUG)
38
    random_shuffle(schema_names.begin(), schema_names.end());
39
#endif
1643.3.1 by Brian Aker
Move schema listing logic out.
40
    schema_iterator= schema_names.begin();
41
  }
42
2154.2.12 by Brian Aker
Remove another instance of using session.
43
Schema::operator const drizzled::message::schema::shared_ptr()
44
{
45
  while (schema_iterator != schema_names.end())
46
  {
47
    identifier::Schema schema_identifier(*schema_iterator);
48
2170.1.1 by Brian Aker
Merge with trunk.
49
    if (not plugin::Authorization::isAuthorized(*session.user(), schema_identifier, false))
2154.2.12 by Brian Aker
Remove another instance of using session.
50
    {
51
      schema_iterator++;
52
      continue;
53
    }
54
2170.1.1 by Brian Aker
Merge with trunk.
55
    schema= plugin::StorageEngine::getSchemaDefinition(schema_identifier);
2154.2.12 by Brian Aker
Remove another instance of using session.
56
    schema_iterator++;
57
2170.1.1 by Brian Aker
Merge with trunk.
58
    if (schema)
2154.2.12 by Brian Aker
Remove another instance of using session.
59
      return schema;
60
  }
61
62
  return message::schema::shared_ptr();
63
}
64
65
Schema::operator const drizzled::identifier::Schema*()
66
{
67
  while (schema_iterator != schema_names.end())
68
  {
69
    const drizzled::identifier::Schema *_ptr= &(*schema_iterator);
70
    schema_iterator++;
71
2170.1.1 by Brian Aker
Merge with trunk.
72
    if (not plugin::Authorization::isAuthorized(*session.user(), *_ptr, false))
2154.2.12 by Brian Aker
Remove another instance of using session.
73
      continue;
74
75
    return _ptr;
76
  }
77
78
  return NULL;
79
}
80
1643.3.4 by Brian Aker
Moved generators out of trunk of server.
81
} /* namespace generator */
1643.3.1 by Brian Aker
Move schema listing logic out.
82
} /* namespace drizzled */