01: /*
02:
03: Derby - Class org.apache.derby.impl.sql.execute.ReplaceJarConstantAction
04:
05: Licensed to the Apache Software Foundation (ASF) under one or more
06: contributor license agreements. See the NOTICE file distributed with
07: this work for additional information regarding copyright ownership.
08: The ASF licenses this file to you under the Apache License, Version 2.0
09: (the "License"); you may not use this file except in compliance with
10: the License. You may obtain a copy of the License at
11:
12: http://www.apache.org/licenses/LICENSE-2.0
13:
14: Unless required by applicable law or agreed to in writing, software
15: distributed under the License is distributed on an "AS IS" BASIS,
16: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17: See the License for the specific language governing permissions and
18: limitations under the License.
19:
20: */
21:
22: package org.apache.derby.impl.sql.execute;
23:
24: import org.apache.derby.iapi.services.sanity.SanityManager;
25: import org.apache.derby.iapi.error.StandardException;
26: import org.apache.derby.iapi.sql.execute.ConstantAction;
27:
28: import org.apache.derby.iapi.sql.Activation;
29:
30: import org.apache.derby.catalog.UUID;
31:
32: /**
33: * Constant action to Add an external Jar file to a database.
34: *
35: */
36: class ReplaceJarConstantAction extends DDLConstantAction {
37:
38: private final UUID id;
39: private final String schemaName;
40: private final String sqlName;
41: private final String externalPath;
42:
43: //////////////////////////////////////////////////////////////
44: //
45: // CONSTRUCTORS
46: //
47: //////////////////////////////////////////////////////////////
48:
49: /**
50: * Make the ConstantAction to replace a jar file in a database.
51: *
52: * @param id The id for the jar file
53: * @param schemaName The SchemaName for the jar file.
54: * @param sqlName The sqlName for the jar file.
55: * @param externalPath The name of the file that holds the jar.
56: */
57: ReplaceJarConstantAction(UUID id, String schemaName,
58: String sqlName, String externalPath) {
59: this .id = id;
60: this .schemaName = schemaName;
61: this .sqlName = sqlName;
62: this .externalPath = externalPath;
63: }
64:
65: //////////////////////////////////////////////////////////////
66: //
67: // OBJECT SHADOWS
68: //
69: //////////////////////////////////////////////////////////////
70:
71: public String toString() {
72: // Do not put this under SanityManager.DEBUG - it is needed for
73: // error reporting.
74: return "REPLACE JAR FILE " + schemaName + "." + sqlName;
75: }
76:
77: //////////////////////////////////////////////////////////////
78: //
79: // CONSTANT ACTION METHODS
80: //
81: //////////////////////////////////////////////////////////////
82: /**
83: * @see ConstantAction#executeConstantAction
84: * @exception StandardException Thrown on failure
85: */
86: public void executeConstantAction(Activation activation)
87: throws StandardException {
88: JarUtil.replace(id, schemaName, sqlName, externalPath,
89: purgeOnCommit());
90: }
91:
92: //
93: // Replication can over-ride this to defer purging dropped jar
94: // files that remain in the stage.
95: protected boolean purgeOnCommit() {
96: return true;
97: }
98:
99: }
|