001: /*
002: * This file or a portion of this file is licensed under the terms of
003: * the Globus Toolkit Public License, found in file GTPL, or at
004: * http://www.globus.org/toolkit/download/license.html. This notice must
005: * appear in redistributions of this file, with or without modification.
006: *
007: * Redistributions of this Software, with or without modification, must
008: * reproduce the GTPL in: (1) the Software, or (2) the Documentation or
009: * some other similar material which is provided with the Software (if
010: * any).
011: *
012: * Copyright 1999-2004 University of Chicago and The University of
013: * Southern California. All rights reserved.
014: */
015:
016: package org.griphyn.vdl.directive;
017:
018: import java.io.*;
019: import java.util.Iterator;
020: import java.util.List;
021: import java.util.ArrayList;
022: import java.sql.SQLException;
023: import org.griphyn.common.util.Currently;
024: import org.griphyn.vdl.parser.VDLxParser;
025: import org.griphyn.vdl.classes.*;
026: import org.griphyn.vdl.dbschema.*;
027: import org.griphyn.vdl.util.Logging;
028: import java.util.MissingResourceException;
029:
030: /**
031: * This class deletes definitions that either match certain
032: * namespace, name, version combination
033: *
034: * @author Jens-S. Vöckler
035: * @author Yong Zhao
036: * @version $Revision: 50 $
037: *
038: * @see org.griphyn.vdl.parser.VDLxParser
039: * @see org.griphyn.vdl.dbschema.VDC
040: */
041: public class Delete extends Directive {
042: private DatabaseSchema m_dbschema = null;
043:
044: /**
045: * Constructor
046: */
047: public Delete() throws IOException, MissingResourceException {
048: super ();
049: }
050:
051: /**
052: * Constructor, set database schema instance
053: * @param dbs the database schema instance
054: */
055: public Delete(DatabaseSchema dbs) throws IOException,
056: MissingResourceException {
057: m_dbschema = dbs;
058: }
059:
060: /**
061: * set database schema
062: * @param dbs the database schema instance
063: */
064: public void setDatabaseSchema(DatabaseSchema dbs) {
065: m_dbschema = dbs;
066: }
067:
068: /**
069: * Delete one or more definitions from the backend database. The key
070: * triple parameters may be wildcards. Wildcards are expressed as
071: * <code>null</code> value.
072: *
073: * @param namespace namespace
074: * @param name name
075: * @param version version
076: * @param clsType definition type (TR or DV)
077: * @return a list of definitions that were deleted.
078: *
079: * @see org.griphyn.vdl.classes.Definition#TRANSFORMATION
080: * @see org.griphyn.vdl.classes.Definition#DERIVATION
081: */
082: public java.util.List deleteDefinition(String namespace,
083: String name, String version, int clsType)
084: throws java.sql.SQLException {
085: return ((VDC) m_dbschema).deleteDefinition(namespace, name,
086: version, clsType);
087: }
088:
089: /**
090: * Delete one or more definitions from the backend database. The key
091: * triple parameters may be wildcards. Wildcards are expressed as
092: * <code>null</code> value. Output the deleted ones.
093: *
094: * @param namespace namespace
095: * @param name name
096: * @param version version
097: * @param clsType definition type (TR or DV)
098: * @param writer writer to output deleted definitions
099: * @return a list of definitions that were deleted.
100: *
101: * @see org.griphyn.vdl.classes.Definition#TRANSFORMATION
102: * @see org.griphyn.vdl.classes.Definition#DERIVATION
103: */
104: public java.util.List deleteDefinition(String namespace,
105: String name, String version, int clsType, Writer writer)
106: throws java.sql.SQLException, IOException {
107: java.util.List defList = ((VDC) m_dbschema).deleteDefinition(
108: namespace, name, version, clsType);
109: if (writer != null) {
110: for (Iterator i = defList.iterator(); i.hasNext();) {
111: Definition d = (Definition) i.next();
112: d.toXML(writer, " ");
113: m_logger.log("delete", 0, "deleted " + d.identify());
114: }
115: }
116: return defList;
117: }
118:
119: /**
120: * Delete one or more definitions from the backend database. The key
121: * triple parameters may be wildcards in force mode. Wildcards are
122: * expressed as <code>null</code> value. Output the deleted ones.
123: *
124: * @param namespace namespace
125: * @param name name
126: * @param version version
127: * @param clsType definition type (TR or DV)
128: * @param writer writer to output deleted definitions
129: * @param force force wildcard matching
130: * @return a list of definitions that were deleted.
131: *
132: * @see org.griphyn.vdl.classes.Definition#TRANSFORMATION
133: * @see org.griphyn.vdl.classes.Definition#DERIVATION
134: */
135: public java.util.List deleteDefinition(String namespace,
136: String name, String version, int clsType, Writer writer,
137: boolean force) throws java.sql.SQLException, IOException {
138:
139: java.util.List defList = null;
140: if (force) {
141: defList = ((VDC) m_dbschema).deleteDefinition(namespace,
142: name, version, clsType);
143: } else {
144: ArrayList list = new ArrayList();
145: if (clsType == -1 || clsType == Definition.TRANSFORMATION) {
146: Definition def = ((VDC) m_dbschema).loadDefinition(
147: namespace, name, version,
148: Definition.TRANSFORMATION);
149: if (def != null) {
150: list.add(def);
151: ((VDC) m_dbschema).deleteDefinition(def);
152: }
153: }
154: if (clsType == -1 || clsType == Definition.DERIVATION) {
155: Definition def = ((VDC) m_dbschema)
156: .loadDefinition(namespace, name, version,
157: Definition.DERIVATION);
158: if (def != null) {
159: list.add(def);
160: ((VDC) m_dbschema).deleteDefinition(def);
161: }
162: }
163: defList = list;
164: }
165:
166: if (writer != null) {
167: for (Iterator i = defList.iterator(); i.hasNext();) {
168: Definition d = (Definition) i.next();
169: d.toXML(writer, " ");
170: m_logger.log("delete", 0, "deleted " + d.identify());
171: }
172: }
173: return defList;
174: }
175: }
|