Dans la présente leçon, vous allez apprendre à créer un enregistrement et à spécifier les valeurs de zone de l'enregistrement.
L'exemple de code de la présente leçon fournit un exemple permettant
à un utilisateur de créer un enregistrement. Les boîtes de dialogue initiales permettent à l'utilisateur de sélectionner la base de données dans laquelle
créer l'enregistrement, ainsi que le type d'enregistrement à créer. Une fois l'enregistrement créé, la boîte de dialogue EditRecord s'affiche. Dans cette boîte de dialogue,
l'utilisateur peut définir des zones obligatoires et facultatives, puis distribuer le nouvel enregistrement à la base de données.
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,
"Choisir une base de données pour le nouvel enregistrement",
"Créer un enregistrement",
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)));
// Consultez la liste de tous les types d'enregistrement provenant de la base de données sélectionnées et
// supprimez de cette liste les types d'enregistrement qui ne peuvent pas être soumis.
ResourceList<CqRecordType> rTypes =
setUserFriendlyLocation(userDb.getRecordTypeSet());
Iterator<CqRecordType> types = rTypes.iterator();
while (types.hasNext()) {
if (!types.next().getIsSubmittable())
types.remove();
}
// Présentez à l'utilisateur la liste des types d'enregistrement pouvant
// être soumis pour qu'il puisse y effectuer sa sélection
CqRecordType recordType = (CqRecordType) JOptionPane
.showInputDialog(null,
"Choisir le type d'enregistrement à créer",
"Tous les types d'enregistrement dans "
+ userDb.location().string(),
JOptionPane.INFORMATION_MESSAGE,
null,
rTypes.toArray(new CqRecordType[] {}),
rTypes.get(0));
if (recordType == null) System.exit(0);
// Le nom réel du nouvel enregistrement est déterminé par le
// schéma. Ici, un emplacement "suggéré" faisant de l'enregistrement
// un membre du type d'enregistrement spécifié est nécessaire.
CqRecord record = cqRecordType.cqProvider().cqRecord((StpLocation) recordType
.getUserFriendlyLocation().child("new"));
// Créez l'enregistrement. N'essayez pas de le distribuer tout de suite, car
// l'utilisateur peut avoir à définir des zones avant la
// distribution.
record = record.doCreateRecord(RECORD_PROPERTIES, CqProvider.HOLD);
/*
* Après avoir distribué l'enregistrement créé à sa base de données,
* la boîte de dialogue EditRecord va vouloir se réafficher dans son propre afficheur.
* Nous devons créer ce proxy "original" car nous n'avons pas d'emplacement
* valide pour le nouvel enregistrement tant qu'il n'a pas été créé.
* L'emplacement stable doit être utilisé car,
* dans certains cas, l'emplacement convivial peut changer
* lorsque des valeurs de zone sont modifiées.
*/
CqRecord selected = recordType.cqProvider()
.cqRecord(record.getStableLocation());
// Avec le nouvel enregistrement créé dans le contexte de changement, le processus
// s'exécute de la même manière que lors de l'édition d'un enregistrement. // Les zones obligatoires doivent être renseignées par l'utilisateur, puis l'enregistrement peut être distribué.
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);
}
}
/** Les propriétés du type d'enregistrement sont lues avant de créer un enregistrement */
final static PropertyRequest RECORD_TYPE_PROPERTIES =
new PropertyRequest(CqRecordType.USER_FRIENDLY_LOCATION,
CqRecordType.IS_SUBMITTABLE,
CqRecordType.DISPLAY_NAME);
Après avoir créé un enregistrement, vous pouvez effectuer d'autres opérations sur celui-ci à l'aide de l'API CM ClearQuest. Par exemple, vous pouvez valider que le nouvel enregistrement se trouve dans la base de données utilisateur
en exécutant une requête qui renvoie le nouvel enregistrement dans l'ensemble de résultats.