1 package org.apache.torque.mojo;
2
3 import java.util.Properties;
4
5 import org.apache.maven.plugin.MojoExecutionException;
6 import org.apache.maven.settings.Server;
7 import org.kuali.db.DatabaseCommand;
8
9 import static org.apache.commons.lang.StringUtils.*;
10
11
12
13
14 public abstract class AbstractDBACommandMojo extends AbstractSQLExecutorMojo {
15 public static final String DATABASE_PROPERTY = "database";
16 public static final String DATABASE_PW_PROPERTY = "databasePassword";
17 public static final String DATABASE_USERNAME_PROPERTY = "databaseUsername";
18
19
20
21
22
23
24
25
26 String serverUrl;
27
28
29
30
31
32
33
34
35
36
37
38 String database;
39
40
41
42
43
44
45
46
47
48
49
50
51 String databaseUser;
52
53
54
55
56
57
58
59
60
61
62
63 String databasePassword;
64
65
66
67
68
69
70
71
72 String dbaSettingsKey;
73
74 protected String getTransactionDescription(DatabaseCommand command) {
75 return command + " " + getDatabase();
76 }
77
78 protected void updateConfiguration() throws MojoExecutionException {
79 super.updateConfiguration();
80 if (isEmpty(database)) {
81 database = platform.getSchemaName(getProject().getArtifactId());
82 }
83 if (isEmpty(databasePassword)) {
84 databasePassword = platform.getSchemaName(getProject().getArtifactId());
85 }
86 if (isEmpty(databaseUser)) {
87 databaseUser = platform.getSchemaName(getProject().getArtifactId());
88 }
89 if (isEmpty(serverUrl)) {
90 serverUrl = platform.getServerUrl(url);
91 }
92 }
93
94 @Override
95 protected String getUpdatedPassword(Server server, String password) {
96
97 if (!isEmpty(password)) {
98 return password;
99 }
100 if (server != null) {
101
102 getLog().info("Located a password in settings.xml under the server id '" + server.getId() + "' Password: " + getDisplayPassword(server.getPassword()));
103 return server.getPassword();
104 }
105
106 return null;
107 }
108
109 @Override
110 protected String getUpdatedUsername(Server server, String username) {
111
112 if (!isEmpty(username)) {
113 return username;
114 }
115 if (server != null) {
116
117 getLog().info("Located a username in settings.xml under the server id '" + server.getId() + "' Username: " + server.getUsername());
118 return server.getUsername();
119 }
120
121 return null;
122 }
123
124 @Override
125 protected Properties getContextProperties() {
126 Properties properties = super.getContextProperties();
127 properties.setProperty(DATABASE_PROPERTY, getDatabase());
128 properties.setProperty(DATABASE_PW_PROPERTY, getDatabasePassword());
129 properties.setProperty(DATABASE_USERNAME_PROPERTY, getDatabaseUser());
130 return properties;
131 }
132
133 @Override
134 protected Server getServerFromSettingsKey() {
135 Server server = getSettings().getServer(dbaSettingsKey);
136 if (server != null) {
137 return server;
138 }
139
140 String settingsKey = "impex.dba." + getUrl();
141 return getSettings().getServer(settingsKey);
142 }
143
144 @Override
145 protected void validateConfiguration() throws MojoExecutionException {
146 super.validateConfiguration();
147 if (isEmpty(database)) {
148 throw new MojoExecutionException("\n\nNo database was specified.\nSpecify a database in the plugin configuration or as a system property.\n\nFor example:\n-Ddatabase=MYDB\n\n.");
149 }
150 }
151
152 public String getDatabase() {
153 return database;
154 }
155
156 public void setDatabase(String schema) {
157 this.database = schema;
158 }
159
160 public String getDatabasePassword() {
161 return databasePassword;
162 }
163
164 public void setDatabasePassword(String databasePassword) {
165 this.databasePassword = databasePassword;
166 }
167
168 public String getDatabaseUser() {
169 return databaseUser;
170 }
171
172 public void setDatabaseUser(String databaseUsername) {
173 this.databaseUser = databaseUsername;
174 }
175
176 public String getServerUrl() {
177 return serverUrl;
178 }
179
180 public void setServerUrl(String serverUrl) {
181 this.serverUrl = serverUrl;
182 }
183
184 public String getDbaSettingsKey() {
185 return dbaSettingsKey;
186 }
187
188 public void setDbaSettingsKey(String dbaSettingsKey) {
189 this.dbaSettingsKey = dbaSettingsKey;
190 }
191 }