Génération d'objets SDO à partir d'un schéma XML - détails de l'exemple

Cet exemple montre comment générer des objets SDO (Service Data Objects) à partir d'un schéma XML et comment les utiliser. Il comprend un fichier de schéma XML nommé PurchaseOrder.xsd.

Générer des objets SDO à partir de PurchaseOrder.xsd

Pourquoi et quand exécuter cette tâche

Pour générer des SDO à partir de PurchaseOrder.xsd, procédez comme suit :

Procédure

  1. Cliquez sur Fenêtre > Ouvrir la perspective > Java.
  2. Cliquez avec le bouton droit de la souris sur PurchaseOrder.xsd dans l'Explorateur de packages, puis cliquez sur Générer > Java ; l'assistant de génération Java™ apparaît.
    Image de l'assistant de génération Java
  3. Sélectionnez Générateur SDO dans la liste Générateur, puis cliquez sur Suivant.
  4. Dans la zone Conteneur, cliquez sur Parcourir afin de localiser le projet SDOFromXSDExample dans votre espace de travail.
  5. Cliquez sur Terminer pour générer les classes Java. Vous pouvez voir les classes Java générées dans l'Explorateur de packages.

Utiliser les SDO générés dans une application Java

Pourquoi et quand exécuter cette tâche

L'exemple de code Java qui suit montre comment effectuer les actions suivantes à l'aide du code généré :
  • Créer une instance de PurchaseOrder
  • Sérialiser un PurchaseOrder dans un fichier XML
  • Charger un PurchaseOrder depuis un fichier XML

Exemple

import java.math.BigDecimal;
import java.math.BigInteger;
import com.ibm.DocumentRoot;
import com.ibm.IbmFactory;
import com.ibm.ItemType;
import com.ibm.Items;
import com.ibm.PurchaseOrderType;
import com.ibm.USAddress;
import com.ibm.USState;
import com.ibm.util.IbmResourceUtil;
import javax.xml.datatype.DatatypeConstants;
import javax.xml.datatype.DatatypeFactory;

public class PurchaseOrderSample {

	public static void main(String[] args) throws Exception {

	/******************************************************************************/
	/********** CREER UNE INSTANCE DE BON DE COMMANDE (PURCHASE ORDER) ************/
	/******************************************************************************/
	
	    // Créer un bon de commande
	    PurchaseOrderType purchaseOrder = IbmFactory.eINSTANCE.createPurchaseOrderType(); 

	    // Créer un article produit pour le bon de commande
	    ItemType item = IbmFactory.eINSTANCE.createItemType();
	    item.setProductName("DVD Player");
	    item.setQuantity(BigInteger.valueOf(1));
	    item.setUSPrice(BigDecimal.valueOf(14895,2));
		
	    // Ajouter l'article produit à un ensemble d'articles
	    Items items = IbmFactory.eINSTANCE.createItems();
	    items.getItem().add(item);
	    
	    // Incorporer l'ensemble d'articles dans le bon de commande
	    purchaseOrder.setItems(items);
	    
	    // Définir l'adresse d'expédition du bon de commande
	    USAddress shippingAddress = IbmFactory.eINSTANCE.createUSAddress();
	    shippingAddress.setName("Alice Smith");
	    shippingAddress.setStreet("3465 Maple Street");
	    shippingAddress.setCity("Mill Valley");   
	    shippingAddress.setState(USState.get("CA"));
	    shippingAddress.setZip(BigDecimal.valueOf(90952));   
	    shippingAddress.setCountry("US");
	    purchaseOrder.setShipTo(shippingAddress);	
	    
	    //Définir la date et le commentaire du bon de commande
	    purchaseOrder.setOrderDate(DatatypeFactory.newInstance().newXMLGregorianCalendarDate(2007, 3, 10, DatatypeConstants.FIELD_UNDEFINED));
	    purchaseOrder.setComment("Overnight shipping");
	    

	/******************************************************************************/   
	/************* ENREGISTRER UN BON DE COMMANDE DANS UN FICHIER XML *************/
	/******************************************************************************/
	
		// Créer la racine du document XML et lui affecter le bon de commande
		DocumentRoot documentRoot = IbmFactory.eINSTANCE.createDocumentRoot();
		documentRoot.setPurchaseOrder(purchaseOrder);

		// Enregistrer le document XML dans un fichier
		IbmResourceUtil.getInstance().save(documentRoot,"sample.xml");
		

	/******************************************************************************/	
	/************* CHARGER UN BON DE COMMANDE DEPUIS UN FICHIER XML ***************/
	/******************************************************************************/
	
		// Charger le fichier de document XML
		documentRoot = IbmResourceUtil.getInstance().load("sample.xml");
		
		// Imprimer un récapitulatif du bon de commande obtenu du document XML chargé
		System.out.println("Purchase order summary");
		System.out.println("  Date: " + documentRoot.getPurchaseOrder().getOrderDate());
		System.out.println("  Customer: "	+ documentRoot.getPurchaseOrder().getShipTo().getName());
		System.out.println("  Product sold: "
				+ ((ItemType)documentRoot.getPurchaseOrder().getItems().getItem().get(0)).getProductName());
		System.out.println("  Amount paid: "
				+ ((ItemType)documentRoot.getPurchaseOrder().getItems().getItem().get(0)).getUSPrice());
		System.out.println("  Comments: " + documentRoot.getPurchaseOrder().getComment());		
	}
}

Exécuter l'application Java

Pourquoi et quand exécuter cette tâche

Pour exécuter l'application Java :

Procédure

  1. Créez une classe nommée PurchaseOrderSample.java dans le package par défaut du projet SDOFromXSDExample et collez-y l'exemple de code Java précédent.
  2. Dans l'Explorateur de packages, cliquez avec le bouton droit de la souris sur PurchaseOrderSample.java et cliquez sur Exécuter en tant que > Application Java. Cela crée le fichier sérialisé sample.xml. Vous pouvez voir les instances Java reconstruites dans la vue Console.
  3. Pour voir le fichier sample.xml, cliquez sur le projet avec le bouton droit de la souris et cliquez sur Actualiser.
    Image du fichier sample.xml

Commentaires en retour