2
* Copyright 2006 StartNet s.r.o.
4
* Distributed under MIT license
1
6
package cz.startnet.utils.pgdiff.parsers;
3
8
import cz.startnet.utils.pgdiff.schema.PgDatabase;
4
9
import cz.startnet.utils.pgdiff.schema.PgSchema;
6
import java.util.regex.Matcher;
7
import java.util.regex.Pattern;
10
* Parses CREATE SCHEMA commands.
12
* Parses CREATE SCHEMA statements.
14
16
public class CreateSchemaParser {
17
* Pattern for parsing CREATE SCHEMA ... AUTHORIZATION ...
19
private static final Pattern PATTERN_CREATE_SCHEMA = Pattern.compile(
20
"^CREATE[\\s]+SCHEMA[\\s]+([^\\s;]+)"
21
+ "(?:[\\s]+AUTHORIZATION[\\s]+([^\\s;]+))?;$",
22
Pattern.CASE_INSENSITIVE);
24
* Pattern for parsing CREATE SCHEMA AUTHORIZATION ...
26
private static final Pattern PATTERN_CREATE_SCHEMA_AUTHORIZATION =
28
"^CREATE[\\s]+SCHEMA[\\s]+AUTHORIZATION[\\s]+([^\\s;]+);$",
29
Pattern.CASE_INSENSITIVE);
32
19
* Creates a new CreateSchemaParser object.
34
21
private CreateSchemaParser() {
39
* Parses CREATE SCHEMA command.
25
* Parses CREATE SCHEMA statement.
41
27
* @param database database
42
* @param command CREATE SCHEMA command
44
* @throws ParserException Thrown if problem occured while parsing the
28
* @param statement CREATE SCHEMA statement
47
public static void parse(final PgDatabase database, final String command) {
48
final Matcher matcher = PATTERN_CREATE_SCHEMA.matcher(command);
50
if (matcher.matches()) {
51
final PgSchema schema = new PgSchema(matcher.group(1));
52
final String authorization = matcher.group(2);
54
if (authorization != null) {
55
schema.setAuthorization(authorization);
30
public static void parse(final PgDatabase database,
31
final String statement) {
32
final Parser parser = new Parser(statement);
33
parser.expect("CREATE", "SCHEMA");
35
if (parser.expectOptional("AUTHORIZATION")) {
36
final PgSchema schema = new PgSchema(
37
ParserUtils.getObjectName(parser.parseIdentifier()));
38
database.addSchema(schema);
39
schema.setAuthorization(schema.getName());
41
final String definition = parser.getRest();
43
if (definition != null && !definition.isEmpty()) {
44
schema.setDefinition(definition);
58
database.addSchema(schema);
60
final Matcher matcher2 =
61
PATTERN_CREATE_SCHEMA_AUTHORIZATION.matcher(command);
63
if (matcher2.matches()) {
64
final PgSchema schema = new PgSchema(matcher.group(1));
65
schema.setAuthorization(schema.getName());
66
database.addSchema(schema);
68
throw new ParserException(
69
ParserException.CANNOT_PARSE_COMMAND + command);
47
final PgSchema schema = new PgSchema(
48
ParserUtils.getObjectName(parser.parseIdentifier()));
49
database.addSchema(schema);
51
if (parser.expectOptional("AUTHORIZATION")) {
52
schema.setAuthorization(
53
ParserUtils.getObjectName(parser.parseIdentifier()));
56
final String definition = parser.getRest();
58
if (definition != null && !definition.isEmpty()) {
59
schema.setDefinition(definition);