1 package org.kuali.common.util.property.processor; 2 3 import java.util.List; 4 import java.util.Properties; 5 6 import org.kuali.common.util.Mode; 7 import org.kuali.common.util.PropertyUtils; 8 import org.kuali.common.util.property.Constants; 9 import org.kuali.common.util.property.GlobalPropertiesMode; 10 11 public class GlobalOverrideProcessor implements PropertyProcessor { 12 13 GlobalPropertiesMode globalPropertiesMode; 14 Mode propertyOverwriteMode; 15 16 public GlobalOverrideProcessor() { 17 this(GlobalPropertiesMode.BOTH, Constants.DEFAULT_PROPERTY_OVERWRITE_MODE); 18 } 19 20 public GlobalOverrideProcessor(GlobalPropertiesMode globalPropertiesMode) { 21 this(globalPropertiesMode, Constants.DEFAULT_PROPERTY_OVERWRITE_MODE); 22 } 23 24 public GlobalOverrideProcessor(GlobalPropertiesMode globalPropertiesMode, Mode propertyOverwriteMode) { 25 super(); 26 this.globalPropertiesMode = globalPropertiesMode; 27 this.propertyOverwriteMode = propertyOverwriteMode; 28 } 29 30 @Override 31 public void process(Properties properties) { 32 Properties global = PropertyUtils.getProperties(properties, globalPropertiesMode); 33 List<String> keys = PropertyUtils.getSortedKeys(properties); 34 for (String key : keys) { 35 String newValue = global.getProperty(key); 36 PropertyUtils.addOrOverrideProperty(properties, key, newValue, propertyOverwriteMode); 37 } 38 } 39 40 public GlobalPropertiesMode getGlobalPropertiesMode() { 41 return globalPropertiesMode; 42 } 43 44 public void setGlobalPropertiesMode(GlobalPropertiesMode globalPropertiesMode) { 45 this.globalPropertiesMode = globalPropertiesMode; 46 } 47 48 public Mode getPropertyOverwriteMode() { 49 return propertyOverwriteMode; 50 } 51 52 public void setPropertyOverwriteMode(Mode propertyOverwriteMode) { 53 this.propertyOverwriteMode = propertyOverwriteMode; 54 } 55 56 }