001    /**
002     * Copyright (c) 2000-2012 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.asset.model.impl;
016    
017    import com.liferay.portal.kernel.util.ArrayUtil;
018    import com.liferay.portal.kernel.util.GetterUtil;
019    import com.liferay.portal.kernel.util.StringUtil;
020    import com.liferay.portal.kernel.util.UnicodeProperties;
021    import com.liferay.portal.kernel.util.Validator;
022    
023    /**
024     * @author Brian Wing Shun Chan
025     * @author Juan Fernández
026     */
027    public class AssetVocabularyImpl extends AssetVocabularyBaseImpl {
028    
029            public AssetVocabularyImpl() {
030            }
031    
032            @Override
033            public String getSettings() {
034                    if (_settingsProperties == null) {
035                            return super.getSettings();
036                    }
037                    else {
038                            return _settingsProperties.toString();
039                    }
040            }
041    
042            public UnicodeProperties getSettingsProperties() {
043                    if (_settingsProperties == null) {
044                            _settingsProperties = new UnicodeProperties(true);
045    
046                            _settingsProperties.fastLoad(super.getSettings());
047                    }
048    
049                    return _settingsProperties;
050            }
051    
052            @Override
053            public String getTitle(String languageId) {
054                    String value = super.getTitle(languageId);
055    
056                    if (Validator.isNull(value)) {
057                            value = getName();
058                    }
059    
060                    return value;
061            }
062    
063            @Override
064            public String getTitle(String languageId, boolean useDefault) {
065                    String value = super.getTitle(languageId, useDefault);
066    
067                    if (Validator.isNull(value)) {
068                            value = getName();
069                    }
070    
071                    return value;
072            }
073    
074            public boolean isMultiValued() {
075                    if (Validator.isNull(_settingsProperties)) {
076                            _settingsProperties = getSettingsProperties();
077                    }
078    
079                    return GetterUtil.getBoolean(
080                            _settingsProperties.getProperty("multiValued"), true);
081            }
082    
083            public boolean isRequired(long classNameId) {
084                    if (Validator.isNull(_settingsProperties)) {
085                            _settingsProperties = getSettingsProperties();
086                    }
087    
088                    long[] requiredClassNameIds = StringUtil.split(
089                            _settingsProperties.getProperty("requiredClassNameIds"), 0L);
090    
091                    return ArrayUtil.contains(requiredClassNameIds, classNameId);
092            }
093    
094            @Override
095            public void setSettings(String settings) {
096                    _settingsProperties = null;
097    
098                    super.setSettings(settings);
099            }
100    
101            public void setSettingsProperties(UnicodeProperties settingsProperties) {
102                    _settingsProperties = settingsProperties;
103    
104                    super.setSettings(settingsProperties.toString());
105            }
106    
107            private UnicodeProperties _settingsProperties;
108    
109    }