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: package org.griphyn.vdl.dbschema;
016:
017: import java.sql.*;
018: import org.griphyn.vdl.classes.Definition;
019:
020: /**
021: * This common schema interface defines the schemas in which the
022: * abstraction layers access the VDC. This layer is independent of the
023: * implementing database, and does so by going via the database driver
024: * class API.
025: *
026: * @author Jens-S. Vöckler
027: * @author Yong Zhao
028: * @version $Revision: 50 $
029: * @see org.griphyn.vdl.dbschema.DatabaseSchema
030: * @see org.griphyn.vdl.dbdriver
031: */
032: public interface VDC extends Catalog {
033: /**
034: * Names the property key prefix employed for schemas dealing with the VDC.
035: */
036: public static final String PROPERTY_PREFIX = "vds.db.vdc.schema";
037:
038: //
039: // taken from (old) DBManager
040: //
041:
042: /**
043: * Loads a single Definition from the backend database into an Java object.
044: * This method does not allow wildcarding!
045: *
046: * @param namespace namespace, null will be converted into empty string
047: * @param name name, null will be converted into empty string
048: * @param version version, null will be converted into empty string
049: * @param type type of the definition (TR or DV), must not be -1.
050: * @return the Definition as specified, or null if not found.
051: *
052: * @see org.griphyn.vdl.classes.Definition#TRANSFORMATION
053: * @see org.griphyn.vdl.classes.Definition#DERIVATION
054: * @see #saveDefinition( Definition, boolean )
055: * @see #containsDefinition( Definition )
056: * @see #searchDefinition( String, String, String, int )
057: */
058: public abstract Definition loadDefinition(String namespace,
059: String name, String version, int type) throws SQLException;
060:
061: /**
062: * Saves a Definition, that is either a Transformation or Derivation,
063: * into the backend database.
064: *
065: * @param definition is the new Definition to store.
066: * @param overwrite true, if existing defitions will be overwritten by
067: * new ones with the same primary (or secondary) key (-set), or false,
068: * if a new definition will be rejected on key matches.
069: *
070: * @return true, if the backend database was changed, or
071: * false, if the definition was not accepted into the backend.
072: *
073: * @see org.griphyn.vdl.classes.Definition
074: * @see org.griphyn.vdl.classes.Transformation
075: * @see org.griphyn.vdl.classes.Derivation
076: * @see #loadDefinition( String, String, String, int )
077: * @see #deleteDefinition( String, String, String, int )
078: */
079: public abstract boolean saveDefinition(Definition definition,
080: boolean overwrite) throws SQLException;
081:
082: //
083: // higher level methods, allowing for wildcarding as stated.
084: //
085:
086: /**
087: * Check with the backend database, if the given definition exists.
088: *
089: * @param definition is a Definition object to search for
090: * @return true, if the Definition exists, false if not found
091: */
092: public abstract boolean containsDefinition(Definition definition)
093: throws SQLException;
094:
095: /**
096: * Delete a specific Definition objects from the database. No wildcard
097: * matching will be done. "Fake" definitions are permissable, meaning
098: * it just has the secondary key triple.
099: *
100: * @param definition is the definition specification to delete
101: * @return true is something was deleted, false if non existent.
102: *
103: * @see org.griphyn.vdl.classes.Definition#TRANSFORMATION
104: * @see org.griphyn.vdl.classes.Definition#DERIVATION
105: */
106: public abstract boolean deleteDefinition(Definition definition)
107: throws SQLException;
108:
109: /**
110: * Delete one or more definitions from the backend database. The key
111: * triple parameters may be wildcards. Wildcards are expressed as
112: * <code>null</code> value.
113: *
114: * @param namespace namespace
115: * @param name name
116: * @param version version
117: * @param type definition type (TR or DV)
118: * @return a list of definitions that were deleted.
119: *
120: * @see org.griphyn.vdl.classes.Definition#TRANSFORMATION
121: * @see org.griphyn.vdl.classes.Definition#DERIVATION
122: */
123: public abstract java.util.List deleteDefinition(String namespace,
124: String name, String version, int type) throws SQLException;
125:
126: /**
127: * Search the database for definitions by ns::name:version triple
128: * and by type (either Transformation or Derivation). This version
129: * of the search allows for jokers expressed as null value
130: *
131: * @param namespace namespace, null to match any namespace
132: * @param name name, null to match any name
133: * @param version version, null to match any version
134: * @param type type of definition, see below, or -1 as wildcard
135: * @return a list of Definition items, which may be empty
136: *
137: * @see org.griphyn.vdl.classes.Definition#TRANSFORMATION
138: * @see org.griphyn.vdl.classes.Definition#DERIVATION
139: * @see #loadDefinition( String, String, String, int )
140: */
141: public abstract java.util.List searchDefinition(String namespace,
142: String name, String version, int type) throws SQLException;
143:
144: /**
145: * Searches the database for all derivations that contain a certain LFN.
146: * The linkage is an additional constraint. This method does not allow
147: * jokers.
148: *
149: * @param lfn the LFN name
150: * @param link the linkage type of the LFN
151: * @return a list of Definition items that match the criterion.
152: *
153: * @see org.griphyn.vdl.classes.LFN#NONE
154: * @see org.griphyn.vdl.classes.LFN#INPUT
155: * @see org.griphyn.vdl.classes.LFN#OUTPUT
156: * @see org.griphyn.vdl.classes.LFN#INOUT
157: */
158: public abstract java.util.List searchFilename(String lfn, int link)
159: throws SQLException;
160:
161: }
|