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.

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());
}
}
