/*
* This file or a portion of this file is licensed under the terms of
* the Globus Toolkit Public License, found in file GTPL, or at
* http://www.globus.org/toolkit/download/license.html. This notice must
* appear in redistributions of this file, with or without modification.
*
* Redistributions of this Software, with or without modification, must
* reproduce the GTPL in: (1) the Software, or (2) the Documentation or
* some other similar material which is provided with the Software (if
* any).
*
* Copyright 1999-2004 University of Chicago and The University of
* Southern California. All rights reserved.
*/
package org.griphyn.vdl.directive;
import java.io.*;
import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;
import java.sql.SQLException;
import edu.isi.pegasus.common.util.Currently;
import org.griphyn.vdl.parser.VDLxParser;
import org.griphyn.vdl.classes.*;
import org.griphyn.vdl.dbschema.*;
import org.griphyn.vdl.util.Logging;
import java.util.MissingResourceException;
/**
* This class deletes definitions that either match certain
* namespace, name, version combination
*
* @author Jens-S. Vöckler
* @author Yong Zhao
* @version $Revision$
*
* @see org.griphyn.vdl.parser.VDLxParser
* @see org.griphyn.vdl.dbschema.VDC
*/
public class Delete extends Directive
{
private DatabaseSchema m_dbschema = null;
/**
* Constructor
*/
public Delete()
throws IOException, MissingResourceException
{
super();
}
/**
* Constructor, set database schema instance
* @param dbs the database schema instance
*/
public Delete(DatabaseSchema dbs)
throws IOException, MissingResourceException
{
m_dbschema = dbs;
}
/**
* set database schema
* @param dbs the database schema instance
*/
public void setDatabaseSchema(DatabaseSchema dbs)
{
m_dbschema = dbs;
}
/**
* Delete one or more definitions from the backend database. The key
* triple parameters may be wildcards. Wildcards are expressed as
* <code>null</code> value.
*
* @param namespace namespace
* @param name name
* @param version version
* @param clsType definition type (TR or DV)
* @return a list of definitions that were deleted.
*
* @see org.griphyn.vdl.classes.Definition#TRANSFORMATION
* @see org.griphyn.vdl.classes.Definition#DERIVATION
*/
public java.util.List deleteDefinition(String namespace,
String name,
String version,
int clsType)
throws java.sql.SQLException
{
return ((VDC)m_dbschema).deleteDefinition(namespace, name, version, clsType );
}
/**
* Delete one or more definitions from the backend database. The key
* triple parameters may be wildcards. Wildcards are expressed as
* <code>null</code> value. Output the deleted ones.
*
* @param namespace namespace
* @param name name
* @param version version
* @param clsType definition type (TR or DV)
* @param writer writer to output deleted definitions
* @return a list of definitions that were deleted.
*
* @see org.griphyn.vdl.classes.Definition#TRANSFORMATION
* @see org.griphyn.vdl.classes.Definition#DERIVATION
*/
public java.util.List deleteDefinition(String namespace,
String name,
String version,
int clsType,
Writer writer)
throws java.sql.SQLException, IOException
{
java.util.List defList = ((VDC)m_dbschema).deleteDefinition(namespace, name, version, clsType );
if (writer != null) {
for ( Iterator i=defList.iterator(); i.hasNext(); ) {
Definition d = (Definition) i.next();
d.toXML( writer, " " );
m_logger.log( "delete", 0, "deleted " + d.identify() );
}
}
return defList;
}
/**
* Delete one or more definitions from the backend database. The key
* triple parameters may be wildcards in force mode. Wildcards are
* expressed as <code>null</code> value. Output the deleted ones.
*
* @param namespace namespace
* @param name name
* @param version version
* @param clsType definition type (TR or DV)
* @param writer writer to output deleted definitions
* @param force force wildcard matching
* @return a list of definitions that were deleted.
*
* @see org.griphyn.vdl.classes.Definition#TRANSFORMATION
* @see org.griphyn.vdl.classes.Definition#DERIVATION
*/
public java.util.List deleteDefinition(String namespace,
String name,
String version,
int clsType,
Writer writer,
boolean force)
throws java.sql.SQLException, IOException
{
java.util.List defList = null;
if (force) {
defList = ((VDC)m_dbschema).deleteDefinition(namespace, name, version, clsType );
} else {
ArrayList list = new ArrayList();
if (clsType == -1 || clsType == Definition.TRANSFORMATION) {
Definition def = ((VDC)m_dbschema).loadDefinition(namespace, name, version, Definition.TRANSFORMATION);
if (def != null) {
list.add(def);
((VDC)m_dbschema).deleteDefinition(def);
}
}
if (clsType == -1 || clsType == Definition.DERIVATION) {
Definition def = ((VDC)m_dbschema).loadDefinition(namespace, name, version, Definition.DERIVATION);
if (def != null) {
list.add(def);
((VDC)m_dbschema).deleteDefinition(def);
}
}
defList = list;
}
if (writer != null) {
for ( Iterator i=defList.iterator(); i.hasNext(); ) {
Definition d = (Definition) i.next();
d.toXML( writer, " " );
m_logger.log( "delete", 0, "deleted " + d.identify() );
}
}
return defList;
}
}