001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.kernel.lar;
016    
017    import aQute.bnd.annotation.ProviderType;
018    
019    import com.liferay.portal.kernel.util.HashCode;
020    import com.liferay.portal.kernel.util.HashCodeFactoryUtil;
021    import com.liferay.portal.kernel.util.StringPool;
022    import com.liferay.portal.kernel.util.Validator;
023    import com.liferay.portal.util.PortalUtil;
024    
025    /**
026     * @author Zsolt Berentey
027     */
028    @ProviderType
029    public class StagedModelType {
030    
031            public static final String REFERRER_CLASS_NAME_ALL =
032                    "referrer-class-name-all";
033    
034            public static final int REFERRER_CLASS_NAME_ID_ALL = -1;
035    
036            public StagedModelType(Class<?> clazz) {
037                    setClassName(clazz.getName());
038            }
039    
040            public StagedModelType(Class<?> clazz, Class<?> referrerClass) {
041                    setClassName(clazz.getName());
042                    setReferrerClassName(referrerClass.getName());
043            }
044    
045            public StagedModelType(long classNameId) {
046                    setClassNameId(classNameId);
047            }
048    
049            public StagedModelType(long classNameId, long referrerClassNameId) {
050                    setClassNameId(classNameId);
051                    setReferrerClassNameId(referrerClassNameId);
052            }
053    
054            public StagedModelType(String className) {
055                    setClassName(className);
056            }
057    
058            public StagedModelType(String className, String referrerClassName) {
059                    setClassName(className);
060                    setReferrerClassName(referrerClassName);
061            }
062    
063            @Override
064            public boolean equals(Object obj) {
065                    if (this == obj) {
066                            return true;
067                    }
068    
069                    if ((obj == null) || !(obj instanceof StagedModelType)) {
070                            return false;
071                    }
072    
073                    StagedModelType stagedModelType = (StagedModelType)obj;
074    
075                    if ((stagedModelType._classNameId != _classNameId) ||
076                            (stagedModelType._referrerClassNameId != _referrerClassNameId)) {
077    
078                            return false;
079                    }
080    
081                    return true;
082            }
083    
084            public String getClassName() {
085                    return _className;
086            }
087    
088            public long getClassNameId() {
089                    return _classNameId;
090            }
091    
092            public String getClassSimpleName() {
093                    return _classSimpleName;
094            }
095    
096            public String getReferrerClassName() {
097                    return _referrerClassName;
098            }
099    
100            public long getReferrerClassNameId() {
101                    return _referrerClassNameId;
102            }
103    
104            @Override
105            public int hashCode() {
106                    HashCode hashCode = HashCodeFactoryUtil.getHashCode();
107    
108                    hashCode.append(_classNameId);
109                    hashCode.append(_referrerClassNameId);
110    
111                    return hashCode.toHashCode();
112            }
113    
114            @Override
115            public String toString() {
116                    if (_referrerClassNameId <= 0) {
117                            return _className;
118                    }
119    
120                    return _className.concat(StringPool.POUND).concat(_referrerClassName);
121            }
122    
123            protected String getSimpleName(String className) {
124                    int pos = className.lastIndexOf(StringPool.PERIOD) + 1;
125    
126                    return className.substring(pos);
127            }
128    
129            protected void setClassName(String className) {
130                    _className = className;
131                    _classSimpleName = getSimpleName(_className);
132    
133                    if (Validator.isNotNull(className)) {
134                            _classNameId = PortalUtil.getClassNameId(className);
135                    }
136                    else {
137                            _classNameId = 0;
138                    }
139            }
140    
141            protected void setClassNameId(long classNameId) {
142                    if (classNameId > 0) {
143                            _className = PortalUtil.getClassName(classNameId);
144                            _classSimpleName = getSimpleName(_className);
145                    }
146                    else {
147                            _className = null;
148                            _classSimpleName = null;
149                    }
150    
151                    _classNameId = classNameId;
152            }
153    
154            protected void setClassSimpleName(String classSimpleName) {
155                    _classSimpleName = classSimpleName;
156            }
157    
158            protected void setReferrerClassName(String referrerClassName) {
159                    _referrerClassName = referrerClassName;
160    
161                    if (Validator.isNull(referrerClassName)) {
162                            _referrerClassNameId = 0;
163                    }
164                    else if (referrerClassName.equals(REFERRER_CLASS_NAME_ALL)) {
165                            _referrerClassNameId = REFERRER_CLASS_NAME_ID_ALL;
166                    }
167                    else {
168                            _referrerClassNameId = PortalUtil.getClassNameId(referrerClassName);
169                    }
170            }
171    
172            protected void setReferrerClassNameId(long referrerClassNameId) {
173                    if (referrerClassNameId > 0) {
174                            _referrerClassName = PortalUtil.getClassName(referrerClassNameId);
175                    }
176                    else {
177                            _referrerClassName = null;
178                    }
179    
180                    _referrerClassNameId = referrerClassNameId;
181            }
182    
183            private String _className;
184            private long _classNameId;
185            private String _classSimpleName;
186            private String _referrerClassName;
187            private long _referrerClassNameId;
188    
189    }