~ubuntu-branches/ubuntu/wily/apgdiff/wily

« back to all changes in this revision

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

  • Committer: Bazaar Package Importer
  • Author(s): Christoph Berg
  • Date: 2009-12-02 11:11:33 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20091202111133-k5wrh3zb2pzmbv8c
Tags: 1.4-1
* New upstream version. (Without changelog, I am afraid.)
* Test suite still not enabled as it needs network access. (The junit
  version in Debian needs upgrading.)
* Optimize rules files a bit so debhelper doesn't clean twice, and quilt's
  patch target doesn't prevent build-stamp from working.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * $Id: PgDiffTriggers.java 80 2007-09-01 20:25:45Z fordfrog $
3
 
 */
4
1
package cz.startnet.utils.pgdiff;
5
2
 
6
3
import cz.startnet.utils.pgdiff.schema.PgSchema;
12
9
import java.util.ArrayList;
13
10
import java.util.List;
14
11
 
15
 
 
16
12
/**
17
13
 * Diffs triggers.
18
14
 *
19
15
 * @author fordfrog
20
 
 * @version $Id: PgDiffTriggers.java 80 2007-09-01 20:25:45Z fordfrog $
21
16
 */
22
17
public class PgDiffTriggers {
 
18
 
23
19
    /**
24
20
     * Creates a new instance of PgDiffTriggers.
25
21
     */
28
24
    }
29
25
 
30
26
    /**
31
 
     * Outputs commands for differences in triggers.
 
27
     * Outputs commands for creation of new triggers.
32
28
     *
33
29
     * @param writer writer the output should be written to
34
30
     * @param arguments object containing arguments settings
35
31
     * @param oldSchema original schema
36
32
     * @param newSchema new schema
37
33
     */
38
 
    public static void diffTriggers(
39
 
        final PrintWriter writer,
40
 
        final PgDiffArguments arguments,
41
 
        final PgSchema oldSchema,
42
 
        final PgSchema newSchema) {
43
 
        for (PgTable newTable : newSchema.getTables()) {
 
34
    public static void createTriggers(final PrintWriter writer,
 
35
            final PgDiffArguments arguments, final PgSchema oldSchema,
 
36
            final PgSchema newSchema) {
 
37
        for (final PgTable newTable : newSchema.getTables()) {
44
38
            final PgTable oldTable;
45
39
 
46
40
            if (oldSchema == null) {
49
43
                oldTable = oldSchema.getTable(newTable.getName());
50
44
            }
51
45
 
52
 
            // Drop triggers that no more exist or are modified
53
 
            for (PgTrigger trigger : getDropTriggers(oldTable, newTable)) {
54
 
                writer.println();
55
 
                writer.println(trigger.getDropSQL(arguments.isQuoteNames()));
56
 
            }
57
 
 
58
46
            // Add new triggers
59
 
            for (PgTrigger trigger : getNewTriggers(oldTable, newTable)) {
 
47
            for (final PgTrigger trigger : getNewTriggers(oldTable, newTable)) {
60
48
                writer.println();
61
49
                writer.println(
62
50
                        trigger.getCreationSQL(arguments.isQuoteNames()));
65
53
    }
66
54
 
67
55
    /**
 
56
     * Outputs commands for dropping triggers.
 
57
     *
 
58
     * @param writer writer the output should be written to
 
59
     * @param arguments object containing arguments settings
 
60
     * @param oldSchema original schema
 
61
     * @param newSchema new schema
 
62
     */
 
63
    public static void dropTriggers(final PrintWriter writer,
 
64
            final PgDiffArguments arguments, final PgSchema oldSchema,
 
65
            final PgSchema newSchema) {
 
66
        for (final PgTable newTable : newSchema.getTables()) {
 
67
            final PgTable oldTable;
 
68
 
 
69
            if (oldSchema == null) {
 
70
                oldTable = null;
 
71
            } else {
 
72
                oldTable = oldSchema.getTable(newTable.getName());
 
73
            }
 
74
 
 
75
            // Drop triggers that no more exist or are modified
 
76
            for (final PgTrigger trigger :
 
77
                    getDropTriggers(oldTable, newTable)) {
 
78
                writer.println();
 
79
                writer.println(trigger.getDropSQL(arguments.isQuoteNames()));
 
80
            }
 
81
        }
 
82
    }
 
83
 
 
84
    /**
68
85
     * Returns list of triggers that should be dropped.
69
86
     *
70
87
     * @param oldTable original table
72
89
     *
73
90
     * @return list of triggers that should be dropped
74
91
     */
75
 
    private static List<PgTrigger> getDropTriggers(
76
 
        final PgTable oldTable,
77
 
        final PgTable newTable) {
 
92
    private static List<PgTrigger> getDropTriggers(final PgTable oldTable,
 
93
            final PgTable newTable) {
78
94
        final List<PgTrigger> list = new ArrayList<PgTrigger>();
79
95
 
80
96
        if ((newTable != null) && (oldTable != null)) {
98
114
     *
99
115
     * @return list of triggers that should be added
100
116
     */
101
 
    private static List<PgTrigger> getNewTriggers(
102
 
        final PgTable oldTable,
103
 
        final PgTable newTable) {
 
117
    private static List<PgTrigger> getNewTriggers(final PgTable oldTable,
 
118
            final PgTable newTable) {
104
119
        final List<PgTrigger> list = new ArrayList<PgTrigger>();
105
120
 
106
121
        if (newTable != null) {
107
122
            if (oldTable == null) {
108
123
                list.addAll(newTable.getTriggers());
109
124
            } else {
110
 
                for (PgTrigger newTrigger : newTable.getTriggers()) {
 
125
                for (final PgTrigger newTrigger : newTable.getTriggers()) {
111
126
                    if (!oldTable.getTriggers().contains(newTrigger)) {
112
127
                        list.add(newTrigger);
113
128
                    }