Package org.jboss.dashboard.provider

Source Code of org.jboss.dashboard.provider.AbstractDataProperty

/**
* Copyright (C) 2012 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*       http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jboss.dashboard.provider;

import org.jboss.dashboard.dataset.DataSet;
import org.jboss.dashboard.domain.Domain;
import org.jboss.dashboard.LocaleManager;
import org.apache.commons.lang.builder.HashCodeBuilder;

import java.util.*;

/**
* Base class for the implementation of custom data properties.
*/
public class AbstractDataProperty implements DataProperty {

    protected String id;
    protected Map<Locale,String> nameI18nMap;
    protected DataSet dataSet;
    protected Domain domain;

    public AbstractDataProperty() {
        nameI18nMap = new HashMap<Locale,String>();
        dataSet = null;
        domain = null;
    }

    public int hashCode() {
        return new HashCodeBuilder().append(id).toHashCode();
    }

    public boolean equals(Object obj) {
        try {
            if (obj == null) return false;
            if (obj == this) return true;
            if (id == null) return false;

            AbstractDataProperty other = (AbstractDataProperty) obj;
            return id.equals(other.id);
        }
        catch (ClassCastException e) {
            return false;
        }
    }

    public String getPropertyId() {
        return id;
    }

    public void setPropertyId(String id) {
        this.id = id;
    }

    public String getName(Locale l) {
        // Get name in specified locale.
        String name = (String) nameI18nMap.get(l);
        if (name != null) return name;

        // Get name in default locale.
        LocaleManager lm = LocaleManager.lookup();
        name = (String) lm.localize(nameI18nMap);
        if (name != null) return name;

        // Use formatter to get the name.
        DataPropertyFormatter df = DataFormatterRegistry.lookup().getPropertyFormatter(id);
        if (df != null) return df.formatName(this, l);
        return id;
    }

    public void setName(String name, Locale l) {
        nameI18nMap.put(l, name);
    }

    public DataSet getDataSet() {
        return dataSet;
    }

    public void setDataSet(DataSet dataSet) {
        this.dataSet = dataSet;
    }

    public Domain getDomain() {
        return domain;
    }

    public void setDomain(Domain domain) {
        this.domain = domain;
        if (domain != null) domain.setProperty(this);
    }

    public List getValues() {
        if (dataSet == null) return new ArrayList();
            return dataSet.getPropertyValues(this);
    }

    public Map<Locale,String> getNameI18nMap() {
        return nameI18nMap;
    }

    public void setNameI18nMap(Map<Locale,String> nameI18nMap) {
        this.nameI18nMap = nameI18nMap;
    }

    public DataProperty cloneProperty() {
        try {
            AbstractDataProperty clone = (AbstractDataProperty) super.clone();
            clone.setDomain(domain.cloneDomain());
            clone.setNameI18nMap(new HashMap<Locale,String>());
            Iterator it = nameI18nMap.keySet().iterator();
            while (it.hasNext()) {
                Locale locale = (Locale) it.next();
                String name = getName(locale);
                clone.setName(name, locale);
            }
            return clone;
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
            return null;
        }
    }
}
TOP

Related Classes of org.jboss.dashboard.provider.AbstractDataProperty

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.