Changeset 4972
- Timestamp:
- 07/17/08 18:40:13 (4 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
openmrs-modules/formimportexport/metadata/config.xml
r4569 r4972 7 7 <id>formimportexport</id> 8 8 <name>Form Import Export</name> 9 <version>1.5. 1</version>9 <version>1.5.2</version> 10 10 <package>org.openmrs.module.@MODULE_ID@</package> 11 11 <author>Darius Jazayeri</author> openmrs-modules/formimportexport/src/org/openmrs/module/formimportexport/impl/FormImportExportServiceImpl.java
r4970 r4972 12 12 import java.util.Calendar; 13 13 import java.util.Collection; 14 import java.util.Collections;15 14 import java.util.Comparator; 16 15 import java.util.Date; … … 18 17 import java.util.Iterator; 19 18 import java.util.LinkedHashMap; 19 import java.util.LinkedHashSet; 20 20 import java.util.List; 21 21 import java.util.Map; … … 114 114 115 115 List<Integer> toDo = new ArrayList<Integer>(map.keySet()); 116 Set<Integer> done = new HashSet<Integer>();116 Set<Integer> done = new LinkedHashSet<Integer>(); 117 117 while (toDo.size() > 0) { 118 118 119 int doneThisPass = 0; 119 120 for (Iterator<Integer> i = toDo.iterator(); i.hasNext(); ) { 120 121 Integer thisId = i.next(); 121 122 Set<Integer> childrenOfThis = childrenByConcept.get(thisId); 122 if (childrenOfThis == null || childrenOfThis.size() == 0 || done.containsAll(childrenOfThis)) {123 if (childrenOfThis == null || childrenOfThis.size() == 0 || checkSafeToAddChild(done, childrenOfThis, thisId) ) { 123 124 i.remove(); 124 125 done.add(thisId); … … 128 129 if (doneThisPass == 0) { 129 130 throw new RuntimeException("Unresolvable cycle in concept dictionary. The following concepts appear to be in cycles: " + toDo); 130 } 131 } 131 132 } 132 133 … … 251 252 FormImportExportService service = (FormImportExportService) Context.getService(FormImportExportService.class); 252 253 for (String conceptXml : toCreate) { 254 log.info(toCreate); 253 255 Concept concept = (Concept) conceptXstream.fromXML(conceptXml); 254 256 … … 407 409 //if ( concept.getConceptId() == 3037 ) { 408 410 if (localConcept != null) { 409 getDao().evictFromSession(localConcept);411 Context.evictFromSession(localConcept); 410 412 service.updateConcept(concept); 411 413 sb.append("Updated " + concept.getConceptId() + ": " + localConcept.getName(Context.getLocale()) + " -> " + cn + "\n"); … … 641 643 } 642 644 645 public boolean checkSafeToAddChild(Set<Integer> done, Set<Integer> childrenOfThis, Integer thisId){ 646 if (done.containsAll(childrenOfThis)) 647 return true; 648 else { 649 for (Integer i : childrenOfThis){ 650 if (!(done.contains(i) || thisId.equals(i))) 651 return false; 652 } 653 return true; 654 } 655 } 656 643 657 644 658 }