001 /*--------------------------------------------------------------------------+ 002 $Id: StateflowTransition.java 26285 2010-02-18 11:22:54Z juergens $ 003 | | 004 | Copyright 2005-2010 Technische Universitaet Muenchen | 005 | | 006 | Licensed under the Apache License, Version 2.0 (the "License"); | 007 | you may not use this file except in compliance with the License. | 008 | You may obtain a copy of the License at | 009 | | 010 | http://www.apache.org/licenses/LICENSE-2.0 | 011 | | 012 | Unless required by applicable law or agreed to in writing, software | 013 | distributed under the License is distributed on an "AS IS" BASIS, | 014 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 015 | See the License for the specific language governing permissions and | 016 | limitations under the License. | 017 +--------------------------------------------------------------------------*/ 018 package edu.tum.cs.simulink.model.stateflow; 019 020 import edu.tum.cs.commons.assertion.CCSMPre; 021 import edu.tum.cs.simulink.model.ParameterizedElement; 022 import edu.tum.cs.simulink.model.SimulinkConstants; 023 024 /** 025 * A Stateflow transition. 026 * 027 * @author deissenb 028 * @author $Author: juergens $ 029 * @version $Rev: 26285 $ 030 * @levd.rating GREEN Hash: 86F9B984B1E2B5D1C3582C094915E554 031 */ 032 public class StateflowTransition extends ParameterizedElement { 033 034 /** Source node. */ 035 private StateflowNodeBase src; 036 037 /** Destination node. */ 038 private StateflowNodeBase dst; 039 040 /** Create new default transition. */ 041 public StateflowTransition(StateflowNodeBase dst) { 042 CCSMPre.isTrue(dst != null, "Destination may not be null."); 043 this.dst = dst; 044 src = null; 045 this.dst.addInTransition(this); 046 } 047 048 /** Create new transition. */ 049 public StateflowTransition(StateflowNodeBase src, StateflowNodeBase dst) { 050 CCSMPre.isTrue(src != null && dst != null, 051 "Neither src nor dst may be null."); 052 this.src = src; 053 this.dst = dst; 054 this.src.addOutTransition(this); 055 this.dst.addInTransition(this); 056 } 057 058 /** Get destination node. */ 059 public StateflowNodeBase getDst() { 060 return dst; 061 } 062 063 /** Get label. */ 064 public String getLabel() { 065 return getParameter(SimulinkConstants.PARAM_labelString); 066 } 067 068 /** Get source node. This may be null to indicate default transitions. */ 069 public StateflowNodeBase getSrc() { 070 return src; 071 } 072 073 /** Remove this transition from the model. */ 074 public void remove() { 075 if (src != null) { 076 src.removeOutTransition(this); 077 src = null; 078 } 079 dst.removeInTransition(this); 080 dst = null; 081 } 082 083 /** toString() includes source and destination. */ 084 @Override 085 public String toString() { 086 if (src == null) { 087 return "-> " + dst; 088 } 089 return src + " -> " + dst; 090 } 091 }