1 /*****************************************************************************
5 * Creation date 19.10.2012
8 * @copyright OPEN CASCADE 2012-2015
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.common.properties.MessageKeyEnum;
18 import org.splat.dal.bo.som.KnowledgeElementType;
19 import org.splat.dal.bo.som.ProgressState;
20 import org.splat.dal.dao.som.KnowledgeElementTypeDAO;
21 import org.splat.log.AppLogger;
22 import org.springframework.transaction.annotation.Transactional;
25 * KnowledgeElementTypeService implementation for working with knowledge types.
27 * @author <a href="mailto:roman.kozlov@opencascade.com">Roman Kozlov (RKV)</a>
29 public class KnowledgeElementTypeServiceImpl implements
30 KnowledgeElementTypeService {
33 * The logger for the service.
35 public final static AppLogger LOG = AppLogger
36 .getLogger(KnowledgeElementTypeServiceImpl.class);
38 * Injected knowledge element type DAO.
40 private KnowledgeElementTypeDAO _knowledgeElementTypeDAO;
43 * Create a knowledge element type with the given name.
47 * @return the created knowledge type
50 public KnowledgeElementType createType(final String name) {
51 KnowledgeElementType kelt = getKnowledgeElementTypeDAO()
52 .findByCriteria(Restrictions.eq("name", name));
54 kelt = new KnowledgeElementType(name);
55 getKnowledgeElementTypeDAO().create(kelt);
57 LOG.info(MessageKeyEnum.KNT_000001.toString(), name);
63 * Get all knowledge types from the database.
65 * @return the list of all knowledge types
68 public List<KnowledgeElementType> selectAllTypes() {
69 return getKnowledgeElementTypeDAO().getAll(Order.asc("rid"));
73 * Get knowledge types which have the given progress state.
77 * @return the list of found knowledge types
80 public List<KnowledgeElementType> selectTypesWhere(final ProgressState state) {
81 return getKnowledgeElementTypeDAO().getFilteredList(
82 Restrictions.eq("state", state), Order.asc("rid"));
86 * Find a knowledge type by its name.
89 * the knowledge type name
90 * @return the found knowledge type
93 public KnowledgeElementType selectType(final String name) {
94 return getKnowledgeElementTypeDAO().findByCriteria(
95 Restrictions.eq("name", name));
99 * Get a knowledge type by its id.
102 * the id of a knowledge type
103 * @return the found knowledge type
106 public KnowledgeElementType selectType(final long index) {
107 return getKnowledgeElementTypeDAO().get(index);
111 * Approve the knowledge type.
114 * the knowledge type to approve
115 * @return true if approval succeeded
118 public boolean approve(final KnowledgeElementType kelt) {
119 boolean res = (kelt.getState() == ProgressState.inCHECK);
121 kelt.setState(ProgressState.APPROVED); // The type name is supposed being localized
122 if (kelt.isSaved()) {
123 getKnowledgeElementTypeDAO().update(kelt);
130 * Reserves this type for the management of simulation contexts. For being able to get the studies in which simulation contexts are
131 * used, all study scenarios are indexed through this knowledge element type, whether they include knowledge elements or not.
134 * the knowledge type to approve
135 * @return true if approval succeeded
138 public boolean reserve(final KnowledgeElementType kelt) {
139 boolean res = (kelt.getState() == ProgressState.inCHECK);
141 kelt.setState(ProgressState.inWORK);
142 if (kelt.isSaved()) {
143 getKnowledgeElementTypeDAO().update(kelt);
150 * Get the knowledgeElementTypeDAO.
152 * @return the knowledgeElementTypeDAO
154 public KnowledgeElementTypeDAO getKnowledgeElementTypeDAO() {
155 return _knowledgeElementTypeDAO;
159 * Set the knowledgeElementTypeDAO.
161 * @param knowledgeElementTypeDAO
162 * the knowledgeElementTypeDAO to set
164 public void setKnowledgeElementTypeDAO(
165 final KnowledgeElementTypeDAO knowledgeElementTypeDAO) {
166 _knowledgeElementTypeDAO = knowledgeElementTypeDAO;