package com.mossle.internal.sequence.support; import java.util.ArrayList; import java.util.Date; import java.util.List; public class SequenceParser { public SequenceRule parse(String text) { List<SequencePart> sequenceParts = new ArrayList<SequencePart>(); StringBuilder buff = new StringBuilder(); boolean inBacket = false; for (int i = 0, len = text.length(); i < len; i++) { char c = text.charAt(i); switch (c) { case '{': if (inBacket) { throw new IllegalStateException("invalid rule : " + text + ", index : " + i + ", char : " + c); } if (buff.length() > 0) { sequenceParts.add(new SequencePart(buff.toString())); buff = new StringBuilder(); } buff.append("{"); inBacket = true; break; case '}': if (!inBacket) { // throw new IllegalStateException("invalid rule : " + text + ", index : " + i + ", char : " + c); buff.append(c); break; } if (buff.length() == 0) { throw new IllegalStateException("invalid rule : " + text + ", index : " + i + ", char : " + c); } buff.append("}"); sequenceParts.add(new SequencePart(buff.toString())); buff = new StringBuilder(); inBacket = false; break; default: buff.append(c); } } if (buff.length() > 0) { sequenceParts.add(new SequencePart(buff.toString())); } SequenceRule sequenceRule = new SequenceRule(sequenceParts); return sequenceRule; } }