]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
b7c10e8178022bd9111b68e6b46a066a971c42be
[tmp/jakarta-migration.git] /
1 /**\r
2  * This document is a part of the source code and related artifacts\r
3  * for CollectionSpace, an open source collections management system\r
4  * for museums and related institutions:\r
5  *\r
6  * http://www.collectionspace.org\r
7  * http://wiki.collectionspace.org\r
8  *\r
9  * Copyright (c) 2009 Regents of the University of California\r
10  *\r
11  * Licensed under the Educational Community License (ECL), Version 2.0.\r
12  * You may not use this file except in compliance with this License.\r
13  *\r
14  * You may obtain a copy of the ECL 2.0 License at\r
15  * https://source.collectionspace.org/collection-space/LICENSE.txt\r
16  *\r
17  *  Unless required by applicable law or agreed to in writing, software\r
18  *  distributed under the License is distributed on an "AS IS" BASIS,\r
19  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
20  *  See the License for the specific language governing permissions and\r
21  *  limitations under the License.\r
22  */\r
23 \r
24 package org.collectionspace.services.IntegrationTests.xmlreplay;\r
25 \r
26 import org.collectionspace.services.common.api.Tools;\r
27 \r
28 import java.util.ArrayList;\r
29 \r
30 /**\r
31  * User: laramie\r
32  * $LastChangedRevision:  $\r
33  * $LastChangedDate:  $\r
34  */\r
35 public class TreeWalkResults extends ArrayList<TreeWalkResults.TreeWalkEntry> {\r
36 \r
37     public static class TreeWalkEntry {\r
38         public String lpath = "";\r
39         public String rpath = "";\r
40         public String ltextTrimmed = "";\r
41         public String rtextTrimmed = "";\r
42         public String expected = "";\r
43         public String actual = "";\r
44         public String message = "";\r
45         public String errmessage = "";\r
46         public static enum STATUS {INFO, MATCHED, R_MISSING, R_ADDED, DOC_ERROR, TEXT_DIFFERENT};\r
47         public STATUS status;\r
48         public String toString(){\r
49             return\r
50                  "{"\r
51                  +status.name()\r
52                  +(Tools.notEmpty(lpath) ? ", L.path:"+lpath : "")\r
53                  +(Tools.notEmpty(rpath) ? ", R.path:"+rpath : "")\r
54                  +(Tools.notEmpty(message) ? ", message:"+message : "")\r
55                  +(Tools.notEmpty(errmessage) ? ", errmessage:"+errmessage : "")\r
56                  +", status:"+status\r
57                  +((status != STATUS.MATCHED) && Tools.notEmpty(ltextTrimmed) ? ",\r\n    L.trimmed:"+ltextTrimmed : "")\r
58                  +((status != STATUS.MATCHED) && Tools.notEmpty(rtextTrimmed) ? ",\r\n    R.trimmed:"+rtextTrimmed : "")\r
59                  +((status != STATUS.MATCHED) && Tools.notEmpty(expected) ? "\r\nEXPECTED:\r\n------------------\r\n"+expected.trim()+"\r\n------------------" : "")\r
60                  +((status != STATUS.MATCHED) && Tools.notEmpty(actual) ? "\r\nACTUAL:\r\n------------------\r\n"+actual.trim()+"\r\n------------------\r\n" : "")\r
61 \r
62                  +"}";\r
63 \r
64         }\r
65     }\r
66 \r
67     public boolean hasDocErrors(){\r
68         for (TreeWalkEntry entry : this){\r
69             if (entry.status == TreeWalkEntry.STATUS.DOC_ERROR){\r
70                 return true;\r
71             }\r
72         }\r
73         return false;\r
74     }\r
75 \r
76     public String getErrorMessages(){\r
77         StringBuffer buf = new StringBuffer();\r
78         boolean first = true;\r
79         for (TreeWalkEntry entry : this){\r
80             if ( Tools.notEmpty(entry.errmessage)){\r
81                 if (first) {\r
82                     buf.append(",errors:");\r
83                 } else {\r
84                     buf.append(',');\r
85                 }\r
86                 buf.append('\''+entry.errmessage+"\'");\r
87                 first = false;\r
88             }\r
89         }\r
90         return buf.toString();\r
91     }\r
92 \r
93 \r
94 \r
95     public boolean isStrictMatch(){\r
96         for (TreeWalkEntry entry : this){\r
97             if (entry.status == TreeWalkEntry.STATUS.DOC_ERROR){\r
98                 return false;\r
99             }\r
100             if ( !(   entry.status == TreeWalkEntry.STATUS.MATCHED\r
101                    || entry.status == TreeWalkEntry.STATUS.INFO)){\r
102                 return false;\r
103             }\r
104         }\r
105         return true;\r
106     }\r
107     public int getMismatchCount(){\r
108         int c = 0;\r
109         for (TreeWalkEntry entry : this){\r
110             if ( entry.status == TreeWalkEntry.STATUS.DOC_ERROR\r
111                 || entry.status != TreeWalkEntry.STATUS.MATCHED\r
112                 || entry.status != TreeWalkEntry.STATUS.INFO){\r
113                 c++;\r
114             }\r
115         }\r
116         return c;\r
117     }\r
118     /** For our purposes, trees match if they have the same element tree structure - no checking is done for text node changes. */\r
119     public boolean treesMatch(){\r
120         for (TreeWalkEntry entry : this){\r
121             if (entry.status == TreeWalkEntry.STATUS.DOC_ERROR\r
122                 || entry.status == TreeWalkEntry.STATUS.R_MISSING\r
123                 || entry.status == TreeWalkEntry.STATUS.R_ADDED  ){\r
124                 return false;\r
125             }\r
126         }\r
127         return true;\r
128     }\r
129 \r
130     public int countFor(TreeWalkEntry.STATUS status){\r
131         int count = 0;\r
132         for (TreeWalkEntry entry : this){\r
133             if (entry.status.equals(status)){\r
134                 count++;\r
135             }\r
136         }\r
137         return count;\r
138     }\r
139 \r
140     public String miniSummary(){\r
141         //MATCHED, INFO, R_MISSING, R_ADDED, TEXT_DIFFERENT};\r
142         StringBuffer buf = new StringBuffer();\r
143         buf.append("{");\r
144         boolean nextline = false;\r
145         for (TreeWalkEntry.STATUS st : TreeWalkEntry.STATUS.values()){\r
146             if (nextline) buf.append(',');\r
147             buf.append(st.name()+':'+countFor(st));\r
148             nextline = true;\r
149         }\r
150         buf.append(getErrorMessages());\r
151         buf.append("}");\r
152         return buf.toString();\r
153     }\r
154 \r
155     public String fullSummary(){\r
156         StringBuffer buf = new StringBuffer();\r
157         for (TreeWalkResults.TreeWalkEntry entry : this){\r
158             buf.append(entry.toString()).append("\r\n");\r
159         }\r
160         return buf.toString();\r
161     }\r
162 \r
163 \r
164     public String leftID;\r
165     public String rightID;\r
166 }