/*
* Licensed Materials - Property of Perforce Software, Inc.
* © Copyright Perforce Software, Inc. 2014, 2021
* © Copyright IBM Corp. 2009, 2014
* © Copyright ILOG 1996, 2009
* All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights:
* The Software and Documentation were developed at private expense and
* are "Commercial Items" as that term is defined at 48 CFR 2.101,
* consisting of "Commercial Computer Software" and
* "Commercial Computer Software Documentation", as such terms are
* used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4,
* as applicable.
*/
package database;
import java.util.Date;
import ilog.views.gantt.IlvConstraintType;
/**
* <code>GanttDBRO</code> defines a very simple read-only interface to a
* relational database that contains Gantt scheduling data. Each entity in the
* database (that is, activities, resources, constraints, and reservations) is
* assumed to be stored as a record, indexed by a unique lookup key string.
* Methods are defined to query for the lookup key of an entity and to query for
* an entity's attributes or properties. Entity properties are returned as
* <i>Record</i> objects, which are defined as inner interfaces.
*/
public interface GanttDBRO {
// =========================================
// Activities
// =========================================
/**
* Returns the lookup key for the root activity or <code>null</code> if there
* are no activities.
*/
public String queryRootActivityKey();
/**
* Returns the <code>Activity</code> record for the activity specified by its
* lookup key.
*/
public ActivityRecord queryActivity(String key);
/**
* Returns the lookup key for the parent of the specified parent activity. If
* the activity is the root activity, then it has no parent and this method
* will return <code>null</code>.
*/
public String queryActivityParent(String key);
/**
* Returns an array of lookup keys for the children of the specified parent
* activity.
*/
public String[] queryActivityChildren(String key);
/**
* The <code>ActivityRecord</code> inner interface defines the records
* returned by the {@link #queryActivity} method.
*/
public static interface ActivityRecord {
public String getKey();
public String getName();
public String getID();
public Date getStart();
public Date getEnd();
}
// =========================================
// Resources
// =========================================
/**
* Returns the lookup key for the root resource or <code>null</code> if there
* are no resources.
*/
public String queryRootResourceKey();
/**
* Returns the <code>Resource</code> record for the resource specified by its
* lookup key.
*/
public ResourceRecord queryResource(String key);
/**
* Returns the lookup key for the parent of the specified parent resource. If
* the resource is the root resource, then it has no parent and this method
* will return <code>null</code>.
*/
public String queryResourceParent(String key);
/**
* Returns an array of lookup keys for the children of the specified parent
* resource.
*/
public String[] queryResourceChildren(String key);
/**
* The <code>ResourceRecord</code> inner interface defines the records
* returned by the {@link #queryResource} method.
*/
public static interface ResourceRecord {
public String getKey();
public String getName();
public String getID();
public float getQuantity();
}
// =========================================
// Reservations
// =========================================
/**
* Returns an array of lookup keys for all the reservations.
*/
public String[] queryReservations();
/**
* Returns an array of lookup keys for all the reservations that are
* associated with an activity, specified by its lookup key.
*/
public String[] queryReservationsForActivity(String activityKey);
/**
* Returns an array of lookup keys for all the reservations that are
* associated with a resource, specified by its lookup key.
*/
public String[] queryReservationsForResource(String resourceKey);
/**
* Returns an array of lookup keys for all the reservations that are
* associated with a resource, specified by its lookup key, and that intersect
* the specified time range.
*/
public String[] queryReservationsForResource(String resourceKey, Date start, Date end);
/**
* Returns the <code>Reservation</code> record for the reservation specified
* by its lookup key.
*/
public ReservationRecord queryReservation(String key);
/**
* The <code>ReservationRecord</code> inner interface defines the records
* returned by the {@link #queryReservation} method.
*/
public static interface ReservationRecord {
public String getKey();
public String getActivityKey();
public String getResourceKey();
}
// =========================================
// Constraints
// =========================================
/**
* Returns an array of lookup keys for all the constraints.
*/
public String[] queryConstraints();
/**
* Returns an array of lookup keys for all the constraints that have the
* specified activity as their source or <i>from</i> activity, specified by
* its lookup key.
*/
public String[] queryConstraintsFromActivity(String activityKey);
/**
* Returns an array of lookup keys for all the constraints that have the
* specified activity as their target or <i>to</i> activity, specified by its
* lookup key.
*/
public String[] queryConstraintsToActivity(String activityKey);
/**
* Returns the <code>Constraint</code> record for the constraint specified by
* its lookup key.
*/
public ConstraintRecord queryConstraint(String key);
/**
* The <code>ConstraintRecord</code> inner interface defines the records
* returned by the {@link #queryConstraint} method.
*/
public static interface ConstraintRecord {
public String getKey();
public String getFromActivityKey();
public String getToActivityKey();
public IlvConstraintType getType();
}
}