package org.pegadi.artis; import java.util.Vector; public class ValidationRules { public static String getDefaultElement() { return getDefaultElementTest(); } public static String getDefaultElementTest() { return "p"; } /** * This function returns a Vector of Strings of allowable element names. * @todo: This function should simply get an Xpath and then lookup in the xml schema directly. * @param paragraphNumber the paragraph * @param currElement * @param prevElement * @return */ public static Vector getAllowedElements(int paragraphNumber, String currElement, String prevElement) { return getAllowedElementsTest(paragraphNumber, currElement, prevElement); } /** * Hardcoded testing function which validates articles of type 'article.full' defined in pegadi.xsd. * @param paragraphNumber * @param currElement * @param prevElement * @return */ protected static Vector getAllowedElementsTest(int paragraphNumber, String currElement, String prevElement) { Vector v = new Vector(); if (paragraphNumber < 0) { // what to do here? } else if (paragraphNumber == 0) { v.add("headline"); } else if (paragraphNumber == 1 && prevElement.equals("headline")) { v.add("kicker"); } else if (paragraphNumber == 2 && prevElement.equals("kicker")) { v.add("lead"); } else if (paragraphNumber == 3 && prevElement.equals("lead")) { v.add("p"); v.add("quote"); } else if (paragraphNumber > 3) { v.add("p"); v.add("quote"); if (!prevElement.equals("subhead") ) v.add("subhead"); } return v; } public static Vector getAllowedElements(String currElement) { return getAllowedElementsTest(currElement); } protected static Vector getAllowedElementsTest(String currElement) { Vector v = new Vector(); if (currElement.equals("headline")) v.add("headline"); else if (currElement.equals("lead")) v.add("lead"); else if (currElement.equals("p")) { v.add("p"); v.add("subhead"); v.add("quote"); } else if (currElement.equals("subhead")) { v.add("subhead"); v.add("p"); v.add("quote"); } else if (currElement.equals("kicker")) v.add("kicker"); return v; } }