/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.rdfxml.xmlinput.states; class FullEventRecord extends EventRecord { String state; EventRecord moreCharacter[]; FullEventRecord(String fields[]) { this.fields = fields; state = fields[0]; ix = 1; startEvents = upto("$"); rsltState = fields[ix++]; rsltCharacter = upto("{"); moreCharacter = new EventRecord[count(";")]; for (int i=0;i<moreCharacter.length;i++){ moreCharacter[i] = new EventRecord(); moreCharacter[i].startEvents = upto("$"); moreCharacter[i].rsltState = fields[ix++]; moreCharacter[i].rsltCharacter = upto(";"); moreCharacter[i].checkStar(state); } checkStar(state); } @Override public String toString() { StringBuilder rslt = new StringBuilder( "|"+state+"| " + super.toString()); rslt.append("{ "); for ( EventRecord aMoreCharacter : moreCharacter ) { rslt.append( aMoreCharacter.toString() + " ; " ); } rslt.append(" }"); return rslt.toString(); } private int count(String sep) { int rslt = 0; for (int i = 0; i+ix <fields.length; i++) if (sep.equals(fields[i+ix])) rslt++; return rslt; } private String[] upto(String sep) { String rslt[] = new String[dist(sep)]; System.arraycopy(fields,ix,rslt,0,rslt.length); ix += rslt.length + 1; return rslt; } private int dist(String sep) { int rslt; if (ix >= fields.length) return 0; for (rslt = 0; !sep.equals(fields[ix+rslt]); rslt++) if (rslt+ix==fields.length-1) return 0; return rslt; } String fields[]; int ix; }