/** * Builds an iCalendar model from the specified input stream. * @param in an input stream to read calendar data from * @return a calendar parsed from the specified input stream * @throws java.io.IOException where an error occurs reading data from the specified stream * @throws net.fortuna.ical4j.data.ParserException where an error occurs parsing data from the stream */ public Calendar build(final InputStream in) throws IOException, ParserException { return build(new InputStreamReader(in, DEFAULT_CHARSET)); }
private void processProperties(final JsonParser parser, final BuildState bs) throws ParserException { arrayStart(parser); while (!testArrayEnd(parser)) { processProperty(parser, bs); } }
private String intList(final JsonParser parser) throws ParserException { if (!testNextArrayStart(parser)) { // Single int value return String.valueOf(currentIntField(parser)); } StringBuilder sb = new StringBuilder(); String delim = ""; while (!testArrayEnd(parser)) { sb.append(delim); delim = ","; sb.append(currentIntField(parser)); } return sb.toString(); } }
private void processCalcomps(final JsonParser parser, final BuildState bs) throws ParserException { arrayStart(parser); while (!testArrayEnd(parser)) { processComponent(parser, bs); } }
private String currentFieldName(final JsonParser parser) throws ParserException { expectCurrentToken(parser, JsonToken.FIELD_NAME, "Expected field name"); try { return parser.getText(); } catch (Throwable t) { return (String)handleException(t, parser); } }
arrayStart(parser); sb.append(String.valueOf(floatField(parser))); sb.append(","); sb.append(String.valueOf(floatField(parser))); arrayEnd(parser); arrayStart(parser); sb.append(textField(parser)); sb.append(","); sb.append(textField(parser)); if (!testArrayEnd(parser)) { sb.append(","); sb.append(currentTextField(parser)); arrayEnd(parser); objectStart(parser); while (!testObjectEnd(parser)) { sb.append(delim); delim = ";"; final String recurEl = currentFieldName(parser); sb.append(recurEl.toUpperCase()); sb.append("="); sb.append(recurElVal(parser, recurEl));
private void process(final JsonParser parser, final BuildState bs) throws ParserException { /* ["vcalendar", [ <properties> ], [ <components> ] ] */ try { arrayStart(parser); final String ctype = textField(parser); if (!ctype.equals("vcalendar")) { // error throwException("Expected vcalendar: found " + ctype, parser); } lastComponent = "vcalendar"; bs.setCalendar(null); processVcalendar(parser, bs); if (bs.getCalendar() != null) { bs.getCalendars().add(bs.getCalendar()); } arrayEnd(parser); } catch (final Throwable t) { handleException(t, parser); } }
private void processComponent(final JsonParser parser, final BuildState bs) throws ParserException { currentArrayStart(parser); final String cname = textField(parser).toUpperCase(); lastComponent = cname; bs.getContentHandler().startComponent(cname); /* Properties first */ processProperties(parser, bs); /* Now components */ processCalcomps(parser, bs); bs.getContentHandler().endComponent(cname); arrayEnd(parser); }
private void processProperty(final JsonParser parser, final BuildState bs) throws ParserException { /* Each individual iCalendar property is represented in jCal by an array with three fixed elements, followed by at one or more additional elements, depending on if the property is a multi-value property as described in Section 3.1.2 of [RFC5545]. The array consists of the following fixed elements: 1. The name of the property as a string, but in lowercase. 2. An object containing the parameters as described in Section 3.5. 3. The type identifier string of the value, in lowercase. The remaining elements of the array are used for the value of the property. For single-value properties, the array MUST have exactly four elements, for multi-valued properties as described in Section 3.4.1.1 there can be any number of additional elements. array start should be current token */ currentArrayStart(parser); final String name = textField(parser); lastProperty = name; bs.getContentHandler().startProperty(name); processParameters(parser, bs); final boolean parseArrayEnd = processValue(parser, bs, textField(parser)); bs.getContentHandler().endProperty(name); if (parseArrayEnd) { arrayEnd(parser); } }
private String textList(final JsonParser parser) throws ParserException { if (!testNextArrayStart(parser)) { // Single textt value return currentTextField(parser); } StringBuilder sb = new StringBuilder(); String delim = ""; while (!testArrayEnd(parser)) { sb.append(delim); delim = ","; sb.append(currentTextField(parser)); } return sb.toString(); }
private void processParameter(final JsonParser parser, final BuildState bs) throws ParserException { try { bs.getContentHandler().parameter(currentFieldName(parser), textField(parser)); } catch (Throwable t) { handleException(t, parser); } }
} else if ((contentType != null) && contentType.equals("application/calendar+json")) { JsonCalendarBuilder bldr = new JsonCalendarBuilder(ic); cal = bldr.build(rdr); } else { CalendarBuilder bldr = new CalendarBuilder(new CalendarParserImpl(), ic);
private void currentArrayStart(final JsonParser parser) throws ParserException { expectCurrentToken(parser, JsonToken.START_ARRAY, "Expected array start"); }