< Indietro | Avanti >

Creazione di un record

In questa lezione, si acquisiscono informazioni su come creare un nuovo record e specificare i valori campo del record.
L'esempio di codice presente in questa lezione fornisce un esempio per consentire a un utente di creare un record. Le finestre di dialogo iniziali consentono all'utente di selezionare il database nel quale creare il record e il tipo di record da creare. Una volta creato il record, all'utente viene visualizzata la finestra di dialogo EditRecord. In tale finestra di dialogo, l'utente può impostare i campi obbligatori o facoltativi, quindi consegnare il nuovo record al database.
    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)));
            
            // Leggere l'elenco di tutti i tipi di record dal database selezionato e 
            // rimuovere da tale elenco i tipi di record non inoltrabili.
            ResourceList<CqRecordType> rTypes = 
                setUserFriendlyLocation(userDb.getRecordTypeSet());
            Iterator<CqRecordType> types = rTypes.iterator();
    
            while (types.hasNext()) {
                if (!types.next().getIsSubmittable())
                    types.remove();
            }
    
            // Presentare l'elenco di tipi di record inoltrabili all'utente per la
            // selezione
            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);
    

            // Il nome effettivo del nuovo record è determinato dallo
            // schema. L'unica cosa necessaria qui è una ubicazione "consigliata"
            // che renda il record un membro del tipo di record specificato.
            CqRecord record = cqRecordType.cqProvider().cqRecord((StpLocation) recordType
                .getUserFriendlyLocation().child("new"));
            
            // Creare il record. Non tentare già di consegnarlo in quanto l'utente potrebbe
            // dover impostare i campi obbligatori perché la consegna
            // riesca.
            record = record.doCreateRecord(RECORD_PROPERTIES, CqProvider.HOLD);
            
            /*
             * Una volta consegnato il record creato al relativo database, la finestra
             * finestra di dialogo EditRecord chiederà di rivisualizzarlo nel proprio programma di visualizzazione.
             * L'utente deve in seguito creare questo proxy "originale"
             * poiché non si dispone di una valida ubicazione per il nuovo record fino a quando
             * questa non viene creata. È necessario utilizzare l'ubicazione stabile
             * in quanto, in alcuni casi, l'ubicazione semplice può essere modificata
             * quando vengono modificati i valori campo.
             */
            CqRecord selected = recordType.cqProvider()
                                    .cqRecord(record.getStableLocation());
    
            // Con il nuovo record creato nel contesto di modifica, il processo
            // prosegue nello stesso modo della modifica di un record. I campi 
            // obbligatori devono essere forniti dall'utente e successivamente è possibile consegnarli.
            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);
        }
    }
    
    /** Le proprietà del tipo di record lette prima della creazione di un record */
    final static PropertyRequest RECORD_TYPE_PROPERTIES =
        new PropertyRequest(CqRecordType.USER_FRIENDLY_LOCATION,
                            CqRecordType.IS_SUBMITTABLE,
                            CqRecordType.DISPLAY_NAME);
Una volta creato un nuovo record, è possibile eseguire altre operazioni su esso utilizzando Rational CM API. Ad esempio, è possibile verificare che il nuovo record si trovi nel database utente eseguendo una query che restituisce il nuovo record nella serie di risultati.

Punto di controllo della lezione

Ora sono state acquisite le informazioni su come utilizzare Rational CM API per lo sviluppo delle azioni dell'applicazione client che eseguono le operazioni create in un database utente.
In questa lezione, sono state fornite informazioni su quanto segue:
  • Informazioni sull'utilizzo di Rational CM API per eseguire le operazioni di creazione di nuove risorse e di valori proprietà, come ad esempio un record e i relativi valori campo in un database utente da un'applicazione client.
< Indietro | Avanti >

Feedback