/******************************************************************************* * Copyright (c) 2015-16 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.util; import java.io.PrintStream; import org.eclipse.emf.ecore.EDataType; import org.occiware.clouddesigner.occi.Action; import org.occiware.clouddesigner.occi.Attribute; import org.occiware.clouddesigner.occi.AttributeState; import org.occiware.clouddesigner.occi.Configuration; import org.occiware.clouddesigner.occi.Entity; 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.Resource; /** * This class provides utility methods for printing OCCI extensions and configurations. * * @author Philippe Merle - Inria */ public class OcciPrinter { /** * Print a given OCCI extension. * @param ps the print stream where to print the given OCCI extension. * @param extension the given OCCI extension. */ public static void print(PrintStream ps, Extension extension) { ps.println("Extension"); ps.println(" - name: " + extension.getName()); ps.println(" - scheme: " + extension.getScheme()); ps.println(" - import extensions:"); for(Extension importExtension : extension.getImport()) { ps.println(" * Extension " + importExtension.getScheme() + importExtension.getName()); } ps.println(" - kinds:"); for(Kind kind : extension.getKinds()) { ps.println(" * Kind"); ps.println(" - term: " + kind.getTerm()); ps.println(" - scheme: " + kind.getScheme()); ps.println(" - title: " + kind.getTitle()); Kind parent = kind.getParent(); if(parent != null) { ps.println(" - parent: " + parent.getScheme() + parent.getTerm()); } else { ps.println(" - no parent"); } ps.println(" - attributes:"); for(Attribute attribute : kind.getAttributes()) { ps.println(" * Attribute"); ps.println(" - name: " + attribute.getName()); ps.println(" - description: " + attribute.getDescription()); ps.println(" - mutable: " + attribute.isMutable()); ps.println(" - required: " + attribute.isRequired()); ps.println(" - type: " + attribute.getType().getName()); ps.println(" - default: " + attribute.getDefault()); } ps.println(" - actions:"); for(Action action : kind.getActions()) { ps.println(" * Action"); ps.println(" - term: " + action.getTerm()); ps.println(" - scheme: " + action.getScheme()); ps.println(" - title: " + action.getTitle()); } ps.println(" - entities:"); for(Entity entity : kind.getEntities()) { ps.println(" * Entity id " + entity.getId()); } } ps.println(" - mixins:"); for(Mixin mixin : extension.getMixins()) { ps.println(" * Mixin"); ps.println(" - term: " + mixin.getTerm()); ps.println(" - scheme: " + mixin.getScheme()); ps.println(" - title: " + mixin.getTitle()); ps.println(" - depends:"); for(Mixin depend : mixin.getDepends()) { ps.println(" * Mixin " + depend.getScheme() + depend.getTerm()); } ps.println(" - applies:"); for(Kind apply : mixin.getApplies()) { ps.println(" * Kind " + apply.getScheme() + apply.getTerm()); } ps.println(" - attributes:"); for(Attribute attribute : mixin.getAttributes()) { ps.println(" * Attribute"); ps.println(" - name: " + attribute.getName()); ps.println(" - description: " + attribute.getDescription()); ps.println(" - mutable: " + attribute.isMutable()); ps.println(" - required: " + attribute.isRequired()); ps.println(" - type: " + attribute.getType().getName()); ps.println(" - default: " + attribute.getDefault()); } ps.println(" - actions:"); for(Action action : mixin.getActions()) { ps.println(" * Action"); ps.println(" - term: " + action.getTerm()); ps.println(" - scheme: " + action.getScheme()); ps.println(" - title: " + action.getTitle()); } ps.println(" - entities:"); for(Entity entity : mixin.getEntities()) { ps.println(" * Entity id " + entity.getId()); } } ps.println(" - types:"); for(EDataType type : extension.getTypes()) { ps.println(" * EDataType " + type.getName()); } } /** * Print a given OCCI configuration. * @param ps the print stream where to print the given OCCI configuration. * @param configuration the given OCCI configuration. */ public static void print(PrintStream ps, Configuration configuration) { ps.println("Configuration"); ps.println(" - used extensions:"); for(Extension extension : configuration.getUse()) { ps.println(" * Extension " + extension.getScheme() + extension.getName()); } ps.println(" - resources:"); for(Resource resource : configuration.getResources()) { ps.println(" * Resource id " + resource.getId()); Kind resourceKind = resource.getKind(); ps.println(" - Kind " + resourceKind.getScheme() + resourceKind.getTerm()); ps.println(" - mixins:"); for(Mixin mixin : resource.getMixins()) { ps.println(" * Mixin " + mixin.getScheme() + mixin.getTerm()); } ps.println(" - attributes:"); for(AttributeState as : resource.getAttributes()) { ps.println(" * AttributeState " + as.getName() + "=" + as.getValue()); } ps.println(" - links:"); for(Link link : resource.getLinks()) { ps.println(" * Link id " + link.getId()); Kind linkKind = link.getKind(); ps.println(" - Kind " + linkKind.getScheme() + linkKind.getTerm()); ps.println(" - mixins:"); for(Mixin mixin : link.getMixins()) { ps.println(" * Mixin " + mixin.getScheme() + mixin.getTerm()); } ps.println(" - attributes:"); for(AttributeState as : link.getAttributes()) { ps.println(" * AttributeState " + as.getName() + "=" + as.getValue()); } Resource source = link.getSource(); ps.println(" - source id " + source.getId()); Resource target = link.getTarget(); if(target != null) { ps.println(" - target id " + target.getId()); } else { ps.println(" - no target"); } } } } }