All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.massisframework.massis.util.building.BuildingData Maven / Gradle / Ivy

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.massisframework.massis.util.building;

import com.eteks.sweethome3d.model.Home;
import java.io.IOException;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.massisframework.massis.util.io.storage.BuildingMetadata;
import com.massisframework.massis.util.io.storage.MassisStorage;

/**
 *
 * @author Rafael Pax
 */
public class BuildingData {

    private Home home;
    private MASSISHomeMetadataManager metadataManager;
    private MassisStorage storage;
    protected static final String SH3D_BUILDING_FILENAME;
    protected static final String METADATA_FILENAME;
    private static final Map homeData = new ConcurrentHashMap<>();

    static
    {
        ResourceBundle resource = ResourceBundle.getBundle(
                BuildingData.class.getName());
        SH3D_BUILDING_FILENAME = resource.getString("sh3dBuildingFileName");
        METADATA_FILENAME = resource.getString("metadataFileName");

    }

    public BuildingData(MassisStorage storage)
    {
        try
        {
            this.storage = storage;
            loadData();
            homeData.put(home, this);
        } catch (IOException ex)
        {
            Logger.getLogger(BuildingData.class.getName()).log(Level.SEVERE,
                    null, ex);
            throw new RuntimeException(ex);
        }

    }

    public BuildingData(Home home, BuildingMetadata metadata)
    {
        this.home = home;
        this.metadataManager = new MASSISHomeMetadataManager(home,metadata);
    }

    private BuildingData(Home home)
    {
        this.home = home;
        this.metadataManager = new MASSISHomeMetadataManager(home);
    }

    public static BuildingData getBuildingData(Home home)
    {
        if (!homeData.containsKey(home))
        {
            homeData.put(home, new BuildingData(home));
        }
        return homeData.get(home);
    }

    private void loadData() throws IOException
    {
        try
        {
            this.home = storage.loadHome();
        } catch (ClassNotFoundException ex)
        {
            Logger.getLogger(BuildingData.class.getName()).log(Level.SEVERE,
                    null, ex);
        }
        this.metadataManager = new MASSISHomeMetadataManager(this.home,
                storage.loadMetadata());
        //

    }

    public Home getHome()
    {
        return home;
    }

    public MASSISHomeMetadataManager getMetadataManager()
    {
        return metadataManager;
    }

    public void setHome(Home home)
    {
        this.home = home;
    }

    public void setMetadataManager(MASSISHomeMetadataManager metadataManager)
    {
        this.metadataManager = metadataManager;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy