/* * Copyright (c) 2011, 2012 Eike Stepper (Berlin, Germany) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Eike Stepper - initial API and implementation */ package org.eclipse.emf.cdo.examples; import org.eclipse.emf.cdo.examples.company.Category; import org.eclipse.emf.cdo.examples.company.CompanyFactory; import org.eclipse.emf.cdo.examples.company.Product; import org.eclipse.emf.cdo.net4j.CDONet4jSessionConfiguration; import org.eclipse.emf.cdo.net4j.CDONet4jUtil; import org.eclipse.emf.cdo.server.CDOServerUtil; import org.eclipse.emf.cdo.server.IRepository; import org.eclipse.emf.cdo.server.IStore; import org.eclipse.emf.cdo.server.mem.MEMStoreUtil; import org.eclipse.emf.cdo.server.net4j.CDONet4jServerUtil; import org.eclipse.emf.cdo.session.CDOSession; import org.eclipse.emf.cdo.transaction.CDOTransaction; import org.eclipse.emf.cdo.util.CommitException; import org.eclipse.net4j.Net4jUtil; import org.eclipse.net4j.connector.IConnector; import org.eclipse.net4j.jvm.JVMUtil; import org.eclipse.net4j.util.container.ContainerUtil; import org.eclipse.net4j.util.container.IManagedContainer; import org.eclipse.net4j.util.om.OMPlatform; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import java.util.HashMap; import java.util.Map; /** * @author Eike Stepper * @since 4.0 */ public class ImportXML { private static final String REPOSITORY_NAME = "repo1"; public static void main(String[] args) throws CommitException { // Turn on tracing OMPlatform.INSTANCE.setDebugging(true); // Prepare the standalone infra structure (not needed when running inside Eclipse) IManagedContainer container = ContainerUtil.createContainer(); // Create a wiring container Net4jUtil.prepareContainer(container); // Prepare the Net4j kernel JVMUtil.prepareContainer(container); // Prepare the JVM transport CDONet4jServerUtil.prepareContainer(container); // Prepare the CDO server CDONet4jUtil.prepareContainer(container); // Prepare the CDO client container.activate(); // Start the transport and create a repository JVMUtil.getAcceptor(container, "default"); // Start the JVM transport CDOServerUtil.addRepository(container, createRepository()); // Start a CDO repository // Establish a communications connection and open a session with the repository IConnector connector = JVMUtil.getConnector(container, "default"); // Open a JVM connection CDOSession session = openSession(connector);// Open a CDO session CDOTransaction transaction = session.openTransaction();// Open a CDO transaction Resource resource = transaction.createResource("/my/big/resource");// Create a new EMF resource // Work normally with the EMF resource EObject inputModel = getInputModel(); resource.getContents().add(inputModel); transaction.commit(); session.close(); connector.close(); } private static IRepository createRepository() { Map<String, String> props = new HashMap<String, String>(); return CDOServerUtil.createRepository(REPOSITORY_NAME, createStore(), props); } private static IStore createStore() { // You might want to create an IDBStore here instead if memory is an issue! return MEMStoreUtil.createMEMStore(); } private static EObject getInputModel() { Category cat1 = CompanyFactory.eINSTANCE.createCategory(); cat1.setName("CAT1"); Category cat2 = CompanyFactory.eINSTANCE.createCategory(); cat2.setName("CAT2"); cat1.getCategories().add(cat2); Product p1 = CompanyFactory.eINSTANCE.createProduct(); p1.setName("P1"); cat1.getProducts().add(p1); Product p2 = CompanyFactory.eINSTANCE.createProduct(); p2.setName("P2"); cat1.getProducts().add(p2); Product p3 = CompanyFactory.eINSTANCE.createProduct(); p3.setName("P3"); cat2.getProducts().add(p3); return cat1; } protected static CDOSession openSession(IConnector connector) { CDONet4jSessionConfiguration configuration = CDONet4jUtil.createNet4jSessionConfiguration(); configuration.setConnector(connector); configuration.setRepositoryName(REPOSITORY_NAME); return configuration.openNet4jSession(); } }