/*************************************************************************** * Copyright (c) 2012-2013 VMware, Inc. All Rights Reserved. * Licensed 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 com.vmware.aurora.util; import java.io.File; import java.util.List; import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.commons.configuration.ConfigurationException; /** * This class provides static utility methods for common purpose. */ public final class CommonUtil { /** * Check the equality of 2 objects, just like "static Object.equals()" in C#. */ public static boolean testEquals(Object obj1, Object obj2) { // first, check if they have same reference if (obj1 == obj2) { return true; } // second, check for the null case if (obj1 == null) { return (obj2 == null); } // last, check with the overridable "equals" method return obj1.equals(obj2); } public static String combinePaths(String... paths) { if (paths == null || paths.length == 0) { throw new IllegalArgumentException(); } String path = paths[0]; for (int i = 1; i < paths.length; i++) { path = new File(path, paths[i]).getAbsolutePath(); } return path; } /** * If given condition result is false, adds given message to the list, also returns the condition result. * @param cond condition result to check * @param condFailMsgList list to add into * @param condFailMsg message string to add to the list if condition result is false * @return same as given input condition result */ public static boolean checkCond(boolean cond, List<String> condFailMsgList, String condFailMsg) { if (!cond && condFailMsgList != null) { AuAssert.check(condFailMsg != null); condFailMsgList.add(condFailMsg); } return cond; } public static PropertiesConfiguration GetPropertiesConfiguration(String filename) throws ConfigurationException { PropertiesConfiguration pconf = new PropertiesConfiguration(); // ','s are value delimiters by default. We don't want ',' delimiters for our error message and properties files // as they are not multi-valued. Turn off value delimiters // We need to do this before loading the properties pconf.setListDelimiter('\0'); pconf.load(filename); return pconf; } /** * Calculate the swap disk size. * 0 GB - 1 GB size of RAM + 0.5G * 1 GB - 2 GB 1.5 times the size of RAM * 2 GB - 8 GB Equal to the size of RAM. And if it is <3G, then 3G (that means RAM [2G,3G] all maps to 3G swap). * > 8GB 0.75 times the size of RAM. And if it is <8G, then 8G (that means RAM[8G, 10.67G] all maps to 8G swap). * @param memSize - the memory size. * @return the swap disk size. */ public static int calculateSwapDiskSize(int memSize) { if (memSize <= 1024) { return memSize + 512; } else if (memSize <= 2048) { return (int) (1.5 * memSize); } else if (memSize <= 3072) { return 3072; } else if (memSize <= 16384) { return memSize; } else { return 16384; } } }