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.portlet.exportimport.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 String REFERRER_CLASS_NAME_ANY =
035                    "referrer-class-name-any";
036    
037            public static final int REFERRER_CLASS_NAME_ID_ALL = -1;
038    
039            public static final int REFERRER_CLASS_NAME_ID_ANY = -2;
040    
041            public StagedModelType(Class<?> clazz) {
042                    setClassName(clazz.getName());
043            }
044    
045            public StagedModelType(Class<?> clazz, Class<?> referrerClass) {
046                    setClassName(clazz.getName());
047                    setReferrerClassName(referrerClass.getName());
048            }
049    
050            public StagedModelType(long classNameId) {
051                    setClassNameId(classNameId);
052            }
053    
054            public StagedModelType(long classNameId, long referrerClassNameId) {
055                    setClassNameId(classNameId);
056                    setReferrerClassNameId(referrerClassNameId);
057            }
058    
059            public StagedModelType(String className) {
060                    setClassName(className);
061            }
062    
063            public StagedModelType(String className, String referrerClassName) {
064                    setClassName(className);
065                    setReferrerClassName(referrerClassName);
066            }
067    
068            @Override
069            public boolean equals(Object obj) {
070                    if (this == obj) {
071                            return true;
072                    }
073    
074                    if ((obj == null) || !(obj instanceof StagedModelType)) {
075                            return false;
076                    }
077    
078                    StagedModelType stagedModelType = (StagedModelType)obj;
079    
080                    if ((stagedModelType._classNameId != _classNameId) ||
081                            (stagedModelType._referrerClassNameId != _referrerClassNameId)) {
082    
083                            return false;
084                    }
085    
086                    return true;
087            }
088    
089            public String getClassName() {
090                    return _className;
091            }
092    
093            public long getClassNameId() {
094                    return _classNameId;
095            }
096    
097            public String getClassSimpleName() {
098                    return _classSimpleName;
099            }
100    
101            public String getReferrerClassName() {
102                    return _referrerClassName;
103            }
104    
105            public long getReferrerClassNameId() {
106                    return _referrerClassNameId;
107            }
108    
109            @Override
110            public int hashCode() {
111                    HashCode hashCode = HashCodeFactoryUtil.getHashCode();
112    
113                    hashCode.append(_classNameId);
114                    hashCode.append(_referrerClassNameId);
115    
116                    return hashCode.toHashCode();
117            }
118    
119            @Override
120            public String toString() {
121                    if (_referrerClassNameId <= 0) {
122                            return _className;
123                    }
124    
125                    return _className.concat(StringPool.POUND).concat(_referrerClassName);
126            }
127    
128            protected String getSimpleName(String className) {
129                    if (Validator.isNull(className)) {
130                            return StringPool.BLANK;
131                    }
132    
133                    int pos = className.lastIndexOf(StringPool.PERIOD) + 1;
134    
135                    if (pos <= 0) {
136                            return className;
137                    }
138    
139                    return className.substring(pos);
140            }
141    
142            protected void setClassName(String className) {
143                    _className = className;
144                    _classSimpleName = getSimpleName(_className);
145    
146                    if (Validator.isNotNull(className)) {
147                            _classNameId = PortalUtil.getClassNameId(className);
148                    }
149                    else {
150                            _classNameId = 0;
151                    }
152            }
153    
154            protected void setClassNameId(long classNameId) {
155                    if (classNameId > 0) {
156                            _className = PortalUtil.getClassName(classNameId);
157                            _classSimpleName = getSimpleName(_className);
158                    }
159                    else {
160                            _className = null;
161                            _classSimpleName = null;
162                    }
163    
164                    _classNameId = classNameId;
165            }
166    
167            protected void setClassSimpleName(String classSimpleName) {
168                    _classSimpleName = classSimpleName;
169            }
170    
171            protected void setReferrerClassName(String referrerClassName) {
172                    _referrerClassName = referrerClassName;
173    
174                    if (Validator.isNull(referrerClassName)) {
175                            _referrerClassNameId = 0;
176                    }
177                    else if (referrerClassName.equals(REFERRER_CLASS_NAME_ALL)) {
178                            _referrerClassNameId = REFERRER_CLASS_NAME_ID_ALL;
179                    }
180                    else if (referrerClassName.equals(REFERRER_CLASS_NAME_ANY)) {
181                            _referrerClassNameId = REFERRER_CLASS_NAME_ID_ANY;
182                    }
183                    else {
184                            _referrerClassNameId = PortalUtil.getClassNameId(referrerClassName);
185                    }
186            }
187    
188            protected void setReferrerClassNameId(long referrerClassNameId) {
189                    _referrerClassNameId = referrerClassNameId;
190    
191                    if (referrerClassNameId == 0) {
192                            _referrerClassName = null;
193                    }
194                    else if (referrerClassNameId == REFERRER_CLASS_NAME_ID_ALL) {
195                            _referrerClassName = REFERRER_CLASS_NAME_ALL;
196                    }
197                    else if (referrerClassNameId == REFERRER_CLASS_NAME_ID_ANY) {
198                            _referrerClassName = REFERRER_CLASS_NAME_ANY;
199                    }
200                    else if (referrerClassNameId > 0) {
201                            _referrerClassName = PortalUtil.getClassName(referrerClassNameId);
202                    }
203            }
204    
205            private String _className;
206            private long _classNameId;
207            private String _classSimpleName;
208            private String _referrerClassName;
209            private long _referrerClassNameId;
210    
211    }