/******************************************************************************************************************* * * ******************************************************************************************************************/ public <E extends Throwable> void accept (final @Nonnull DocumentVisitor<E> visitor) throws E { visitor.preVisitBody(this); visitor.visitBody(this); for (final Document attachment : getMultiple(ATTACHMENT)) { visitor.visitAttachment(attachment); } visitor.postVisitBody(this); } }
/******************************************************************************************************************* * * * ******************************************************************************************************************/ @Override public void visitAttachment (final @Nonnull Document attachment) throws IOException { write(new File(folder, documentBaseName + getExtension(attachment)), attachment); }
/******************************************************************************************************************* * * ******************************************************************************************************************/ @Override @Nonnull protected Document clone (final @Nonnull Id id, final @Nonnull Map<Key<?>, Object> propertyMap, final @Nonnull Object[] capabilities) { return new Document(id, propertyMap, capabilities); }
final ReportGenerator textReportGenerator = new TextReportGenerator(); traverser.accept(new ProgressObservationVisitorDecorator(textReportGenerator, progressListener)); Document report = new Document().with(SUBJECT, getMessage(_, "observations")) .with(BODY, textReportGenerator.getMessage()) .with(MIME_TYPE, textReportGenerator.getMimeType()); report = report.with(ATTACHMENT, new Document().with(SUBJECT, baseName + "." + extension) .with(MIME_TYPE, mimeType) .with(BODY, reportGenerator.getMessage()));
sendIntent.putExtra(Intent.EXTRA_SUBJECT, document.get(SUBJECT)); sendIntent.putExtra(Intent.EXTRA_TEXT, document.get(BODY)); sendIntent.setType(document.get(MIME_TYPE)); if (!document.getMultiple(ATTACHMENT).isEmpty()) document.accept(new AttachmentZipGenerator(attachmentFile)); sendIntent.setType("application/zip"); sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(attachmentFile));
/******************************************************************************************************************* * * * ******************************************************************************************************************/ @Nonnull private static String getExtension (final @Nonnull Document document) { try { final String ext = EXTENSION_MAP_BY_MIME_TYPE.get(document.get(MIME_TYPE)); return (ext == null) ? "" : "." + ext; } catch (NotFoundException e) { return ""; // no mime type } } }
report.accept(new DocumentWriter(reportBaseName, reportFolder));
/******************************************************************************************************************* * * * ******************************************************************************************************************/ // TODO: increment the ProgressListener @Override public void visitBody (final @Nonnull Document document) throws IOException { write(new File(folder, documentBaseName + ".txt"), document); }
/******************************************************************************************************************* * * * ******************************************************************************************************************/ private void write (final @Nonnull File file, final @Nonnull Document document) throws IOException { log.debug("write({}, {})", file.getAbsolutePath(), document); try { @Cleanup final FileWriter w = new FileWriter(file); w.write(document.get(BODY)); } catch (NotFoundException e) { // ok, no body } }
messages.add(new Document(new Id(link)).with(TITLE, titleExpr.stringValueOf(item)) .with(PUB_DATE, df.parse(pubDateExpr.stringValueOf(item))) .with(DC_CREATOR, dcCreatorExpr.stringValueOf(item)) .with(LINK, link) .with(GUID, guidExpr.stringValueOf(item)) .with(DESCRIPTION, descriptionExpr.stringValueOf(item)) .with(CONTENT, contentExpr.stringValueOf(item)));
public void renderTo (View view, Object... extra) { final Document message = newsItemPM.as(Document.class); try { final String date = preferences.get().formatDateAndTime(message.get(PUB_DATE)); final TextView tvDate = (TextView)view.findViewById(R.id.tvDate); final TextView tvTitle = (TextView)view.findViewById(R.id.tvTitle); tvDate.setText(date); tvTitle.setText(message.get(TITLE)); final int icon = newsItemPM.as(Readable).isRead() ? android.R.drawable.star_off : android.R.drawable.star_on; ((ImageView)view.findViewById(R.id.ivRead)).setImageResource(icon); } catch (NotFoundException e) { } } };
public void populate (final @Nonnull PresentationModel newsItemPM) { try { final Document message = newsItemPM.as(Document.class); final String date = preferences.get().formatDateAndTime((Date)message.get(PUB_DATE)); ((TextView)findViewById(R.id.tvDate)).setText(date); ((TextView)findViewById(R.id.tvTitle)).setText(message.get(TITLE)); final String text = "<html><body>" + UriEncoder.uriEncoded(message.get(CONTENT)) + "</body></html>"; final WebView webView = (WebView)findViewById(R.id.wvContent); webView.setNetworkAvailable(false); webView.loadData(text, "text/html", "utf-8"); } catch (NotFoundException e) { throw new RuntimeException(e); } } }