import org.splat.dal.bo.som.ProjectElement;
import org.splat.som.Step;
+import org.springframework.transaction.annotation.Transactional;
/**
* Project element service interface.
+ *
* @author RKV
*
*/
/**
* Get the first activity of the project element.
- * @param elem a study or a scenario
+ *
+ * @param elem
+ * a study or a scenario
* @return the first activity (step) of the project element
*/
public Step getFirstStep(ProjectElement elem);
/**
* Get activities of the project element.
- * @param elem a study or a scenario
+ *
+ * @param elem
+ * a study or a scenario
* @return array of activities (steps).
*/
public Step[] getSteps(ProjectElement elem);
+
+ /**
+ * Refreshes the internal data potentially out-of-date. This function needs to be called when Publication objects are added to this
+ * Project Element before being saved. The reason is, as saving a persistent object changes its hashcode, hashed data need to be rebuilt
+ * after saving for making functions based on this hashcode such as remove(), working.
+ *
+ * @param elem
+ * the project element to refresh
+ */
+ public void refresh(ProjectElement elem);
}