]> SALOME platform Git repositories - tools/siman.git/commitdiff
Salome HOME
Adding a knowledge is fixed.
authorrkv <rkv@opencascade.com>
Thu, 25 Oct 2012 06:39:01 +0000 (06:39 +0000)
committerrkv <rkv@opencascade.com>
Thu, 25 Oct 2012 06:39:01 +0000 (06:39 +0000)
Workspace/Siman-Common/src/org/splat/dal/bo/som/Scenario.java
Workspace/Siman-Common/src/org/splat/service/ScenarioServiceImpl.java
Workspace/Siman-Common/src/spring/businessServiceContext.xml
Workspace/Siman/src/org/splat/simer/EditKnowledgeElementAction.java

index f8f475cc127a96af530304192d8b563eb1ced5e9..f473093bc1395c7d0fe114a03cf0a5fa8e645060 100644 (file)
@@ -68,7 +68,6 @@ public class Scenario extends ProjectElement {
         * Fields initialization class.
         */
        public static class Properties extends Persistent.Properties {
-               // ------------------------------------------------------------
                private Study owner = null;
                private Scenario previous = null;
                private Step base = null;
@@ -163,7 +162,6 @@ public class Scenario extends ProjectElement {
 
        // Database fetch constructor
        protected Scenario() {
-               // ---------------------
                known = null;
                knowl = null;
                ucase = null;
@@ -172,7 +170,6 @@ public class Scenario extends ProjectElement {
        // Internal constructor
        public Scenario(Properties sprop) throws MissedPropertyException,
                        InvalidPropertyException, MultiplyDefinedException {
-               // -------------------------------------
                super(sprop); // Throws one of the above exception if not valid
                owner = sprop.owner;
                sid = 0;
@@ -209,7 +206,6 @@ public class Scenario extends ProjectElement {
        // ==============================================================================================================================
 
        public List<KnowledgeElement> getAllKnowledgeElements() {
-               // --------------------------------------------------------
                if (knowl == null) {
                        knowl = new Vector<KnowledgeElement>(kelms.size());
                        for (Iterator<KnowledgeElement> i = kelms.iterator(); i.hasNext();) {
@@ -224,20 +220,18 @@ public class Scenario extends ProjectElement {
        }
 
        public KnowledgeElement getKnowledgeElement(long l) {
-               // -------------------------------------------------------
                for (Iterator<KnowledgeElement> i = kelms.iterator(); i.hasNext();) {
                        KnowledgeElement mykelm = i.next();
-                       if (mykelm.getIndex() == l)
+                       if (l == mykelm.getIndex()) {
                                return mykelm;
+                       }
                }
                return null;
        }
 
-       public List<KnowledgeElement> getKnowledgeElementsOf(
+/* RKV: Not used
+ *     public List<KnowledgeElement> getKnowledgeElementsOf(
                        KnowledgeElementType type) {
-               // --------------------------------------------------------------------------------
-               if (kelms.isEmpty())
-                       return new Vector<KnowledgeElement>(); // Smarter than returning null
                if (known == null)
                        known = new HashMap<Long, List<KnowledgeElement>>();
 
@@ -254,7 +248,7 @@ public class Scenario extends ProjectElement {
                }
                return listype; // No protection against this object corruption as it would not corrupt the database
        }
-
+*/
        public Study getOwnerStudy() {
                // -----------------------------
                return owner;
@@ -326,7 +320,8 @@ public class Scenario extends ProjectElement {
         * 
         * @return the known
         */
-       public HashMap<Long, List<KnowledgeElement>> getKnowledgeByType() {
+/* RKV: Not used
+ *     public HashMap<Long, List<KnowledgeElement>> getKnowledgeByType() {
                return known;
        }
-}
\ No newline at end of file
+*/}
\ No newline at end of file
index fb6629528bb9a5639f8ce93a36286d3e6133e5ef..0f8ea31442a6bdb4bea60d485e10fe4d119b7882 100644 (file)
@@ -22,7 +22,9 @@ import org.splat.dal.bo.som.Publication;
 import org.splat.dal.bo.som.Scenario;
 import org.splat.dal.bo.som.SimulationContext;
 import org.splat.dal.bo.som.Study;
+import org.splat.dal.dao.kernel.UserDAO;
 import org.splat.dal.dao.som.KnowledgeElementDAO;
+import org.splat.dal.dao.som.KnowledgeElementTypeDAO;
 import org.splat.dal.dao.som.ScenarioDAO;
 import org.splat.dal.dao.som.StudyDAO;
 import org.splat.kernel.InvalidPropertyException;
@@ -89,6 +91,16 @@ public class ScenarioServiceImpl implements ScenarioService {
         */
        private UserService _userService;
 
+       /**
+        * Injected user DAO.
+        */
+       private UserDAO _userDAO;
+
+       /**
+        * Injected knowledge element type DAO.
+        */
+       private KnowledgeElementTypeDAO _knowledgeElementTypeDAO;
+
        /**
         * Get the projectElementService.
         * 
@@ -154,37 +166,41 @@ public class ScenarioServiceImpl implements ScenarioService {
         *      org.splat.dal.bo.som.KnowledgeElement.Properties)
         */
        @Transactional
-       public KnowledgeElement addKnowledgeElement(Scenario aScenario,
+       public KnowledgeElement addKnowledgeElement(Scenario aScenarioDTO,
                        KnowledgeElement.Properties kprop) throws MissedPropertyException,
                        InvalidPropertyException, MultiplyDefinedException {
                KnowledgeElement kelm = null;
                try {
-                       // Attach the detached scenario to the new hibernate session.
-                       aScenario = getScenarioDAO().merge(aScenario); // RKV
+                       long aScenarioId = aScenarioDTO.getIndex();
+                       if (logger.isDebugEnabled()) {
+                               logger.debug("Add a knowledge element to the scenario #"
+                                               + aScenarioId);
+                       }
+                       // Get the persistent scenario.
+                       Scenario aScenario = getScenarioDAO().get(aScenarioId);
+                       // Get persistent objects for creating a new knowledge.
+                       //TODO: Actions must use DTO instead of persistent objects.
+                       getUserDAO().merge(kprop.getAuthor());
+                       getKnowledgeElementTypeDAO().merge(kprop.getType());
+                       // Create a transient knowledge element related to the given scenario.
                        kelm = new KnowledgeElement(kprop.setOwnerScenario(aScenario));
+                       // Save the new knowledge in the database.
                        getKnowledgeElementDAO().create(kelm);
-                       // RKV: commented because of BatchUpdateException during creation of a new study: session.flush(); //RKV
-                       // Update of my persistent data
-                       // RKV aScenario.getKnowledgeElements().add(kelm);
-                       // RKV getKnowledgeElementDAO().flush();
-                       // RKV: commented because of NullPointerException during creation of a new study: session.merge(aScenario); //RKV
-                       // Update of my transient data
-                       List<KnowledgeElement> known = aScenario
-                                       .getKnowledgeElementsOf(kelm.getType()); // Initializes this.known, if not yet done
-                       // RKV: knowledge is already added into persistent set and "known" is constructed from it in the above call: known.add(kelm);
+                       // Update scenario transient data.
                        if (kelm.getType().equals("usecase")) {
-                               aScenario.setUcase(kelm);
-                       } else if (aScenario.getKnowledgeElementsList() != null) { // If null, knowl will be initialized when needed
-                               aScenario.getKnowledgeElementsList().add(kelm);
+                               aScenarioDTO.setUcase(kelm);
+                       } else if (aScenarioDTO.getKnowledgeElementsList() != null) { // If null, knowl will be initialized when needed
+                               aScenarioDTO.getKnowledgeElementsList().add(kelm);
                        }
-                       // Update of the index of Knowledge Elements
+                       // Update the lucene index of knowledge elements.
                        getIndexService().add(kelm);
-                       update(aScenario);
-
+                       if (logger.isDebugEnabled()) {
+                               logger.debug("A knowledge element #" + kelm.getIndex()
+                                               + " is added to the scenario #" + aScenario.getIndex());
+                       }
                } catch (IOException error) {
-                       logger.error(
-                                       "Unable to index the knowedge element '" + kelm.getIndex()
-                                                       + "', reason:", error);
+                       logger.error("Unable to index the knowedge element '"
+                                       + kelm.getIndex() + "', reason:", error);
                        kelm = null;
                }
 
@@ -332,8 +348,8 @@ public class ScenarioServiceImpl implements ScenarioService {
                                .selectType("usecase");
                KnowledgeElement.Properties kprop = new KnowledgeElement.Properties();
                User admin = getUserService().selectUser(1); // First user created when creating the database
-               kprop.setType(ucase).setTitle(aStudy.getTitle())
-                               .setValue(scenario.getTitle()).setAuthor(admin); // Internal Knowledge Element required by the validation process of
+               kprop.setType(ucase).setTitle(aStudy.getTitle()).setValue(
+                               scenario.getTitle()).setAuthor(admin); // Internal Knowledge Element required by the validation process of
                // knowledges
                addKnowledgeElement(scenario, kprop);
                return scenario;
@@ -350,16 +366,16 @@ public class ScenarioServiceImpl implements ScenarioService {
         */
        public boolean removeKnowledgeElement(Scenario scenario,
                        KnowledgeElement kelm) {
-               // -------------------------------------------------------------
                KnowledgeElement torem = scenario.getKnowledgeElement(kelm.getIndex());
                if (torem == null)
                        return false;
                boolean done = scenario.getKnowledgeElements().remove(torem);
                if (done) {
                        // Update of my transient data
-                       List<KnowledgeElement> kelms = scenario.getKnowledgeByType().get(
-                                       kelm.getType().getIndex());
-                       kelms.remove(torem);
+                       // RKV: These transient data are not used indeed.
+                       // RKV: List<KnowledgeElement> kelms = scenario.getKnowledgeByType().get(
+                       // RKV: kelm.getType().getIndex());
+                       // RKV: kelms.remove(torem);
                        if (scenario.getKnowledgeElementsList() != null)
                                scenario.getKnowledgeElementsList().remove(torem);
                        getScenarioDAO().update(scenario);
@@ -487,6 +503,7 @@ public class ScenarioServiceImpl implements ScenarioService {
 
        /**
         * Get the userService.
+        * 
         * @return the userService
         */
        public UserService getUserService() {
@@ -495,10 +512,51 @@ public class ScenarioServiceImpl implements ScenarioService {
 
        /**
         * Set the userService.
-        * @param userService the userService to set
+        * 
+        * @param userService
+        *            the userService to set
         */
        public void setUserService(UserService userService) {
                _userService = userService;
        }
 
+       /**
+        * Get the userDAO.
+        * 
+        * @return the userDAO
+        */
+       public UserDAO getUserDAO() {
+               return _userDAO;
+       }
+
+       /**
+        * Set the userDAO.
+        * 
+        * @param userDAO
+        *            the userDAO to set
+        */
+       public void setUserDAO(UserDAO userDAO) {
+               _userDAO = userDAO;
+       }
+
+       /**
+        * Get the knowledgeElementTypeDAO.
+        * 
+        * @return the knowledgeElementTypeDAO
+        */
+       public KnowledgeElementTypeDAO getKnowledgeElementTypeDAO() {
+               return _knowledgeElementTypeDAO;
+       }
+
+       /**
+        * Set the knowledgeElementTypeDAO.
+        * 
+        * @param knowledgeElementTypeDAO
+        *            the knowledgeElementTypeDAO to set
+        */
+       public void setKnowledgeElementTypeDAO(
+                       KnowledgeElementTypeDAO knowledgeElementTypeDAO) {
+               _knowledgeElementTypeDAO = knowledgeElementTypeDAO;
+       }
+
 }
index 054bb16e6d71eae0f9390f30d36446830f8d335a..f0ad06dd2539f0de05b8d0270d52d107de762e42 100644 (file)
@@ -15,16 +15,16 @@ http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
                class="org.splat.service.ServiceLocatorImpl"
                factory-method="getInstance">
                <property name="studyService" ref="studyService" />
-        <property name="userService" ref="userService" />
+               <property name="userService" ref="userService" />
        </bean>
 
-    <bean id="userService" class="org.splat.service.UserServiceImpl">
-        <property name="userDAO" ref="userDAO"/>
-    </bean>
+       <bean id="userService" class="org.splat.service.UserServiceImpl">
+               <property name="userDAO" ref="userDAO" />
+       </bean>
        <bean id="projectElementService"
                class="org.splat.service.ProjectElementServiceImpl">
                <property name="projectSettings" ref="projectSettings" />
-        <property name="projectElementDAO" ref="projectElementDAO" />
+               <property name="projectElementDAO" ref="projectElementDAO" />
        </bean>
 
        <bean id="documentTypeService"
@@ -75,19 +75,22 @@ http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
                <property name="stepService" ref="stepService" />
                <property name="studyService" ref="studyService" />
                <property name="knowledgeElementDAO" ref="knowledgeElementDAO" />
-        <property name="scenarioDAO" ref="scenarioDAO" />
-        <property name="studyDAO" ref="studyDAO" />
+               <property name="scenarioDAO" ref="scenarioDAO" />
+               <property name="studyDAO" ref="studyDAO" />
                <property name="knowledgeElementTypeService"
                        ref="knowledgeElementTypeService" />
-        <property name="userService" ref="userService" />
+               <property name="userService" ref="userService" />
+               <property name="userDAO" ref="userDAO" />
+               <property name="knowledgeElementTypeDAO"
+                       ref="knowledgeElementTypeDAO" />
        </bean>
 
        <bean id="searchService"
                class="org.splat.service.SearchServiceImpl">
                <property name="indexService" ref="indexService" />
-        <property name="repositoryService" ref="repositoryService" />
-        <property name="studyService" ref="studyService" />
-        <property name="studyDAO" ref="studyDAO" />
+               <property name="repositoryService" ref="repositoryService" />
+               <property name="studyService" ref="studyService" />
+               <property name="studyDAO" ref="studyDAO" />
        </bean>
 
        <bean id="stepService" class="org.splat.service.StepServiceImpl">
@@ -103,19 +106,19 @@ http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
                <property name="projectElementDAO" ref="projectElementDAO" />
        </bean>
 
-    <bean id="simulationContextService"
-        class="org.splat.service.SimulationContextServiceImpl">
-        <property name="simulationContextDAO"
-            ref="simulationContextDAO" />
-        <property name="simulationContextTypeDAO"
-            ref="simulationContextTypeDAO" />
-    </bean>
+       <bean id="simulationContextService"
+               class="org.splat.service.SimulationContextServiceImpl">
+               <property name="simulationContextDAO"
+                       ref="simulationContextDAO" />
+               <property name="simulationContextTypeDAO"
+                       ref="simulationContextTypeDAO" />
+       </bean>
 
-    <bean id="simulationContextTypeService"
-        class="org.splat.service.SimulationContextTypeServiceImpl">
-        <property name="simulationContextTypeDAO"
-            ref="simulationContextTypeDAO" />
-    </bean>
+       <bean id="simulationContextTypeService"
+               class="org.splat.service.SimulationContextTypeServiceImpl">
+               <property name="simulationContextTypeDAO"
+                       ref="simulationContextTypeDAO" />
+       </bean>
 
        <bean id="studyService"
                class="org.splat.service.StudyServiceImpl">
@@ -129,7 +132,7 @@ http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
                <property name="IDBuilderDAO" ref="iDBuilderDAO" />
                <property name="validationCycleDAO" ref="validationCycleDAO" />
                <property name="documentTypeService" ref="documentTypeService" />
-        <property name="userService" ref="userService" />
+               <property name="userService" ref="userService" />
        </bean>
 
        <bean id="userRights" abstract="true" scope="session">
index ce3ac95d0d5583efa82e9aacb9042cb96fc2c916..c4975d0b225c795601139ca5c08480948681928d 100644 (file)
@@ -96,6 +96,7 @@ public class EditKnowledgeElementAction extends DisplayStudyStepAction {
                        logger.error("Reason:", saverror);
                        return ERROR;
                } catch (Exception error) {
+                       logger.error("Exception while saving a knowledge: ", error);
                        return INPUT;
                }
        }