In dieser Lerneinheit lernen Sie, wie Sie einen neuen Datensatz erstellen und Feldwerte des Datensatzes angeben.
Das Codebeispiel in dieser Lerneinheit enthält ein Beispiel dafür, wie einem Benutzer das Erstellen eines Datensatzes ermöglicht wird. In den angezeigten Anfangsdialogen kann der Benutzer die Datenbank auswählen, in der der Datensatz erstellt werden soll, und er kann den Typ des
zu erstellenden Datensatzes auswählen. Nachdem der Datensatz erstellt wurde, wird der Dialog
"EditRecord" (Datensatz bearbeiten) angezeigt. In diesem Dialog kann der Benutzer Werte für Pflichtfelder und optionale Felder festlegen
und den neuen Datensatz an die Datenbank übergeben.
public static void main(String[] args)
{
try {
CqProvider provider = Utilities.getProvider().cqProvider();
Viewer viewer = new Viewer(provider);
ResourceList<CqUserDb> databases = Utilities.getUserDbList(provider, null);
CqUserDb userDb = (CqUserDb) JOptionPane
.showInputDialog(null,
"Choose a Database for the New Record",
"Create Record",
JOptionPane.INFORMATION_MESSAGE,
null,
databases.toArray(new Object[] {}),
databases.get(0));
if (userDb == null) System.exit(0);
userDb = (CqUserDb) userDb
.doReadProperties(new PropertyRequest(CqUserDb.RECORD_TYPE_SET
.nest(RECORD_TYPE_PROPERTIES)));
// Die Liste aller Satztypen aus der ausgewählten Datenbank lesen,
// und aus dieser Liste diejenigen Satztypen entfernen, die nicht
// übergeben werden können.
ResourceList<CqRecordType> rTypes =
setUserFriendlyLocation(userDb.getRecordTypeSet());
Iterator<CqRecordType> types = rTypes.iterator();
while (types.hasNext()) {
if (!types.next().getIsSubmittable())
types.remove();
}
// Dem Benutzer die Liste der Datensatztypen, die übergeben werden können,
// zur Auswahl anzeigen
CqRecordType recordType = (CqRecordType) JOptionPane
.showInputDialog(null,
"Choose the type of record to create",
"All Record Types in "
+ userDb.location().string(),
JOptionPane.INFORMATION_MESSAGE,
null,
rTypes.toArray(new CqRecordType[] {}),
rTypes.get(0));
if (recordType == null) System.exit(0);
// Der tatsächliche Name für den neuen Datensatz wird durch das
// Schema festgelegt. Hier muss lediglich eine "empfohlene"
// Position angegeben werden, die den Datensatz als Member des
// angegebenen Satztyp ausweist.
CqRecord record = cqRecordType.cqProvider().cqRecord((StpLocation) recordType
.getUserFriendlyLocation().child("new"));
// Den Datensatz erstellen. Der Datensatz darf noch nicht übergeben
// werden, weil möglicherweise Pflichtfelder vom Benutzer festgelegt
// werden müssen, damit die Übergabe erfolgreich ist.
record = record.doCreateRecord(RECORD_PROPERTIES, CqProvider.HOLD);
/*
* Nach der Übergabe des erstellten Datensatzes an seine Datenbank
* wird der Dialog "EditRecord" den erstellten Datensatz in seinem eigenen
* Viewer erneut anzeigen wollen.
Dieser "ursprüngliche" Proxy muss erstellt werden,
* weil für den neuen Datensatz keine gültige Position existiert, solange
* er noch nicht erstellt wurde. Die stabile Position (StableLocation) muss
* verwendet werden, weil sich die benutzerfreundliche Position in einigen Fällen
* ändern kann, wenn Feldwerte geändert werden.
*/
CqRecord selected = recordType.cqProvider()
.cqRecord(record.getStableLocation());
// Mit dem neuen Datensatz, der im Änderungskontext erstellt wurde,
// verfährt der Prozess in derselben Weise wie bei der Bearbeitung
// eines Datensatzes. Verbindlich
// Felder müssen durch den Benutzer eingegeben werden, damit ein Datensatz bereitgestellt werden kann.
viewer.editRecord("Create Record ", record, selected)
.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} catch (Throwable ex) {
ex.printStackTrace();
Utilities.exception(null, "Create Record", ex);
System.exit(0);
}
}
/** Die Eigenschaften des Satztyps, die vor dem Erstellen eines */
/** Datensatzes gelesen werden. */
final static PropertyRequest RECORD_TYPE_PROPERTIES =
new PropertyRequest(CqRecordType.USER_FRIENDLY_LOCATION,
CqRecordType.IS_SUBMITTABLE,
CqRecordType.DISPLAY_NAME);
Nachdem Sie einen neuen Datensatz erstellt haben, können Sie mit der
ClearQuest CM-API weitere Operationen mit
diesem Datensatz ausführen. Beispielsweise können Sie prüfen, ob der
neue Datensatz in der Benutzerdatenbank enthalten ist, indem Sie eine Abfrage ausführen, die den neuen Datensatz in
der Ergebnismenge zurückgibt.