blob: bca8e9cd84eae9725ef3fe23f79c9034a4ef3d51 [file] [log] [blame]
/*
* 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.digitalocean.compute.util;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import org.jclouds.digitalocean.domain.Region;
import org.jclouds.domain.Location;
/**
* Utility class to encode and decode the region id and name in a {@link Location}.
*
* @author Ignasi Barrera
*/
public class LocationNamingUtils {
/**
* Extracts the region id for the given location.
*
* @param location The location to extract the region id from.
* @return The id of the region.
*/
public static int extractRegionId(Location location) {
checkNotNull(location, "location cannot be null");
String regionIdAndName = location.getDescription();
int index = regionIdAndName.indexOf('/');
checkArgument(index >= 0, "location description should be in the form 'regionId/regionName' but was: %s",
regionIdAndName);
return Integer.parseInt(regionIdAndName.substring(0, index));
}
/**
* Extracts the region name for the given location.
*
* @param location The location to extract the region name from.
* @return The name of the region.
*/
public static String extractRegionName(Location location) {
checkNotNull(location, "location cannot be null");
String regionIdAndName = location.getDescription();
int index = regionIdAndName.indexOf('/');
checkArgument(index >= 0, "location description should be in the form 'regionId/regionName' but was: %s",
regionIdAndName);
return regionIdAndName.substring(index + 1);
}
/**
* Encodes the id and name of the given region into a String so it can be populated in a {@link Location} object.
*
* @param region The region to encode.
* @return The encoded id and name for the given region.
*/
public static String encodeRegionIdAndName(Region region) {
checkNotNull(region, "region cannot be null");
return region.getId() + "/" + region.getName();
}
}