1 17 package org.alfresco.repo.node.integrity; 18 19 import java.util.ArrayList ; 20 import java.util.List ; 21 22 import org.alfresco.service.cmr.dictionary.AssociationDefinition; 23 import org.alfresco.service.cmr.dictionary.DictionaryService; 24 import org.alfresco.service.cmr.repository.InvalidNodeRefException; 25 import org.alfresco.service.cmr.repository.NodeRef; 26 import org.alfresco.service.cmr.repository.NodeService; 27 import org.alfresco.service.namespace.QName; 28 import org.alfresco.util.EqualsHelper; 29 30 36 public abstract class AbstractIntegrityEvent implements IntegrityEvent 37 { 38 protected final NodeService nodeService; 39 protected final DictionaryService dictionaryService; 40 41 42 private List <StackTraceElement []> traces; 43 44 private final NodeRef nodeRef; 45 46 private final QName typeQName; 47 48 private final QName qname; 49 50 51 private int hashCode = 0; 52 53 56 protected AbstractIntegrityEvent( 57 NodeService nodeService, 58 DictionaryService dictionaryService, 59 NodeRef nodeRef, 60 QName typeQName, 61 QName qname) 62 { 63 this.nodeService = nodeService; 64 this.dictionaryService = dictionaryService; 65 this.traces = new ArrayList <StackTraceElement []>(0); 66 67 this.nodeRef = nodeRef; 68 this.typeQName = typeQName; 69 this.qname = qname; 70 } 71 72 @Override  73 public int hashCode() 74 { 75 if (hashCode == 0) 76 { 77 hashCode = 78 0 79 + 1 * (nodeRef == null ? 0 : nodeRef.hashCode()) 80 - 17* (typeQName == null ? 0 : typeQName.hashCode()) 81 + 17* (qname == null ? 0 : qname.hashCode()); 82 } 83 return hashCode; 84 } 85 86 91 @Override  92 public boolean equals(Object obj) 93 { 94 if (obj == null) 95 return false; 96 else if (this == obj) 97 return true; 98 else if (this.getClass() != obj.getClass()) 99 return false; 100 AbstractIntegrityEvent that = (AbstractIntegrityEvent) obj; 102 return 103 EqualsHelper.nullSafeEquals(this.nodeRef, that.nodeRef) && 104 EqualsHelper.nullSafeEquals(this.typeQName, that.typeQName) && 105 EqualsHelper.nullSafeEquals(this.qname, that.qname); 106 } 107 108 @Override  109 public String toString() 110 { 111 StringBuilder sb = new StringBuilder (56); 112 sb.append("IntegrityEvent") 113 .append("[ name=").append(getClass().getName()); 114 if (nodeRef != null) 115 sb.append(", nodeRef=").append(nodeRef); 116 if (typeQName != null) 117 sb.append(", typeQName=").append(typeQName); 118 if (qname != null) 119 sb.append(", qname=").append(qname); 120 sb.append("]"); 121 return sb.toString(); 123 } 124 125 131 protected QName getNodeType(NodeRef nodeRef) 132 { 133 try 134 { 135 return nodeService.getType(nodeRef); 136 } 137 catch (InvalidNodeRefException e) 138 { 139 return null; 141 } 142 } 143 144 147 public List <StackTraceElement []> getTraces() 148 { 149 return traces; 150 } 151 152 public void addTrace(StackTraceElement [] trace) 153 { 154 traces.add(trace); 155 } 156 157 protected NodeRef getNodeRef() 158 { 159 return nodeRef; 160 } 161 162 protected QName getTypeQName() 163 { 164 return typeQName; 165 } 166 167 protected QName getQName() 168 { 169 return qname; 170 } 171 172 180 protected AssociationDefinition getAssocDef(List <IntegrityRecord> eventResults, QName assocTypeQName) 181 { 182 return dictionaryService.getAssociation(assocTypeQName); 183 } 184 185 protected String getMultiplicityString(boolean mandatory, boolean allowMany) 186 { 187 StringBuilder sb = new StringBuilder (4); 188 sb.append(mandatory ? "1" : "0"); 189 sb.append(".."); 190 sb.append(allowMany ? "*" : "1"); 191 return sb.toString(); 192 } 193 } 194 | Popular Tags |