001/* 002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 * 009 * Contributors: 010 * Julien Anguenot 011 * Florent Guillaume 012 */ 013 014package org.nuxeo.ecm.core.lifecycle.impl; 015 016import java.util.Collection; 017import java.util.Collections; 018 019import org.nuxeo.ecm.core.lifecycle.LifeCycle; 020import org.nuxeo.ecm.core.lifecycle.LifeCycleState; 021import org.nuxeo.ecm.core.lifecycle.LifeCycleTransition; 022 023/** 024 * Life cycle implementation. 025 * 026 * @see org.nuxeo.ecm.core.lifecycle.LifeCycle 027 * @author Julien Anguenot 028 * @author Florent Guillaume 029 */ 030public class LifeCycleImpl implements LifeCycle { 031 032 private final String name; 033 034 private final String defaultInitialStateName; 035 036 private final Collection<String> initialStateNames; 037 038 private final Collection<LifeCycleState> states; 039 040 private final Collection<LifeCycleTransition> transitions; 041 042 public LifeCycleImpl(String name, String defaultInitialStateName, Collection<String> initialStateNames, 043 Collection<LifeCycleState> states, Collection<LifeCycleTransition> transitions) { 044 this.name = name; 045 this.defaultInitialStateName = defaultInitialStateName; 046 this.initialStateNames = initialStateNames; 047 this.states = states; 048 this.transitions = transitions; 049 } 050 051 @Override 052 public String getDefaultInitialStateName() { 053 return defaultInitialStateName; 054 } 055 056 @Override 057 public Collection<String> getInitialStateNames() { 058 return initialStateNames; 059 } 060 061 @Override 062 public String getName() { 063 return name; 064 } 065 066 @Override 067 public Collection<LifeCycleState> getStates() { 068 return states; 069 } 070 071 @Override 072 public LifeCycleState getStateByName(String stateName) { 073 LifeCycleState lifeCycleState = null; 074 for (LifeCycleState state : states) { 075 if (state.getName().equals(stateName)) { 076 lifeCycleState = state; 077 break; 078 } 079 } 080 return lifeCycleState; 081 } 082 083 @Override 084 public Collection<String> getAllowedStateTransitionsFrom(String stateName) { 085 LifeCycleState lifeCycleState = getStateByName(stateName); 086 if (lifeCycleState != null) { 087 return lifeCycleState.getAllowedStateTransitions(); 088 } else { 089 return Collections.emptyList(); 090 } 091 } 092 093 @Override 094 public Collection<LifeCycleTransition> getTransitions() { 095 return transitions; 096 } 097 098 @Override 099 public LifeCycleTransition getTransitionByName(String transitionName) { 100 LifeCycleTransition lifeCycleTransition = null; 101 for (LifeCycleTransition itransition : transitions) { 102 if (itransition.getName().equals(transitionName)) { 103 lifeCycleTransition = itransition; 104 break; 105 } 106 } 107 return lifeCycleTransition; 108 } 109 110}