Downloads Documentation Community Contribute Demo






Show Sidebar
Login | Register

Ticket #908: ConceptAnswer.patch

File ConceptAnswer.patch, 12.6 kB (added by dthomas, 2 years ago)

ConceptAnswer.patch

  • C:/workspace/openmrs_trunk/metadata/model/1.3.0-schema-with-core-data.sql

    old new  
    156156  `concept_id` int(11) NOT NULL default '0', 
    157157  `answer_concept` int(11) default NULL, 
    158158  `answer_drug` int(11) default NULL, 
     159  `sort_weight` double default NULL, 
    159160  `creator` int(11) NOT NULL default '0', 
    160161  `date_created` datetime NOT NULL default '0000-00-00 00:00:00', 
    161162  PRIMARY KEY  (`concept_answer_id`), 
  • C:/workspace/openmrs_trunk/metadata/model/1.3.0-schema-with-core-and-demo-data.sql

    old new  
    151151  `concept_id` int(11) NOT NULL default '0', 
    152152  `answer_concept` int(11) default NULL, 
    153153  `answer_drug` int(11) default NULL, 
     154  `sort_weight` double default NULL, 
    154155  `creator` int(11) NOT NULL default '0', 
    155156  `date_created` datetime NOT NULL default '0000-00-00 00:00:00', 
    156157  PRIMARY KEY  (`concept_answer_id`), 
  • C:/workspace/openmrs_trunk/metadata/model/1.3.0-schema-only.sql

    old new  
    127127  `concept_id` int(11) NOT NULL default '0', 
    128128  `answer_concept` int(11) default NULL, 
    129129  `answer_drug` int(11) default NULL, 
     130  `sort_weight` double default NULL, 
    130131  `creator` int(11) NOT NULL default '0', 
    131132  `date_created` datetime NOT NULL default '0000-00-00 00:00:00', 
    132133  PRIMARY KEY  (`concept_answer_id`), 
  • C:/workspace/openmrs_trunk/metadata/model/update-to-latest-db.mysqldiff.sql

    old new  
    10411041delimiter ; 
    10421042call diff_procedure('1.3.0.13'); 
    10431043 
     1044 
     1045#---------------------------------------- 
     1046# OpenMRS Datamodel version 1.3.0.14 
     1047# Dave Thomas               July 11, 2008 
     1048# Adding sort_weight column to conceptName 
     1049#---------------------------------------- 
     1050 
     1051DROP PROCEDURE IF EXISTS diff_procedure; 
     1052 
     1053delimiter // 
     1054 
     1055CREATE PROCEDURE diff_procedure (IN new_db_version VARCHAR(10)) 
     1056 BEGIN 
     1057    IF (SELECT REPLACE(property_value, '.', '0') < REPLACE(new_db_version, '.', '0') FROM global_property WHERE property = 'database_version') THEN 
     1058    SELECT CONCAT('Updating to ', new_db_version) AS 'Datamodel Update:' FROM dual; 
     1059         
     1060        ALTER TABLE `concept_answer` ADD COLUMN `sort_weight` double default NULL; 
     1061         
     1062    UPDATE `global_property` SET property_value=new_db_version WHERE property = 'database_version'; 
     1063 
     1064                DROP TABLE IF EXISTS concept_answer_tmp; 
     1065                CREATE TABLE `concept_answer_tmp` ( 
     1066                          `concept_answer_id` int(11) NOT NULL, 
     1067                          `concept_id` int(11) NOT NULL default '0', 
     1068                      `answer_concept` int(11) default NULL, 
     1069                      `answer_drug` int(11) default NULL, 
     1070                      `sort_weight` double default NULL, 
     1071                      `creator` int(11) NOT NULL default '0', 
     1072                      `date_created` datetime NOT NULL); 
     1073 
     1074                INSERT INTO concept_answer_tmp 
     1075                SELECT * FROM concept_answer; 
     1076 
     1077                DROP TABLE IF EXISTS concept_answer_tmp_counts; 
     1078                CREATE TABLE `concept_answer_tmp_counts` ( 
     1079                        `concept_answer_id` int(11) NOT NULL, 
     1080                        `concept_id` int(11) NOT NULL default '0', 
     1081                        `sort_weight_tmp` double default NULL); 
     1082 
     1083                INSERT INTO concept_answer_tmp_counts 
     1084                        SELECT ca.concept_answer_id, ca.concept_id, count(ca1.answer_concept) 
     1085                        FROM concept_answer ca, concept_answer_tmp ca1 
     1086                        WHERE ca.concept_id = ca1.concept_id 
     1087                        AND ca1.concept_answer_id <= ca.concept_answer_id 
     1088                        GROUP BY ca.concept_answer_id 
     1089                        ORDER BY concept_id, count(ca1.answer_concept); 
     1090 
     1091                UPDATE concept_answer ca 
     1092                        LEFT JOIN concept_answer_tmp_counts ctmp on ca.concept_answer_id = ctmp.concept_answer_id 
     1093                        SET ca.sort_weight = ctmp.sort_weight_tmp 
     1094                        WHERE ctmp.concept_answer_id = ca.concept_answer_id; 
     1095 
     1096                DROP TABLE concept_answer_tmp_counts; 
     1097                DROP TABLE concept_answer_tmp; 
     1098     
     1099    END IF; 
     1100 END; 
     1101// 
     1102 
     1103delimiter ; 
     1104call diff_procedure('1.3.0.14'); 
     1105 
    10441106#----------------------------------- 
    10451107# Clean up - Keep this section at the very bottom of diff script 
    10461108#----------------------------------- 
  • C:/workspace/openmrs_trunk/metadata/model/1.3.0-createdb-from-scratch-with-demo-data.sql

    old new  
    164164  `concept_id` int(11) NOT NULL default '0', 
    165165  `answer_concept` int(11) default NULL, 
    166166  `answer_drug` int(11) default NULL, 
     167  `sort_weight` double default NULL, 
    167168  `creator` int(11) NOT NULL default '0', 
    168169  `date_created` datetime NOT NULL default '0000-00-00 00:00:00', 
    169170  PRIMARY KEY  (`concept_answer_id`), 
  • C:/workspace/openmrs_trunk/metadata/api/hibernate/org/openmrs/api/db/hibernate/Concept.hbm.xml

    old new  
    4141                </set> 
    4242 
    4343                <set name="answers" lazy="true" cascade="all,evict"  
    44                                 table="concept_answer" order-by="concept_answer_id asc" access="field"> 
     44                                table="concept_answer" order-by="sort_weight asc" access="field"> 
    4545                        <key column="concept_id" not-null="true" /> 
    4646                        <composite-element class="ConceptAnswer"> 
    4747                                <parent name="concept"/> 
    4848                                <property generated="insert" insert="false" name="conceptAnswerId" type="java.lang.Integer" column="concept_answer_id" /> 
    4949                                <many-to-one name="answerConcept" class="org.openmrs.Concept" column="answer_concept" not-null="true"/> 
    5050                                <many-to-one name="answerDrug" class="org.openmrs.Drug" column="answer_drug" /> 
     51                                <property name="sortWeight" type="java.lang.Double" column="sort_weight" length="22" /> 
    5152                                <property name="dateCreated" type="java.util.Date" column="date_created" not-null="true" /> 
    5253                                <many-to-one name="creator" class="User" column="creator" not-null="true"/> 
    5354                        </composite-element> 
  • C:/workspace/openmrs_trunk/src/api/org/openmrs/Concept.java

    old new  
    135135         
    136136        /** 
    137137         * @param answers The answers to set. 
     138         * This method assumes that the sort_weight has already been set. 
    138139         */ 
    139140        public void setAnswers(Collection<ConceptAnswer> answers) { 
    140141                this.answers = answers; 
     
    148149        } 
    149150         
    150151        /** 
     152         *  
     153         * @param answers  The answers to set. 
     154         * @param buildSortWeight  true = rebuild sort_weight, false = do nothing. 
     155         */ 
     156        public void setAnswers(Collection<ConceptAnswer> answers, boolean buildSortWeight){ 
     157                this.answers = answers; 
     158                if (buildSortWeight){ 
     159                        double i = 1; 
     160                        for (ConceptAnswer ca : answers) 
     161                                ca.setSortWeight(i++); 
     162                } 
     163        } 
     164         
     165        /** 
    151166         * Add the given ConceptAnswer to the list of answers for this Concept 
    152167         * @param conceptAnswer 
    153168         */ 
     
    159174                { 
    160175                        conceptAnswer.setConcept(this); 
    161176                        answers.add(conceptAnswer); 
     177                        double i = 1; 
     178                        for (ConceptAnswer ca : answers) 
     179                                ca.setSortWeight(i++); 
    162180                } 
    163181        } 
    164182 
     
    169187        public void removeAnswer(ConceptAnswer conceptAnswer) { 
    170188                if (answers != null) 
    171189                        answers.remove(conceptAnswer); 
     190                double i = 1; 
     191                for (ConceptAnswer ca : answers) 
     192                        ca.setSortWeight(i++); 
    172193        } 
    173194 
    174195        /** 
  • C:/workspace/openmrs_trunk/src/api/org/openmrs/ConceptAnswer.java

    old new  
    3131        private Concept concept;                // concept to answer 
    3232        private Concept answerConcept;  // answer for <code>concept</code> 
    3333        private Drug answerDrug;                // answer in drug form for <code>concept</code> 
     34        private Double sortWeight; 
    3435        private User creator; 
    3536        private Date dateCreated; 
    3637 
     
    173174        public void setDateCreated(Date dateCreated) { 
    174175                this.dateCreated = dateCreated; 
    175176        } 
     177 
     178        public Double getSortWeight() { 
     179        return sortWeight; 
     180    } 
     181 
     182        public void setSortWeight(Double sortWeight) { 
     183        this.sortWeight = sortWeight; 
     184    } 
    176185} 
  • C:/workspace/openmrs_trunk/src/api/org/openmrs/propertyeditor/ConceptAnswersEditor.java

    old new  
    118118                        for (String i : requestConceptIds) 
    119119                                log.debug("id: " + i); 
    120120                         
     121                        double i = 1; 
     122                        for (String conceptId : requestConceptIds) { 
     123                                Integer id = getConceptId(conceptId);  
     124                                for (ConceptAnswer ca : originalConceptAnswers){ 
     125                                        if (id.intValue() == ca.getAnswerConcept().getConceptId()) 
     126                                                ca.setSortWeight(i++); 
     127                                } 
     128                        } 
    121129                        setValue(originalConceptAnswers); 
    122130                } 
    123131                else { 
  • C:/workspace/openmrs_trunk/src/web/org/openmrs/web/controller/ConceptFormController.java

    old new  
    2020import java.util.Collection; 
    2121import java.util.HashMap; 
    2222import java.util.HashSet; 
     23import java.util.LinkedHashMap; 
    2324import java.util.Locale; 
    2425import java.util.Map; 
    2526import java.util.Set; 
     
    238239                                        if (numberOfNamesSpecified == 0) {  
    239240                                                errors.reject("error.names.length"); 
    240241                                        } 
    241  
    242242                        } 
    243243                } 
    244244                else { 
     
    367367                Map<Locale, Collection<ConceptSynonym>> conceptSynonymsByLocale = new HashMap<Locale, Collection<ConceptSynonym>>(); 
    368368                //Map<String, ConceptName> conceptSets = new TreeMap<String, ConceptName>(); 
    369369                Map<Double, Object[]> conceptSets = new TreeMap<Double, Object[]>(); 
    370                 Map<String, String> conceptAnswers = new TreeMap<String, String>(); 
     370                Map<String, String> conceptAnswers = new LinkedHashMap<String, String>(); 
    371371                Collection<Form> forms = new HashSet<Form>(); 
    372372                Map<Integer, String> questionsAnswered = new TreeMap<Integer, String>(); 
    373373                Map<Integer, String> containedInSets = new TreeMap<Integer, String>(); 
  • C:/workspace/openmrs_trunk/web/WEB-INF/view/dictionary/conceptForm.jsp

    old new  
    310310                                        <td valign="top" class="buttons"> 
    311311                                                <span dojoType="ConceptSearch" widgetId="aSearch" includeDrugConcepts="true"></span><span dojoType="OpenmrsPopup" searchWidget="aSearch" searchTitle='<spring:message code="Concept.find"/>' changeButtonValue='<spring:message code="general.add"/>' showConceptIds="true" showIfHiding="true"></span> 
    312312                                                <input type="button" value="<spring:message code="general.remove"/>" class="smallButton" onClick="removeItem('answerNames', 'answerIds', ' ');"/><br/> 
     313                                                <input type="button" value="<spring:message code="general.move_up"/>" class="smallButton" onClick="moveUp('answerNames', 'answerIds');" style="display: block" /> 
     314                                                <input type="button" value="<spring:message code="general.move_down"/>" class="smallButton" onClick="moveDown('answerNames', 'answerIds');" style="display: block" /> 
    313315                                        </td> 
    314316                                </tr> 
    315317                        </table>