* Licensed 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.
import org.onap.aaf.misc.rosetta.Saved.State;
/**
- * An Out Object that will save off produced Parsed Stream and
+ * An Out Object that will save off produced Parsed Stream and
* a Parse (In) Object that will reproduce Parsed Stream on demand
- *
+ *
* @author Jonathan
*
*/
private Content content[];
private int idx;
private boolean append = false;
-
+
/**
* Read from Parsed Stream and save
*/
// @Override
public<IN,S> void extract(IN in, Writer ignore, Parse<IN,S> parser, boolean ... options) throws IOException, ParseException {
Parsed<S> p = parser.newParsed();
- if(!append) {
+ if (!append) {
// reuse array if not too big
- if(content==null||content.length>INIT_SIZE*3) {
+ if (content==null||content.length>INIT_SIZE*3) {
content = new Content[INIT_SIZE];
idx = -1;
} else do {
content[idx]=null;
- } while(--idx>=0);
+ } while (--idx>=0);
}
-
+
// Note: idx needs to be -1 on initialization and no appendages
- while((p = parser.parse(in,p.reuse())).valid()) {
- if(!(append && (p.event==START_DOC || p.event==END_DOC))) { // skip any start/end of document in appendages
- if(++idx>=content.length) {
+ while ((p = parser.parse(in,p.reuse())).valid()) {
+ if (!(append && (p.event==START_DOC || p.event==END_DOC))) { // skip any start/end of document in appendages
+ if (++idx>=content.length) {
Content temp[] = new Content[content.length*2];
System.arraycopy(content, 0, temp, 0, idx);
content = temp;
}
}
}
-
+
// @Override
public Parsed<State> parse(Reader ignore, Parsed<State> parsed) throws ParseException {
int i;
- if((i=parsed.state.count++)<=idx)
+ if ((i=parsed.state.count++)<=idx)
content[i].load(parsed);
- else
- parsed.event = Parse.NONE;
+ else
+ parsed.event = Parse.NONE;
return parsed;
}
public Content[] cut(char event, int count) {
append = true;
- for(int i=idx;i>=0;--i) {
- if(content[i].event==event) count--;
- if(count==0) {
+ for (int i=idx;i>=0;--i) {
+ if (content[i].event==event) count--;
+ if (count==0) {
Content[] appended = new Content[idx-i+1];
System.arraycopy(content, i, appended, 0, appended.length);
idx = i-1;
}
public void paste(Content[] appended) {
- if(appended!=null) {
- if(idx+appended.length>content.length) {
+ if (appended!=null) {
+ if (idx+appended.length>content.length) {
Content temp[] = new Content[content.length*2];
System.arraycopy(content, 0, temp, 0, idx);
content = temp;
public static class State {
public int count = 0;
}
-
+
public static class Content {
private boolean isString;
private char event;
private String name;
private List<Prop> props;
private String str;
-
+
public Content(Parsed<?> p) {
isString = p.isString;
event = p.event;
p.isString = isString;
p.event = event;
p.name = name;
- if(str!=null)
+ if (str!=null)
p.sb.append(str);
}
-
+
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(event);
sb.append(" - ");
sb.append(name);
sb.append(": ");
- if(isString)sb.append('"');
+ if (isString)sb.append('"');
sb.append(str);
- if(isString)sb.append('"');
+ if (isString)sb.append('"');
sb.append(' ');
- if(props!=null) {
+ if (props!=null) {
boolean comma = false;
- for(Prop prop : props) {
- if(comma)sb.append(',');
+ for (Prop prop : props) {
+ if (comma)sb.append(',');
else comma = true;
sb.append(prop.tag);
sb.append('=');
return sb.toString();
}
}
-
+
//// @Override
public Parsed<State> newParsed() {
Parsed<State> ps = new Parsed<State>(new State());
public TimeTaken start(Env env) {
return env.start(ROSETTA_SAVED, 0);
}
-
+
@Override
public String logName() {
return ROSETTA_SAVED;