/*
* 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.dbschema;
import java.sql.*;
import org.griphyn.vdl.workflow.*;
/**
* This common schema interface defines the schemas in which the
* abstraction layers access the WF database. This layer is independent
* of the implementing database, and does so by going via the database
* driver class API.
*
* @author Jens-S. Vöckler
* @author Mike Wilde
* @version $Revision$
* @see org.griphyn.vdl.dbschema.DatabaseSchema
* @see org.griphyn.vdl.dbdriver
*/
public interface WF extends Catalog
{
/**
* Names the property key prefix employed for schemas dealing with the VDC.
*/
public static final String PROPERTY_PREFIX = "vds.db.wf.schema";
/**
* Determines the primary key of a workflow from the provided tuple
* of secondary keys, and instantiates the corresponding workflow.
*
* @param basedir is the base directory
* @param vogroup is the VO group identifier
* @param label is the workflow label
* @param run is the workflow run directory
* @return the workflow identifier, or -1 if not found.
*/
public abstract WorkEntry
getWorkflow( String basedir, String vogroup, String label, String run )
throws SQLException;
/**
* Returns a set of all workflows that are younger than a cut-off time.
* The result may be empty, if no matching workflows exist yet.
*
* @param mtime is the oldest permissable last modification time
* @return a map of workflows, indexed by their primary key
*/
public abstract java.util.Map
getWorkflows( java.util.Date mtime )
throws SQLException;
}