107 */
108 static Date ISO8601toDate(String dateStr) throws ParseException {
109 DateFormat dfISO8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
110 // format in (almost) ISO8601 format
111 Date date = dfISO8601.parse(dateStr.substring(0, 22)
112 + dateStr.substring(23));
113 // remap the timezone from 0000 to 00:00 (starts at char 22)
114 return date;
115 }
116
117 private void sReport() throws SAXException {
118 AttributesImpl atts = new AttributesImpl();
119 atts.addAttribute("", "", Scheme.XSI, "String", Scheme.XSI_VAL);
120 atts.addAttribute("", "", Scheme.SCH_LOC, "String", Scheme.SCH_LOC_VAL);
121 atts.addAttribute("", "", Scheme.REPORT_FORMST, "String", "v1");
122 atts.addAttribute("", "", Scheme.REPORT_GENTIME, "String",
123 dateToISO8601(new Date()));
124 ser.startElement("", "", Scheme.REPORT, atts);
125 }
126
127 public void write(File[] file, Map[] map) throws SAXException,
128 ParserConfigurationException, IOException {
129 try {
130 ser.startDocument();
131 sReport();
132 ser.startElement("", "", Scheme.WDS, emptyAttr);
133 for (int i = 0; i < file.length; i++) {
134 XMLReader reader = XMLReportReader.createXMLReader(false);
135 reader.setContentHandler(new CopyHandler(ser, true, map[i]));
136 reader.parse(new InputSource(file[i].getAbsolutePath()));
137 }
138 ser.endElement("", "", Scheme.WDS);
139 ser.startElement("", "", Scheme.TRS, emptyAttr);
140 for (int i = 0; i < file.length; i++) {
141 XMLReader reader = XMLReportReader.createXMLReader(false);
142 reader.setContentHandler(new CopyHandler(ser, false, map[i]));
143 reader.parse(new InputSource(file[i].getAbsolutePath()));
144 }
145 ser.endElement("", "", Scheme.TRS);
146 ser.endElement("", "", Scheme.REPORT);
147 ser.endDocument();
154
155 // This handler just copy one xml to other,
156 // modifying elements according mapping
157
158 class CopyHandler extends DefaultHandler {
159
160 private ContentHandler ser;
161 private LexicalHandler lh;
162
163 // are we collect workdirs or not
164 private final boolean isWorkDir;
165
166 // is it need to write
167 private boolean needWrite;
168
169 // skipping by conflict resolving
170 private boolean skipByConflict;
171
172 // id -> new_id mapping
173 // url -> new_TestDescr mapping
174 private Map map;
175
176 public CopyHandler(ContentHandler ser, boolean isWorkDir, Map map) {
177 this.ser = ser;
178 if (ser instanceof LexicalHandler) {
179 lh = (LexicalHandler) ser;
180 }
181 this.isWorkDir = isWorkDir;
182 this.needWrite = false;
183 this.map = map;
184 this.skipByConflict = false;
185 }
186
187 public void startElement(String namespaceUri, String localName,
188 String qName, Attributes attrs) throws SAXException {
189 if (needWrite == true && skipByConflict == false) {
190
191 if (qName.equals(Scheme.WD)) {
192 // for WD WD_ID may be updated
193 AttributesImpl newAttrs = new AttributesImpl();
194 for (int i = 0; i < attrs.getLength(); i++) {
195 if (attrs.getQName(i).equals(Scheme.WD_ID)) {
196 String id = String.valueOf(map.get(Integer
|
107 */
108 static Date ISO8601toDate(String dateStr) throws ParseException {
109 DateFormat dfISO8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
110 // format in (almost) ISO8601 format
111 Date date = dfISO8601.parse(dateStr.substring(0, 22)
112 + dateStr.substring(23));
113 // remap the timezone from 0000 to 00:00 (starts at char 22)
114 return date;
115 }
116
117 private void sReport() throws SAXException {
118 AttributesImpl atts = new AttributesImpl();
119 atts.addAttribute("", "", Scheme.XSI, "String", Scheme.XSI_VAL);
120 atts.addAttribute("", "", Scheme.SCH_LOC, "String", Scheme.SCH_LOC_VAL);
121 atts.addAttribute("", "", Scheme.REPORT_FORMST, "String", "v1");
122 atts.addAttribute("", "", Scheme.REPORT_GENTIME, "String",
123 dateToISO8601(new Date()));
124 ser.startElement("", "", Scheme.REPORT, atts);
125 }
126
127 public void write(File[] file, Map<?, ?>[] map) throws SAXException,
128 ParserConfigurationException, IOException {
129 try {
130 ser.startDocument();
131 sReport();
132 ser.startElement("", "", Scheme.WDS, emptyAttr);
133 for (int i = 0; i < file.length; i++) {
134 XMLReader reader = XMLReportReader.createXMLReader(false);
135 reader.setContentHandler(new CopyHandler(ser, true, map[i]));
136 reader.parse(new InputSource(file[i].getAbsolutePath()));
137 }
138 ser.endElement("", "", Scheme.WDS);
139 ser.startElement("", "", Scheme.TRS, emptyAttr);
140 for (int i = 0; i < file.length; i++) {
141 XMLReader reader = XMLReportReader.createXMLReader(false);
142 reader.setContentHandler(new CopyHandler(ser, false, map[i]));
143 reader.parse(new InputSource(file[i].getAbsolutePath()));
144 }
145 ser.endElement("", "", Scheme.TRS);
146 ser.endElement("", "", Scheme.REPORT);
147 ser.endDocument();
154
155 // This handler just copy one xml to other,
156 // modifying elements according mapping
157
158 class CopyHandler extends DefaultHandler {
159
160 private ContentHandler ser;
161 private LexicalHandler lh;
162
163 // are we collect workdirs or not
164 private final boolean isWorkDir;
165
166 // is it need to write
167 private boolean needWrite;
168
169 // skipping by conflict resolving
170 private boolean skipByConflict;
171
172 // id -> new_id mapping
173 // url -> new_TestDescr mapping
174 private Map<?, ?> map;
175
176 public CopyHandler(ContentHandler ser, boolean isWorkDir, Map<?, ?> map) {
177 this.ser = ser;
178 if (ser instanceof LexicalHandler) {
179 lh = (LexicalHandler) ser;
180 }
181 this.isWorkDir = isWorkDir;
182 this.needWrite = false;
183 this.map = map;
184 this.skipByConflict = false;
185 }
186
187 public void startElement(String namespaceUri, String localName,
188 String qName, Attributes attrs) throws SAXException {
189 if (needWrite == true && skipByConflict == false) {
190
191 if (qName.equals(Scheme.WD)) {
192 // for WD WD_ID may be updated
193 AttributesImpl newAttrs = new AttributesImpl();
194 for (int i = 0; i < attrs.getLength(); i++) {
195 if (attrs.getQName(i).equals(Scheme.WD_ID)) {
196 String id = String.valueOf(map.get(Integer
|