/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.datamanagement.browser.spi; import java.io.IOException; import java.io.ObjectInputStream; import java.io.Serializable; import de.rcenvironment.core.component.datamanagement.api.DefaultComponentHistoryDataItem; import de.rcenvironment.core.datamodel.api.TypedDatumSerializer; import de.rcenvironment.core.datamodel.api.TypedDatumService; import de.rcenvironment.core.utils.common.StringUtils; import de.rcenvironment.core.utils.incubator.ServiceRegistry; import de.rcenvironment.core.utils.incubator.ServiceRegistryAccess; /** * Implementation of {@link ComponentHistoryDataItemSubtreeBuilder} for the Parametric study component. * * @author Doreen Seider */ public abstract class DefaultHistoryDataItemSubtreeBuilder implements ComponentHistoryDataItemSubtreeBuilder { @Override public Serializable deserializeHistoryDataItem(ObjectInputStream ois) throws IOException, ClassNotFoundException { return (Serializable) ois.readObject(); } @Override public void buildInitialHistoryDataItemSubtree(Serializable historyDataItem, DMBrowserNode parentNode) { ServiceRegistryAccess registryAccess = ServiceRegistry.createAccessFor(this); TypedDatumSerializer serializer = registryAccess.getService(TypedDatumService.class).getSerializer(); if (historyDataItem instanceof String) { DefaultComponentHistoryDataItem historyData; try { historyData = DefaultComponentHistoryDataItem.fromString((String) historyDataItem, serializer); } catch (IOException e) { throw new IllegalArgumentException(e); } CommonHistoryDataItemSubtreeBuilderUtils.buildDefaultHistoryDataItemSubtrees(historyData, parentNode); } else { String exceptionInformationText = ""; if (historyDataItem != null) { exceptionInformationText = StringUtils.format("Parsing history data point failed: Expected type %s, but was of type %s", String.class.getCanonicalName(), historyDataItem.getClass().getCanonicalName()); } else { exceptionInformationText = StringUtils.format("Parsing history data point failed: Expected type %s, actual type not available.", String.class.getCanonicalName()); } throw new IllegalArgumentException(exceptionInformationText); } } }