1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.scxml2.model; 18 19 /** 20 * The class in this SCXML object model that corresponds to the 21 * <history> SCXML pseudo state element. 22 * 23 */ 24 public class History extends TransitionTarget { 25 26 /** 27 * Serial version UID. 28 */ 29 private static final long serialVersionUID = 1L; 30 31 /** 32 * Whether this is a shallow or deep history, the default is shallow. 33 */ 34 private boolean isDeep; 35 36 /** 37 * A conditionless transition representing the default history state 38 * and indicates the state to transition to if the parent state has 39 * never been entered before. 40 */ 41 private SimpleTransition transition; 42 43 /** 44 * Default no-args constructor 45 */ 46 public History() { 47 super(); 48 } 49 50 /** 51 * Get the transition. 52 * 53 * @return Returns the transition. 54 */ 55 public final SimpleTransition getTransition() { 56 return transition; 57 } 58 59 /** 60 * Set the transition. 61 * 62 * @param transition The transition to set. 63 */ 64 public final void setTransition(final SimpleTransition transition) { 65 if (getParent() == null) { 66 throw new IllegalStateException("History transition cannot be set before setting its parent"); 67 } 68 this.transition = transition; 69 this.transition.setParent(getParent()); 70 } 71 72 /** 73 * Is this history "deep" (as against "shallow"). 74 * 75 * @return Returns whether this is a "deep" history 76 */ 77 public final boolean isDeep() { 78 return isDeep; 79 } 80 81 /** 82 * @param type The history type, which can be "shallow" or 83 * "deep" 84 */ 85 public final void setType(final String type) { 86 if ("deep".equals(type)) { 87 isDeep = true; 88 } 89 //shallow is by default 90 } 91 92 /** 93 * @return Returns the TransitionalState parent 94 */ 95 @Override 96 public TransitionalState getParent() { 97 return (TransitionalState)super.getParent(); 98 } 99 100 /** 101 * Set the TransitionalState parent. 102 * 103 * @param parent The parent to set. 104 */ 105 public final void setParent(final TransitionalState parent) { 106 super.setParent(parent); 107 } 108 } 109