#region Copyright /* * Copyright (c) 2005,2006,2007, OpenMI Association * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the OpenMI Association nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY "OpenMI Association" ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL "OpenMI Association" BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #endregion using System; using OpenMI.Standard; namespace RTCTools.OpenMI.Sdk.Spatial { /// /// Summary description for DataOperation. /// [Serializable] public class DataOperation : Backbone.DataOperation { /// /// Redecalration of the overloaded constructor from the base class. /// The redeclaration is probably needed since constructors can not be /// marked as virtual. /// public DataOperation() { } /// /// Redecalration of the overloaded constructor from the base class. /// The redeclaration is probably needed since constructors can not be /// marked as virtual. /// public DataOperation(IDataOperation source) : base(source) { } /// /// Redecalration of the overloaded constructor from the base class. /// The redeclaration is probably needed since constructors can not be /// marked as virtual. /// public DataOperation(string ID) : base(ID) { } /// /// For a given combination of inputExchangeItem, outputExchangeItem and list of dataOperation /// it is decided if the dataOperations constitutes a valid set seen from a spatial settings /// point of view. /// /// The input exchange item /// The output exchange item /// List of selected dataOperations public override bool IsValid(IInputExchangeItem inputExchangeItem, IOutputExchangeItem outputExchangeItem, IDataOperation[] SelectedDataOperations) { bool returnValue = true; bool methodAvaileble = false; ElementMapper elementMapper = new ElementMapper(); foreach (string idString in elementMapper.GetIDsForAvailableDataOperations(outputExchangeItem.ElementSet.ElementType,inputExchangeItem.ElementSet.ElementType)) { if (ID == idString) { methodAvaileble = true; } } if (!methodAvaileble) { return false; } // --- check that only one SpatialMapping dataoperation is selected. --- int numberOfSelectedSpatialMappingDataOperations = 0; foreach (IDataOperation dataOperation in SelectedDataOperations) { for (int i = 0; i < dataOperation.ArgumentCount; i++) { if (dataOperation.GetArgument(i).Key == "Type") { if (dataOperation.GetArgument(i).Value == "SpatialMapping") { numberOfSelectedSpatialMappingDataOperations++; //this counting is done to check if the same dataOpertion is added twise if (dataOperation.ID != ID) //the selected dataoperation must be this dataOperation { returnValue = false; //the selected dataoperation must be this } } } } } if (numberOfSelectedSpatialMappingDataOperations > 1) { returnValue = false; } return returnValue; } } }