1 package nl.tno.imb.mc; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 /** 7 * The possible states of a model. 8 */ 9 public enum ModelState 10 { 11 12 /** Ready. */ 13 READY(0), 14 /** Calculating. */ 15 CALCULATING(1), 16 /** Busy. */ 17 BUSY(2), 18 /** Model is available for use. */ 19 IDLE(3), 20 /** Claim model for use in this session. */ 21 LOCK(4), 22 /** Free model to be used in other session. */ 23 UNLOCK(5), 24 /** Force termination of model. */ 25 // TODO TERMINATE(6), 26 /** Model is no longer available. */ 27 REMOVED(-1); 28 29 /** Map to translate numeric value to enum. */ 30 protected static Map<Integer, ModelState> commandMap = new HashMap<>(); 31 32 static 33 { 34 for (ModelState modelState : values()) 35 { 36 commandMap.put(modelState.getValue(), modelState); 37 } 38 } 39 40 /** 41 * Construct a ModelState. 42 * @param value int; the result of the getValue method 43 */ 44 private ModelState(final int value) 45 { 46 this.value = value; 47 } 48 49 /** 50 * Retrieve the integer value that represents this ModelState for transmission over IMB. 51 * @return int; the value that represents this ModelState in transmission over IMB 52 */ 53 public int getValue() 54 { 55 return this.value; 56 } 57 58 /** The value that represents this ModalState when being transmitted over IMB. */ 59 private final int value; 60 61 /** 62 * Lookup the ModelState that corresponds to the value. 63 * @param value int; the value to look up 64 * @return ModelState; the ModelState that corresponds to the value, or null if no ModelState with the specified value is 65 * defined 66 */ 67 protected static ModelState byValue(final int value) 68 { 69 return commandMap.get(value); 70 } 71 72 }