001    /*
002     * Copyright 2011 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     */
016    package org.kuali.kfs.coa.businessobject;
017    
018    import java.lang.reflect.InvocationTargetException;
019    import java.util.LinkedHashMap;
020    
021    import org.apache.commons.beanutils.PropertyUtils;
022    import org.kuali.kfs.sys.KFSConstants;
023    import org.kuali.kfs.sys.KFSPropertyConstants;
024    import org.kuali.rice.kns.bo.GlobalBusinessObjectDetailBase;
025    
026    /**
027     * An organization which is related to a Global Organization Reversion Detail.
028     */
029    public class OrganizationReversionGlobalOrganization extends GlobalBusinessObjectDetailBase {
030        protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(OrganizationReversionGlobalOrganization.class);
031        private String documentNumber;
032        private String chartOfAccountsCode;
033        private String organizationCode;
034    
035        private Chart chartOfAccounts;
036        private Organization organization;
037    
038        /**
039         * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
040         */
041        @Override
042        protected LinkedHashMap toStringMapper() {
043            LinkedHashMap stringMapper = new LinkedHashMap();
044            stringMapper.put(KFSPropertyConstants.DOCUMENT_NUMBER, this.documentNumber);
045            stringMapper.put(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE, this.chartOfAccountsCode);
046            stringMapper.put(KFSPropertyConstants.ORGANIZATION_CODE, this.organizationCode);
047            return stringMapper;
048        }
049    
050        /**
051         * Constructs a OrganizationReversionGlobalOrganization
052         */
053        public OrganizationReversionGlobalOrganization() {
054            super();
055        }
056    
057        /**
058         * Gets the documentNumber attribute.
059         * 
060         * @return Returns the documentNumber.
061         */
062        public String getDocumentNumber() {
063            return documentNumber;
064        }
065    
066        /**
067         * Sets the documentNumber attribute value.
068         * 
069         * @param documentNumber The documentNumber to set.
070         */
071        public void setDocumentNumber(String documentNumber) {
072            this.documentNumber = documentNumber;
073        }
074    
075        /**
076         * Gets the chartOfAccounts attribute.
077         * 
078         * @return Returns the chartOfAccounts.
079         */
080        public Chart getChartOfAccounts() {
081            return chartOfAccounts;
082        }
083    
084        /**
085         * Sets the chartOfAccounts attribute value.
086         * 
087         * @param chartOfAccounts The chartOfAccounts to set.
088         * @deprecated
089         */
090        public void setChartOfAccounts(Chart chartOfAccounts) {
091            this.chartOfAccounts = chartOfAccounts;
092        }
093    
094        /**
095         * Gets the chartOfAccountsCode attribute.
096         * 
097         * @return Returns the chartOfAccountsCode.
098         */
099        public String getChartOfAccountsCode() {
100            return chartOfAccountsCode;
101        }
102    
103        /**
104         * Sets the chartOfAccountsCode attribute value.
105         * 
106         * @param chartOfAccountsCode The chartOfAccountsCode to set.
107         */
108        public void setChartOfAccountsCode(String chartOfAccountsCode) {
109            this.chartOfAccountsCode = chartOfAccountsCode;
110        }
111    
112        /**
113         * Gets the organization attribute.
114         * 
115         * @return Returns the organization.
116         */
117        public Organization getOrganization() {
118            return organization;
119        }
120    
121        /**
122         * Sets the organization attribute value.
123         * 
124         * @param organization The organization to set.
125         * @deprecated
126         */
127        public void setOrganization(Organization organization) {
128            this.organization = organization;
129        }
130    
131        /**
132         * Gets the organizationCode attribute.
133         * 
134         * @return Returns the organizationCode.
135         */
136        public String getOrganizationCode() {
137            return organizationCode;
138        }
139    
140        /**
141         * Sets the organizationCode attribute value.
142         * 
143         * @param organizationCode The organizationCode to set.
144         */
145        public void setOrganizationCode(String organizationCode) {
146            this.organizationCode = organizationCode;
147        }
148    
149        /**
150         * This utility method converts the name of a property into a string suitable for being part of a locking representation.
151         * 
152         * @param keyName the name of the property to convert to a locking representation
153         * @return a part of a locking representation
154         */
155        private String convertKeyToLockingRepresentation(String keyName) {
156            StringBuffer sb = new StringBuffer();
157            sb.append(keyName);
158            sb.append(KFSConstants.Maintenance.AFTER_FIELDNAME_DELIM);
159            String keyValue = "";
160            try {
161                Object keyValueObj = PropertyUtils.getProperty(this, keyName);
162                if (keyValueObj != null) {
163                    keyValue = keyValueObj.toString();
164                }
165            }
166            catch (IllegalAccessException iae) {
167                LOG.info("Illegal access exception while attempting to read property " + keyName, iae);
168            }
169            catch (InvocationTargetException ite) {
170                LOG.info("Illegal Target Exception while attempting to read property " + keyName, ite);
171            }
172            catch (NoSuchMethodException nsme) {
173                LOG.info("There is no such method to read property " + keyName + " in this class.", nsme);
174            }
175            finally {
176                sb.append(keyValue);
177            }
178            sb.append(KFSConstants.Maintenance.AFTER_VALUE_DELIM);
179            return sb.toString();
180        }
181    
182        /**
183         * @see java.lang.Object#hashCode()
184         */
185        @Override
186        public int hashCode() {
187            final int PRIME = 31;
188            int result = 1;
189            result = PRIME * result + ((this.getChartOfAccountsCode() == null) ? 0 : this.getChartOfAccountsCode().hashCode());
190            result = PRIME * result + ((this.getDocumentNumber() == null) ? 0 : this.getDocumentNumber().hashCode());
191            result = PRIME * result + ((this.getOrganizationCode() == null) ? 0 : this.getOrganizationCode().hashCode());
192            return result;
193        }
194    
195        /**
196         * @see java.lang.Object#equals(java.lang.Object)
197         */
198        @Override
199        public boolean equals(Object obj) {
200            if (this == obj)
201                return true;
202            if (obj == null)
203                return false;
204            if (getClass() != obj.getClass())
205                return false;
206            final OrganizationReversionGlobalOrganization other = (OrganizationReversionGlobalOrganization) obj;
207            if (this.getChartOfAccountsCode() == null) {
208                if (other.getChartOfAccountsCode() != null)
209                    return false;
210            }
211            else if (!this.getChartOfAccountsCode().equals(other.getChartOfAccountsCode()))
212                return false;
213            if (this.getDocumentNumber() == null) {
214                if (other.getDocumentNumber() != null)
215                    return false;
216            }
217            else if (!this.getDocumentNumber().equals(other.getDocumentNumber()))
218                return false;
219            if (this.getOrganizationCode() == null) {
220                if (other.getOrganizationCode() != null)
221                    return false;
222            }
223            else if (!this.getOrganizationCode().equals(other.getOrganizationCode()))
224                return false;
225            return true;
226        }
227    
228    }