1 /*****************************************************************************
5 * Creation date 19.10.2012
8 * @copyright OPEN CASCADE 2012
9 *****************************************************************************/
11 package org.splat.service;
13 import java.util.List;
15 import org.hibernate.criterion.Order;
16 import org.hibernate.criterion.Restrictions;
17 import org.splat.dal.bo.som.KnowledgeElementType;
18 import org.splat.dal.bo.som.ProgressState;
19 import org.splat.dal.dao.som.KnowledgeElementTypeDAO;
20 import org.springframework.transaction.annotation.Transactional;
23 * KnowledgeElementTypeService implementation for working with knowledge types.
25 * @author <a href="mailto:roman.kozlov@opencascade.com">Roman Kozlov (RKV)</a>
27 public class KnowledgeElementTypeServiceImpl implements
28 KnowledgeElementTypeService {
31 * Injected knowledge element type DAO.
33 private KnowledgeElementTypeDAO _knowledgeElementTypeDAO;
36 * Create a knowledge element type with the given name.
40 * @return the created knowledge type
42 public KnowledgeElementType createType(String name) {
43 // TODO: Check for duplicate definition
44 KnowledgeElementType kelt = new KnowledgeElementType(name);
45 getKnowledgeElementTypeDAO().create(kelt);
50 * Get all knowledge types from the database.
52 * @return the list of all knowledge types
54 public List<KnowledgeElementType> selectAllTypes() {
55 return getKnowledgeElementTypeDAO().getAll(Order.asc("rid"));
59 * Get knowledge types which have the given progress state.
63 * @return the list of found knowledge types
65 public List<KnowledgeElementType> selectTypesWhere(ProgressState state) {
66 return getKnowledgeElementTypeDAO().getFilteredList(
67 Restrictions.eq("state", state), Order.asc("rid"));
71 * Find a knowledge type by its name.
74 * the knowledge type name
75 * @return the found knowledge type
77 public KnowledgeElementType selectType(String name) {
78 return getKnowledgeElementTypeDAO().findByCriteria(
79 Restrictions.eq("name", name));
83 * Get a knowledge type by its id.
86 * the id of a knowledge type
87 * @return the found knowledge type
89 public KnowledgeElementType selectType(long index) {
90 return getKnowledgeElementTypeDAO().get(index);
94 * Approve the knowledge type.
97 * the knowledge type to approve
98 * @return true if approval succeeded
101 public boolean approve(KnowledgeElementType kelt) {
102 if (kelt.getState() != ProgressState.inCHECK)
104 kelt.setState(ProgressState.APPROVED); // The type name is supposed being localized
105 if (kelt.isSaved()) {
106 getKnowledgeElementTypeDAO().update(kelt);
112 * Reserves this type for the management of simulation contexts. For being able to get the studies in which simulation contexts are
113 * used, all study scenarios are indexed through this knowledge element type, whether they include knowledge elements or not.
116 * the knowledge type to approve
117 * @return true if approval succeeded
120 public boolean reserve(KnowledgeElementType kelt) {
121 if (kelt.getState() != ProgressState.inCHECK)
123 kelt.setState(ProgressState.inWORK);
124 if (kelt.isSaved()) {
125 getKnowledgeElementTypeDAO().update(kelt);
131 * Get the knowledgeElementTypeDAO.
133 * @return the knowledgeElementTypeDAO
135 public KnowledgeElementTypeDAO getKnowledgeElementTypeDAO() {
136 return _knowledgeElementTypeDAO;
140 * Set the knowledgeElementTypeDAO.
142 * @param knowledgeElementTypeDAO
143 * the knowledgeElementTypeDAO to set
145 public void setKnowledgeElementTypeDAO(
146 KnowledgeElementTypeDAO knowledgeElementTypeDAO) {
147 _knowledgeElementTypeDAO = knowledgeElementTypeDAO;