home *** CD-ROM | disk | FTP | other *** search
- package com.ibm.xml.internal;
-
- import com.ibm.xml.framework.ContentModel;
- import com.ibm.xml.framework.InsertableElementsInfo;
-
- class SimpleContentModel implements ContentModel {
- int fFirstChild;
- int fSecondChild;
- int fOp;
-
- public SimpleContentModel(int var1, int var2, int var3) {
- this.fFirstChild = var1;
- this.fSecondChild = var2;
- this.fOp = var3;
- }
-
- public int validateContent(int var1, int[] var2) throws Exception {
- switch (this.fOp) {
- case 0:
- if (var1 == 0) {
- return 0;
- }
-
- if (var2[0] != this.fFirstChild) {
- return 0;
- }
-
- if (var1 > 1) {
- return 1;
- }
- break;
- case 1:
- if (var1 == 1 && var2[0] != this.fFirstChild) {
- return 0;
- }
-
- if (var1 > 1) {
- return 1;
- }
- break;
- case 2:
- if (var1 > 0) {
- for(int var4 = 0; var4 < var1; ++var4) {
- if (var2[var4] != this.fFirstChild) {
- return var4;
- }
- }
- }
- break;
- case 3:
- if (var1 == 0) {
- return 0;
- }
-
- for(int var3 = 0; var3 < var1; ++var3) {
- if (var2[var3] != this.fFirstChild) {
- return var3;
- }
- }
- break;
- case 4:
- if (var1 == 0) {
- return 0;
- }
-
- if (var2[0] != this.fFirstChild && var2[0] != this.fSecondChild) {
- return 0;
- }
-
- if (var1 > 1) {
- return 1;
- }
- break;
- case 5:
- if (var1 != 2) {
- if (var1 > 2) {
- return 2;
- }
-
- return var1;
- }
-
- if (var2[0] != this.fFirstChild) {
- return 0;
- }
-
- if (var2[1] != this.fSecondChild) {
- return 1;
- }
- break;
- default:
- throw new CMException(152);
- }
-
- return -1;
- }
-
- public int whatCanGoHere(boolean var1, InsertableElementsInfo var2) throws Exception {
- for(int var3 = var2.insertAt; var3 < var2.childCount; ++var3) {
- var2.curChildren[var3] = var2.curChildren[var3 + 1];
- }
-
- --var2.childCount;
- int var4 = this.validateContent(var2.childCount, var2.curChildren);
- if (var4 != -1 && var4 < var2.insertAt) {
- return var4;
- } else {
- var2.canHoldPCData = false;
- if (this.fOp != 0 && this.fOp != 1 && this.fOp != 2 && this.fOp != 3) {
- if (this.fOp != 4 && this.fOp != 5) {
- throw new CMException(152);
- }
-
- var2.resultsCount = 2;
- } else {
- var2.resultsCount = 1;
- }
-
- if (var2.results == null || var2.results.length < var2.resultsCount) {
- var2.results = new boolean[var2.resultsCount];
- }
-
- if (var2.possibleChildren == null || var2.possibleChildren.length < var2.resultsCount) {
- var2.possibleChildren = new int[var2.resultsCount];
- }
-
- var2.possibleChildren[0] = this.fFirstChild;
- var2.results[0] = false;
- if (var2.resultsCount == 2) {
- var2.possibleChildren[1] = this.fSecondChild;
- var2.results[1] = false;
- }
-
- var2.isValidEOC = false;
- switch (this.fOp) {
- case 0:
- case 1:
- if (var2.childCount == 0) {
- var2.results[0] = true;
- } else if (var2.childCount > 0 && !var1 && var2.insertAt == 0) {
- var2.results[0] = true;
- }
-
- if (this.fOp == 0) {
- if (var2.insertAt == 0) {
- var2.isValidEOC = true;
- }
- } else {
- var2.isValidEOC = true;
- }
- break;
- case 2:
- case 3:
- var2.results[0] = true;
- if (this.fOp == 2 || var2.insertAt > 0) {
- var2.isValidEOC = true;
- }
- break;
- case 4:
- if (var2.insertAt == 0 && !var1 && var2.childCount == 0) {
- var2.results[0] = true;
- var2.results[1] = true;
- }
-
- if (var2.insertAt == 1) {
- var2.isValidEOC = true;
- }
- break;
- case 5:
- if (var2.insertAt == 0) {
- if (var1) {
- if (var2.childCount == 1) {
- var2.results[0] = var2.curChildren[0] == this.fSecondChild;
- }
- } else {
- var2.results[0] = true;
- }
- } else if (var2.insertAt == 1 && (!var1 || var2.childCount == 1)) {
- var2.results[1] = true;
- }
-
- if (var2.insertAt == 2) {
- var2.isValidEOC = true;
- }
- break;
- default:
- throw new CMException(152);
- }
-
- return -1;
- }
- }
- }
-