/*******************************************************************************
* Copyright (c) 2015 Inria
* 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:
* - Philippe Merle <philippe.merle@inria.fr>
*******************************************************************************/
package org.occiware.clouddesigner.occi.connector.jocci.standalone;
import org.eclipse.emf.ecore.resource.Resource.Factory.Registry;
import org.occiware.clouddesigner.occi.AttributeState;
import org.occiware.clouddesigner.occi.Configuration;
import org.occiware.clouddesigner.occi.Extension;
import org.occiware.clouddesigner.occi.Kind;
import org.occiware.clouddesigner.occi.Link;
import org.occiware.clouddesigner.occi.Mixin;
import org.occiware.clouddesigner.occi.OCCIFactory;
import org.occiware.clouddesigner.occi.OCCIPackage;
import org.occiware.clouddesigner.occi.OCCIRegistry;
import org.occiware.clouddesigner.occi.Resource;
import org.occiware.clouddesigner.occi.connector.jocci.services.Importer;
import org.occiware.clouddesigner.occi.util.OCCIResourceFactoryImpl;
// import org.occiware.clouddesigner.occi.util.OCCIResourceSet;
/**
*
* @author Philippe Merle <Philippe.Merle@inria.fr>
*/
public class Main
{
//
// This Java program runs outside of an Eclipse IDE.
// Then it is required to do some initializations manually.
//
static {
// Init EMF to dealt with OCCI files.
Registry.INSTANCE.getExtensionToFactoryMap().put("occie", new OCCIResourceFactoryImpl());
Registry.INSTANCE.getExtensionToFactoryMap().put("occic", new OCCIResourceFactoryImpl());
Registry.INSTANCE.getExtensionToFactoryMap().put("*", new OCCIResourceFactoryImpl());
// Register the OCCI package into EMF.
OCCIPackage.eINSTANCE.toString();
// Register OCCI extensions.
OCCIRegistry.getInstance().registerExtension("http://schemas.ogf.org/occi/infrastructure#", "../org.occiware.clouddesigner.occi.infrastructure/model/Infrastructure.occie");
}
public static void main(String[] args) throws Exception
{
String serverURL =
"http://rocci-server-1-1-x.herokuapp.com" // rOCCI
// "http://192.168.99.100:8080" // erocci
;
// Obtain the factory to create OCCI objects.
OCCIFactory factory = OCCIFactory.eINSTANCE;
// Create an OCCI configuration.
org.occiware.clouddesigner.occi.Configuration targetConfiguration = factory.createConfiguration();
Importer.importFromOcciServer(targetConfiguration, serverURL);
print(targetConfiguration);
// Create a new resource set.
// OCCIResourceSet resourceSet = new OCCIResourceSet();
// create a resource
// org.eclipse.emf.ecore.resource.Resource resource = resourceSet.createResource(org.eclipse.emf.common.util.URI.createURI("configuration.occic"));
// Get the first model element and cast it to the right type, in my
// example everything is hierarchical included in this first node
// resource.getContents().add(targetConfiguration);
// now save the content.
// resource.save(Collections.EMPTY_MAP);
}
/**
* Print a given OCCI configuration.
* @param configuration the given OCCI configuration.
*/
public static void print(Configuration configuration)
{
System.out.println("Configuration");
System.out.println(" - used extensions:");
for(Extension extension : configuration.getUse()) {
System.out.println(" * Extension " + extension.getName() + " " + extension.getScheme());
}
System.out.println(" - resources:");
for(Resource resource : configuration.getResources()) {
System.out.println(" * Resource id " + resource.getId());
Kind resourceKind = resource.getKind();
System.out.println(" - Kind " + resourceKind.getScheme() + resourceKind.getTerm());
System.out.println(" - mixins:");
for(Mixin mixin : resource.getMixins()) {
System.out.println(" * Mixin " + mixin.getScheme() + mixin.getTerm());
}
System.out.println(" - attributes:");
for(AttributeState as : resource.getAttributes()) {
System.out.println(" * AttributeState " + as.getName() + "=" + as.getValue());
}
System.out.println(" - links:");
for(Link link : resource.getLinks()) {
System.out.println(" * Link id " + link.getId());
Kind linkKind = link.getKind();
System.out.println(" - Kind " + linkKind.getScheme() + linkKind.getTerm());
System.out.println(" - mixins:");
for(Mixin mixin : link.getMixins()) {
System.out.println(" * Mixin " + mixin.getScheme() + mixin.getTerm());
}
System.out.println(" - attributes:");
for(AttributeState as : link.getAttributes()) {
System.out.println(" * AttributeState " + as.getName() + "=" + as.getValue());
}
Resource source = link.getSource();
System.out.println(" - source id " + source.getId());
Resource target = link.getTarget();
if(target != null) {
System.out.println(" - target id " + target.getId());
} else {
System.out.println(" - no target");
}
}
}
}
}