001 /**
002 * Copyright (c) 2010 Yahoo! Inc. All rights reserved.
003 * Licensed under the Apache License, Version 2.0 (the "License");
004 * you may not use this file except in compliance with the License.
005 * You may obtain a copy of the License at
006 *
007 * http://www.apache.org/licenses/LICENSE-2.0
008 *
009 * Unless required by applicable law or agreed to in writing, software
010 * distributed under the License is distributed on an "AS IS" BASIS,
011 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 * See the License for the specific language governing permissions and
013 * limitations under the License. See accompanying LICENSE file.
014 */
015 package org.apache.oozie.util;
016
017 import java.util.Properties;
018 import java.util.Set;
019 import java.io.StringWriter;
020 import java.io.IOException;
021 import java.io.StringReader;
022 import java.io.Reader;
023
024 import org.apache.hadoop.conf.Configuration;
025 import org.apache.oozie.ErrorCode;
026 import org.apache.oozie.command.CommandException;
027
028 public class PropertiesUtils {
029
030 public static final String HADOOP_UGI = "hadoop.job.ugi";
031 public static final String HADOOP_USER = "user.name";
032 public static final String YEAR = "YEAR";
033 public static final String MONTH = "MONTH";
034 public static final String DAY = "DAY";
035 public static final String HOUR = "HOUR";
036 public static final String MINUTE = "MINUTE";
037 public static final String DAYS = "DAYS";
038 public static final String HOURS = "HOURS";
039 public static final String MINUTES = "MINUTES";
040 public static final String KB = "KB";
041 public static final String MB = "MB";
042 public static final String GB = "GB";
043 public static final String TB = "TB";
044 public static final String PB = "PB";
045 public static final String RECORDS = "RECORDS";
046 public static final String MAP_IN = "MAP_IN";
047 public static final String MAP_OUT = "MAP_OUT";
048 public static final String REDUCE_IN = "REDUCE_IN";
049 public static final String REDUCE_OUT = "REDUCE_OUT";
050 public static final String GROUPS = "GROUPS";
051
052 public static String propertiesToString(Properties props) {
053 ParamChecker.notNull(props, "props");
054 try {
055 StringWriter sw = new StringWriter();
056 props.store(sw, "");
057 sw.close();
058 return sw.toString();
059 }
060 catch (IOException ex) {
061 throw new RuntimeException(ex);
062 }
063 }
064
065 public static Properties stringToProperties(String str) {
066 ParamChecker.notNull(str, "str");
067 try {
068 StringReader sr = new StringReader(str);
069 Properties props = new Properties();
070 props.load(sr);
071 sr.close();
072 return props;
073 }
074 catch (IOException ex) {
075 throw new RuntimeException(ex);
076 }
077 }
078
079 public static Properties readProperties(Reader reader, int maxDataLen) throws IOException {
080 String data = IOUtils.getReaderAsString(reader, maxDataLen);
081 return stringToProperties(data);
082 }
083
084 /**
085 * Create a set from an array
086 *
087 * @param properties String array
088 * @param set String set
089 */
090 public static void createPropertySet(String[] properties, Set<String> set) {
091 ParamChecker.notNull(set, "set");
092 for (String p : properties) {
093 set.add(p);
094 }
095 }
096
097 /**
098 * Validate against DISALLOWED Properties.
099 *
100 * @param conf : configuration to check.
101 * @throws CommandException
102 */
103 public static void checkDisallowedProperties(Configuration conf, Set<String> set) throws CommandException {
104 ParamChecker.notNull(conf, "conf");
105 for (String prop : set) {
106 if (conf.get(prop) != null) {
107 throw new CommandException(ErrorCode.E0808, prop);
108 }
109 }
110 }
111
112 }