< Zurück | Weiter >

Datensatz erstellen

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();
            }
    
            // Die Liste der Satztypen, die übergeben werden können,
            // dem Benutzer zur Auswahl präsentieren.
            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 Rational CM API weitere Operationen dafür 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.

Prüfpunkt der Lerneinheit

Sie haben jetzt gelernt, wie Sie mit der Rational CM API Clientanwendungsaktionen entwickeln, die create-Operationen in einer Benutzerdatenbank ausführen.
In dieser Lerneinheit haben Sie folgende Kenntnisse erworben:
  • Sie haben gelernt, wie Sie die Rational CM API einsetzen können, um aus einer Clientanwendung heraus Operationen auszuführen, die neue Ressourcen und Eigenschaftswerte, z. B. einen Datensatzes und seine Feldwerte, in einer Benutzerdatenbank erstellen.
< Zurück | Weiter >