1 40 41 package org.jahia.engines.validation; 42 43 import java.util.Comparator ; 44 45 import org.jahia.data.containers.ContainerEditViewFieldGroup; 46 import org.jahia.data.fields.JahiaField; 47 import org.jahia.exceptions.JahiaException; 48 49 60 61 public class ValidationErrorSorter implements Comparator { 62 ContainerEditViewFieldGroup fieldGroup = null; 63 public ValidationErrorSorter(ContainerEditViewFieldGroup currentFieldGroup) { 64 super(); 65 fieldGroup = currentFieldGroup; 66 } 67 68 public int compare(Object o1, Object o2) { 69 Object leftObj = ((ValidationError)o1).getSource(); 70 Object rightObj = ((ValidationError)o2).getSource(); 71 72 if (leftObj != null 73 && rightObj != null 74 && leftObj instanceof JahiaField 75 && rightObj instanceof JahiaField 76 && fieldGroup != null) { 77 78 JahiaField leftField = (JahiaField)leftObj; 79 JahiaField rightField = (JahiaField)rightObj; 80 81 try { 82 boolean leftExists = 83 fieldGroup.fieldExists(leftField.getDefinition().getName()); 84 boolean rightExists = 85 fieldGroup.fieldExists( 86 rightField.getDefinition().getName()); 87 88 if (leftExists != rightExists) 89 return leftExists == true ? -1 : 1; 90 else { 91 return Math.abs(leftField.getID()) 92 < Math.abs(rightField.getID()) 93 ? -1 94 : 1; 95 } 96 } catch (JahiaException e) {} 97 } 98 if (leftObj != null 99 && leftObj instanceof JahiaField 100 && (rightObj == null || !(rightObj instanceof JahiaField))) 101 return -1; 102 103 if (rightObj != null 104 && rightObj instanceof JahiaField 105 && (leftObj == null || !(leftObj instanceof JahiaField))) 106 return 1; 107 108 return leftObj.hashCode() < rightObj.hashCode() 109 ? -1 110 : (leftObj.equals(rightObj) ? 0 : 1); 111 } 112 113 public boolean equals(Object obj) { 114 if (this == obj) return true; 115 116 if (obj != null && this.getClass() == obj.getClass()) { 117 return true; 118 } 119 return false; 120 } 121 } 122 | Popular Tags |