2
* $Id: CreateSchemaParser.java 81 2007-09-01 20:26:38Z fordfrog $
4
package cz.startnet.utils.pgdiff.parsers;
6
import cz.startnet.utils.pgdiff.schema.PgDatabase;
7
import cz.startnet.utils.pgdiff.schema.PgSchema;
9
import java.util.regex.Matcher;
10
import java.util.regex.Pattern;
14
* Parses CREATE SCHEMA commands.
17
* @version $Id: CreateSchemaParser.java 81 2007-09-01 20:26:38Z fordfrog $
19
public class CreateSchemaParser {
21
* Pattern for parsing CREATE SCHEMA ... AUTHORIZATION ...
23
private static final Pattern PATTERN_CREATE_SCHEMA =
25
"^CREATE[\\s]+SCHEMA[\\s]+([^\\s;]+)"
26
+ "(?:[\\s]+AUTHORIZATION[\\s]+([^\\s;]+))?;$",
27
Pattern.CASE_INSENSITIVE);
30
* Pattern for parsing CREATE SCHEMA AUTHORIZATION ...
32
private static final Pattern PATTERN_CREATE_SCHEMA_AUTHORIZATION =
34
"^CREATE[\\s]+SCHEMA[\\s]+AUTHORIZATION[\\s]+([^\\s;]+);$",
35
Pattern.CASE_INSENSITIVE);
38
* Creates a new CreateSchemaParser object.
40
private CreateSchemaParser() {
45
* Parses CREATE SCHEMA command.
47
* @param database database
48
* @param command CREATE SCHEMA command
50
* @throws ParserException Thrown if problem occured while parsing the
53
public static void parse(final PgDatabase database, final String command) {
54
final Matcher matcher = PATTERN_CREATE_SCHEMA.matcher(command);
56
if (matcher.matches()) {
57
final PgSchema schema = new PgSchema(matcher.group(1));
58
final String authorization = matcher.group(2);
60
if (authorization != null) {
61
schema.setAuthorization(authorization);
64
database.addSchema(schema);
66
final Matcher matcher2 =
67
PATTERN_CREATE_SCHEMA_AUTHORIZATION.matcher(command);
69
if (matcher2.matches()) {
70
final PgSchema schema = new PgSchema(matcher.group(1));
71
schema.setAuthorization(schema.getName());
72
database.addSchema(schema);
74
throw new ParserException(
75
ParserException.CANNOT_PARSE_COMMAND + command);