~ubuntu-branches/ubuntu/vivid/apgdiff/vivid

« back to all changes in this revision

Viewing changes to src/main/java/cz/startnet/utils/pgdiff/parsers/AlterViewParser.java

  • Committer: Bazaar Package Importer
  • Author(s): Christoph Berg
  • Date: 2010-10-02 19:35:17 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20101002193517-9wesve8sksxcktkc
Tags: 2.2-1
* New upstream version.
* Update homepage location.
* Finally enable test suite, yay!

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
 * Copyright 2006 StartNet s.r.o.
 
3
 *
 
4
 * Distributed under MIT license
 
5
 */
 
6
package cz.startnet.utils.pgdiff.parsers;
 
7
 
 
8
import cz.startnet.utils.pgdiff.schema.PgDatabase;
 
9
import cz.startnet.utils.pgdiff.schema.PgView;
 
10
 
 
11
/**
 
12
 * Parses ALTER VIEW statements.
 
13
 * 
 
14
 * @author fordfrog
 
15
 */
 
16
public class AlterViewParser {
 
17
 
 
18
    /**
 
19
     * Creates new instance of AlterViewParser.
 
20
     */
 
21
    private AlterViewParser() {
 
22
    }
 
23
 
 
24
    /**
 
25
     * Parses ALTER VIEW statement.
 
26
     * 
 
27
     * @param database database
 
28
     * @param statement ALTER VIEW statement
 
29
     */
 
30
    public static void parse(final PgDatabase database,
 
31
            final String statement) {
 
32
        final Parser parser = new Parser(statement);
 
33
        parser.expect("ALTER", "VIEW");
 
34
 
 
35
        final String viewName = parser.parseIdentifier();
 
36
        final String schemaName = ParserUtils.getSchemaName(viewName, database);
 
37
        final String objectName = ParserUtils.getObjectName(viewName);
 
38
 
 
39
        final PgView view = database.getSchema(schemaName).getView(objectName);
 
40
 
 
41
        while (!parser.expectOptional(";")) {
 
42
            if (parser.expectOptional("ALTER")) {
 
43
                parser.expectOptional("COLUMN");
 
44
 
 
45
                final String columnName =
 
46
                        ParserUtils.getObjectName(parser.parseIdentifier());
 
47
 
 
48
                if (parser.expectOptional("SET", "DEFAULT")) {
 
49
                    final String expression = parser.getExpression();
 
50
                    view.addColumnDefaultValue(columnName, expression);
 
51
                } else if (parser.expectOptional("DROP", "DEFAULT")) {
 
52
                    view.removeColumnDefaultValue(columnName);
 
53
                } else {
 
54
                    parser.throwUnsupportedCommand();
 
55
                }
 
56
            } else if (parser.expectOptional("OWNER", "TO")) {
 
57
                // we do not support OWNER TO so just consume the output
 
58
                parser.getExpression();
 
59
            } else {
 
60
                parser.throwUnsupportedCommand();
 
61
            }
 
62
        }
 
63
    }
 
64
}