001/**
002 * Copyright 2010-2014 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.common.util.property.processor;
017
018import java.io.File;
019import java.util.Properties;
020
021import org.kuali.common.util.Mode;
022import org.kuali.common.util.OrgUtils;
023import org.kuali.common.util.PropertyUtils;
024import org.kuali.common.util.Str;
025import org.kuali.common.util.property.Constants;
026import org.springframework.util.Assert;
027
028public class HomeProcessor implements PropertyProcessor {
029
030        Mode propertyOverwriteMode = Constants.DEFAULT_PROPERTY_OVERWRITE_MODE;
031        String userHomeProperty = Constants.DEFAULT_USER_HOME_PROPERTY;
032        String fileSeparator = File.separator;
033        String hiddenDirectoryIndicator = Str.DOT;
034        String organizationGroupId;
035        String groupId;
036
037        public HomeProcessor() {
038                this(null, null);
039        }
040
041        public HomeProcessor(String organizationGroupId, String groupId) {
042                super();
043                this.organizationGroupId = organizationGroupId;
044                this.groupId = groupId;
045        }
046
047        @Override
048        public void process(Properties properties) {
049                Assert.notNull(organizationGroupId);
050                Assert.notNull(groupId);
051
052                String organizationCode = OrgUtils.getOrgCode(organizationGroupId);
053                String groupCode = OrgUtils.getGroupCode(organizationGroupId, groupId);
054
055                String organizationHomeProperty = organizationCode + Str.DOT + Constants.DEFAULT_HOME_SUFFIX;
056                String groupHomeProperty = organizationCode + Str.DOT + Constants.GROUP + Str.DOT + Constants.DEFAULT_HOME_SUFFIX;
057
058                String organizationHome = System.getProperty(userHomeProperty) + fileSeparator + hiddenDirectoryIndicator + organizationCode;
059                String groupHome = organizationHome + fileSeparator + groupCode;
060
061                PropertyUtils.addOrOverrideProperty(properties, organizationHomeProperty, organizationHome, propertyOverwriteMode);
062                PropertyUtils.addOrOverrideProperty(properties, groupHomeProperty, groupHome, propertyOverwriteMode);
063        }
064
065        public Mode getPropertyOverwriteMode() {
066                return propertyOverwriteMode;
067        }
068
069        public void setPropertyOverwriteMode(Mode propertyOverwriteMode) {
070                this.propertyOverwriteMode = propertyOverwriteMode;
071        }
072
073        public String getUserHomeProperty() {
074                return userHomeProperty;
075        }
076
077        public void setUserHomeProperty(String userHomeProperty) {
078                this.userHomeProperty = userHomeProperty;
079        }
080
081        public String getFileSeparator() {
082                return fileSeparator;
083        }
084
085        public void setFileSeparator(String fileSeparator) {
086                this.fileSeparator = fileSeparator;
087        }
088
089        public String getHiddenDirectoryIndicator() {
090                return hiddenDirectoryIndicator;
091        }
092
093        public void setHiddenDirectoryIndicator(String hiddenDirectoryIndicator) {
094                this.hiddenDirectoryIndicator = hiddenDirectoryIndicator;
095        }
096
097        public String getOrganizationGroupId() {
098                return organizationGroupId;
099        }
100
101        public void setOrganizationGroupId(String organizationGroupId) {
102                this.organizationGroupId = organizationGroupId;
103        }
104
105        public String getGroupId() {
106                return groupId;
107        }
108
109        public void setGroupId(String groupId) {
110                this.groupId = groupId;
111        }
112}