package com.tandbergtv.validation;

import java.io.IOException;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import junit.framework.TestCase;

import org.w3c.dom.Document;
import org.xml.sax.SAXException;

import com.tandbergtv.metadatamanager.validation.ValidationError;
import com.tandbergtv.metadatamanager.validation.Schematron.SchematronValidator;

public class SchematronValidatorTest extends TestCase {

	public void testValidator() {

		try {
			SchematronValidator validator = new SchematronValidator(
					"TestValidator",
					"com/tandbergtv/metadatamanager/specimpl/mstv/rules/SpecDefinedRules.sch");
			System.out.println("Validator created.");

			DocumentBuilderFactory factory = DocumentBuilderFactory
					.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			Document doc = builder
					.parse("file:tests/com/tandbergtv/validation/Package.xml");
			List<ValidationError> errors = validator.validate(doc);
			for (ValidationError error : errors) {
				// changing field names
				List<String> fields = error.getErrorFields();
				if (fields.contains("StartDate")) {
					int position = fields.indexOf("StartDate");
					fields.remove("StartDate");
					fields.add(position, "StartDate Alias");
				}
				error.setErrorFields(fields);
				System.out.println(error);
			}
		} catch (RuntimeException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
