+ public static List<RefineHolder> parseRefines(Uses_stmtContext ctx) {
+ List<RefineHolder> refines = new ArrayList<RefineHolder>();
+
+ for (int i = 0; i < ctx.getChildCount(); i++) {
+ ParseTree child = ctx.getChild(i);
+ if (child instanceof Refine_stmtContext) {
+ String refineTarget = stringFromNode(child);
+ RefineHolder refine = new RefineHolder(refineTarget);
+ for (int j = 0; j < child.getChildCount(); j++) {
+ ParseTree refinePom = child.getChild(j);
+ if (refinePom instanceof Refine_pomContext) {
+ for (int k = 0; k < refinePom.getChildCount(); k++) {
+ ParseTree refineStmt = refinePom.getChild(k);
+ if (refineStmt instanceof Refine_leaf_stmtsContext) {
+ parseRefine(refine,
+ (Refine_leaf_stmtsContext) refineStmt);
+ } else if (refineStmt instanceof Refine_container_stmtsContext) {
+ parseRefine(
+ refine,
+ (Refine_container_stmtsContext) refineStmt);
+ } else if (refineStmt instanceof Refine_list_stmtsContext) {
+ parseRefine(refine,
+ (Refine_list_stmtsContext) refineStmt);
+ } else if (refineStmt instanceof Refine_leaf_list_stmtsContext) {
+ parseRefine(
+ refine,
+ (Refine_leaf_list_stmtsContext) refineStmt);
+ } else if (refineStmt instanceof Refine_choice_stmtsContext) {
+ parseRefine(refine,
+ (Refine_choice_stmtsContext) refineStmt);
+ } else if (refineStmt instanceof Refine_anyxml_stmtsContext) {
+ parseRefine(refine,
+ (Refine_anyxml_stmtsContext) refineStmt);
+ }
+ }
+ }
+ }
+ refines.add(refine);
+ }
+ }
+ return refines;
+ }
+
+ private static RefineHolder parseRefine(RefineHolder refine,
+ Refine_leaf_stmtsContext refineStmt) {
+ refine.setType(Refine.LEAF);
+ for (int i = 0; i < refineStmt.getChildCount(); i++) {
+ ParseTree refineArg = refineStmt.getChild(i);
+ if (refineArg instanceof Default_stmtContext) {
+ String defaultStr = stringFromNode(refineArg);
+ refine.setDefaultStr(defaultStr);
+ } else if (refineArg instanceof Mandatory_stmtContext) {
+ for (int j = 0; j < refineArg.getChildCount(); j++) {
+ ParseTree mandatoryTree = refineArg.getChild(j);
+ if (mandatoryTree instanceof Mandatory_argContext) {
+ Boolean mandatory = Boolean
+ .valueOf(stringFromNode(mandatoryTree));
+ refine.setMandatory(mandatory);
+ }
+ }
+ } else if (refineArg instanceof Must_stmtContext) {
+ MustDefinition must = parseMust((Must_stmtContext) refineArg);
+ refine.setMust(must);
+
+ }
+ }
+ return refine;
+ }
+
+ private static RefineHolder parseRefine(RefineHolder refine,
+ Refine_container_stmtsContext refineStmt) {
+ refine.setType(Refine.CONTAINER);
+ for (int m = 0; m < refineStmt.getChildCount(); m++) {
+ ParseTree refineArg = refineStmt.getChild(m);
+ if (refineArg instanceof Must_stmtContext) {
+ MustDefinition must = parseMust((Must_stmtContext) refineArg);
+ refine.setMust(must);
+ } else if (refineArg instanceof Presence_stmtContext) {
+ refine.setPresence(true);
+ }
+ }
+ return refine;
+ }
+
+ private static RefineHolder parseRefine(RefineHolder refine,
+ Refine_list_stmtsContext refineStmt) {
+ refine.setType(Refine.LIST);
+ for (int m = 0; m < refineStmt.getChildCount(); m++) {
+ ParseTree refineArg = refineStmt.getChild(m);
+ if (refineArg instanceof Must_stmtContext) {
+ MustDefinition must = parseMust((Must_stmtContext) refineArg);
+ refine.setMust(must);
+ } else if (refineArg instanceof Max_elements_stmtContext) {
+ Integer max = Integer.valueOf(stringFromNode(refineArg));
+ refine.setMinElements(max);
+ } else if (refineArg instanceof Min_elements_stmtContext) {
+ Integer min = Integer.valueOf(stringFromNode(refineArg));
+ refine.setMinElements(min);
+ }
+ }
+ return refine;
+ }
+
+ private static RefineHolder parseRefine(RefineHolder refine,
+ Refine_leaf_list_stmtsContext refineStmt) {
+ refine.setType(Refine.LEAF_LIST);
+ for (int m = 0; m < refineStmt.getChildCount(); m++) {
+ ParseTree refineArg = refineStmt.getChild(m);
+ if (refineArg instanceof Must_stmtContext) {
+ MustDefinition must = parseMust((Must_stmtContext) refineArg);
+ refine.setMust(must);
+ } else if (refineArg instanceof Max_elements_stmtContext) {
+ Integer max = Integer.valueOf(stringFromNode(refineArg));
+ refine.setMinElements(max);
+ } else if (refineArg instanceof Min_elements_stmtContext) {
+ Integer min = Integer.valueOf(stringFromNode(refineArg));
+ refine.setMinElements(min);
+ }
+ }
+ return refine;
+ }
+
+ private static RefineHolder parseRefine(RefineHolder refine,
+ Refine_choice_stmtsContext refineStmt) {
+ refine.setType(Refine.CHOICE);
+ for (int i = 0; i < refineStmt.getChildCount(); i++) {
+ ParseTree refineArg = refineStmt.getChild(i);
+ if (refineArg instanceof Default_stmtContext) {
+ String defaultStr = stringFromNode(refineArg);
+ refine.setDefaultStr(defaultStr);
+ } else if (refineArg instanceof Mandatory_stmtContext) {
+ for (int j = 0; j < refineArg.getChildCount(); j++) {
+ ParseTree mandatoryTree = refineArg.getChild(j);
+ if (mandatoryTree instanceof Mandatory_argContext) {
+ Boolean mandatory = Boolean
+ .valueOf(stringFromNode(mandatoryTree));
+ refine.setMandatory(mandatory);
+ }
+ }
+ }
+ }
+ return refine;
+ }
+
+ private static RefineHolder parseRefine(RefineHolder refine,
+ Refine_anyxml_stmtsContext refineStmt) {
+ refine.setType(Refine.ANYXML);
+ for (int i = 0; i < refineStmt.getChildCount(); i++) {
+ ParseTree refineArg = refineStmt.getChild(i);
+ if (refineArg instanceof Must_stmtContext) {
+ MustDefinition must = parseMust((Must_stmtContext) refineArg);
+ refine.setMust(must);
+ } else if (refineArg instanceof Mandatory_stmtContext) {
+ for (int j = 0; j < refineArg.getChildCount(); j++) {
+ ParseTree mandatoryTree = refineArg.getChild(j);
+ if (mandatoryTree instanceof Mandatory_argContext) {
+ Boolean mandatory = Boolean
+ .valueOf(stringFromNode(mandatoryTree));
+ refine.setMandatory(mandatory);
+ }
+ }
+ }
+ }
+ return refine;
+ }
+