Package org.jclouds.savvis.vpdc.util

Source Code of org.jclouds.savvis.vpdc.util.Utils

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jclouds.savvis.vpdc.util;

import static com.google.common.base.Predicates.notNull;
import static com.google.common.collect.Iterables.concat;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;

import java.net.URI;
import java.util.Map;
import java.util.Set;

import org.jclouds.savvis.vpdc.domain.Link;
import org.jclouds.savvis.vpdc.domain.NetworkConfigSection;
import org.jclouds.savvis.vpdc.domain.NetworkConnectionSection;
import org.jclouds.savvis.vpdc.domain.Resource;
import org.jclouds.savvis.vpdc.domain.ResourceImpl;
import org.jclouds.savvis.vpdc.domain.VM;
import org.xml.sax.Attributes;

import com.google.common.base.Function;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableMap.Builder;

/**
*
* @author Adrian Cole
*/
public class Utils {

   public static Resource newResource(Map<String, String> attributes, String defaultType) {
      String uri = attributes.get("href");
      String type = attributes.get("type");
      // savvis org has null href
      String id = null;
      URI href = null;
      if (uri != null) {
         href = URI.create(uri);
         id = uri.substring(uri.lastIndexOf('/') + 1);
      }
      return (attributes.containsKey("rel")) ? new Link(id, attributes.get("name"), type != null ? type : defaultType,
               href, attributes.get("rel")) : new ResourceImpl(id, attributes.get("name"), type != null ? type
               : defaultType, href);
   }

   public static Set<String> getIpsFromVM(VM vm) {
      Iterable<String> ipFromConnections = transform(vm.getNetworkConnectionSections(),
               new Function<NetworkConnectionSection, String>() {
                  @Override
                  public String apply(NetworkConnectionSection input) {
                     return input.getIpAddress();
                  };
               });
      Iterable<String> ipsFromNat = concat(transform(vm.getNetworkConfigSections(),
               new Function<NetworkConfigSection, Iterable<String>>() {
                  @Override
                  public Iterable<String> apply(NetworkConfigSection input) {
                     return concat(input.getInternalToExternalNATRules().keySet(), input
                              .getInternalToExternalNATRules().values());
                  };
               }));
      return ImmutableSet.copyOf(filter(concat(ipFromConnections, ipsFromNat), notNull()));
   }

   public static Map<String, String> cleanseAttributes(Attributes in) {
      Builder<String, String> attrs = ImmutableMap.builder();
      for (int i = 0; i < in.getLength(); i++) {
         String name = in.getQName(i);
         if (name.indexOf(':') != -1)
            name = name.substring(name.indexOf(':') + 1);
         attrs.put(name, in.getValue(i));
      }
      return attrs.build();
   }

   public static String currentOrNull(StringBuilder currentText) {
      String returnVal = currentText.toString().trim();
      return returnVal.equals("") ? null : returnVal;
   }

   public static Resource newResource(Map<String, String> attributes) {
      return newResource(attributes, null);
   }
}
TOP

Related Classes of org.jclouds.savvis.vpdc.util.Utils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.