EventImpl.java :  » UML » MetaBoss » com » metaboss » sdlctools » models » impl » metabossmodel » enterprisemodel » Java Open Source

Java Open Source » UML » MetaBoss 
MetaBoss » com » metaboss » sdlctools » models » impl » metabossmodel » enterprisemodel » EventImpl.java
// THIS SOFTWARE IS PROVIDED BY SOFTARIS PTY.LTD. AND OTHER METABOSS
// CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED 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 SOFTARIS PTY.LTD.
// OR OTHER METABOSS CONTRIBUTORS 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 SOFTARIS PTY.LTD. OR OTHER METABOSS CONTRIBUTORS ARE ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
// Copyright 2000-2005  Softaris Pty.Ltd. All Rights Reserved.
package com.metaboss.sdlctools.models.impl.metabossmodel.enterprisemodel;

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import org.netbeans.mdr.storagemodel.StorableObject;

import com.metaboss.sdlctools.models.impl.metabossmodel.ModelElementImpl;
import com.metaboss.sdlctools.models.metabossmodel.datadictionarymodel.DataType;
import com.metaboss.sdlctools.models.metabossmodel.datadictionarymodel.Structure;
import com.metaboss.sdlctools.models.metabossmodel.enterprisemodel.Event;
import com.metaboss.sdlctools.models.metabossmodel.enterprisemodel.EventDataField;
import com.metaboss.sdlctools.models.metabossmodel.enterprisemodel.EventMessageField;
import com.metaboss.sdlctools.models.metabossmodel.enterprisemodel.Message;

public abstract class EventImpl extends ModelElementImpl implements Event
{
  // Required constructor
  protected EventImpl(StorableObject storable)
  {
      super(storable);
  }

  /** @return All combined structures and types used in this structure */
  public Collection getCombinedTypes()
  {
    Set lCombinedTypes = new HashSet();
    populateCombinedTypes(lCombinedTypes);
    return java.util.Collections.unmodifiableCollection(lCombinedTypes);
  }

  /** Populates passed set with all combined structures, messages and types used in this structure */
  public void populateCombinedTypes(Set pAlredyKnownTypes)
  {
    // Work on input fields
    Collection lDataFields = getDataFields();
    if (!lDataFields.isEmpty())
    {
      for (Iterator lDataFieldsIterator = lDataFields.iterator(); lDataFieldsIterator.hasNext();)
      {
        EventDataField lDataField = (EventDataField)lDataFieldsIterator.next();
        DataType lDataType = lDataField.getDataType();
        if (lDataType != null)
        {
          if (!pAlredyKnownTypes.contains(lDataType))
            pAlredyKnownTypes.add(lDataType);
        }
        else
        {
          Structure lStructureType = lDataField.getStructureType();
          if (lStructureType != null)
          {
            if (!pAlredyKnownTypes.contains(lStructureType))
            {
              // Register this structure and populate all types this structure depends on
              // note that this will recursively populate all dependent types
              pAlredyKnownTypes.add(lStructureType);
              pAlredyKnownTypes.addAll(lStructureType.getCombinedTypes());
            }
          }
        }
      }
    }
    // Work on output messages
    Collection lMessageFields = getMessageFields();
    if (!lMessageFields.isEmpty())
    {
      for (Iterator lMessageFieldsIterator = lMessageFields.iterator(); lMessageFieldsIterator.hasNext();)
      {
        EventMessageField lMessageField = (EventMessageField)lMessageFieldsIterator.next();
        Message lMessageType = lMessageField.getMessageType();
        if (!pAlredyKnownTypes.contains(lMessageType))
        {
          // Register this structure and populate all types this structure depends on
          // note that this will recursively populate all dependent types
          pAlredyKnownTypes.add(lMessageType);
          pAlredyKnownTypes.addAll(lMessageType.getCombinedTypes());
        }
      }
    }
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.