Search in sources :

Example 1 with RendererFromCharsToChars

use of org.incode.module.document.dom.impl.renderers.RendererFromCharsToChars in project estatio by estatio.

the class DocumentTemplate method determineDocumentName.

private String determineDocumentName(final Object contentDataModel) {
    serviceRegistry2.injectServicesInto(contentDataModel);
    // subject
    final RendererFromCharsToChars nameRenderer = (RendererFromCharsToChars) getNameRenderingStrategy().newRenderer();
    String renderedDocumentName;
    try {
        renderedDocumentName = nameRenderer.renderCharsToChars(getType(), "name", getAtPath(), getVersion(), getNameText(), contentDataModel);
    } catch (IOException e) {
        renderedDocumentName = getName();
    }
    return withFileSuffix(renderedDocumentName);
}
Also used : RendererFromCharsToChars(org.incode.module.document.dom.impl.renderers.RendererFromCharsToChars) TranslatableString(org.apache.isis.applib.services.i18n.TranslatableString) IOException(java.io.IOException)

Example 2 with RendererFromCharsToChars

use of org.incode.module.document.dom.impl.renderers.RendererFromCharsToChars in project estatio by estatio.

the class DocumentTemplate method renderContent.

// endregion
// region > renderContent (programmatic)
@Programmatic
public void renderContent(final Document document, final Object contentDataModel) {
    final String variant = "content";
    final String documentName = document.getName();
    try {
        final DocumentNature inputNature = getContentRenderingStrategy().getInputNature();
        final DocumentNature outputNature = getContentRenderingStrategy().getOutputNature();
        final Renderer renderer = getContentRenderingStrategy().newRenderer();
        switch(inputNature) {
            case BYTES:
                switch(outputNature) {
                    case BYTES:
                        final byte[] renderedBytes = ((RendererFromBytesToBytes) renderer).renderBytesToBytes(getType(), variant, getAtPath(), getVersion(), asBytes(), contentDataModel);
                        final Blob blob = new Blob(documentName, getMimeType(), renderedBytes);
                        document.modifyBlob(blob);
                        return;
                    case CHARACTERS:
                        final String renderedChars = ((RendererFromBytesToChars) renderer).renderBytesToChars(getType(), variant, getAtPath(), getVersion(), asBytes(), contentDataModel);
                        if (renderedChars.length() <= TextType.Meta.MAX_LEN) {
                            document.setTextData(getName(), getMimeType(), renderedChars);
                        } else {
                            final Clob clob = new Clob(documentName, getMimeType(), renderedChars);
                            document.modifyClob(clob);
                        }
                        return;
                    default:
                        // shouldn't happen, above switch statement is complete
                        throw new IllegalArgumentException(String.format("Unknown output DocumentNature '%s'", outputNature));
                }
            case CHARACTERS:
                switch(outputNature) {
                    case BYTES:
                        final byte[] renderedBytes = ((RendererFromCharsToBytes) renderer).renderCharsToBytes(getType(), variant, getAtPath(), getVersion(), asChars(), contentDataModel);
                        final Blob blob = new Blob(documentName, getMimeType(), renderedBytes);
                        document.modifyBlob(blob);
                        return;
                    case CHARACTERS:
                        final String renderedChars = ((RendererFromCharsToChars) renderer).renderCharsToChars(getType(), variant, getAtPath(), getVersion(), asChars(), contentDataModel);
                        if (renderedChars.length() <= TextType.Meta.MAX_LEN) {
                            document.setTextData(getName(), getMimeType(), renderedChars);
                        } else {
                            final Clob clob = new Clob(documentName, getMimeType(), renderedChars);
                            document.modifyClob(clob);
                        }
                        return;
                    default:
                        // shouldn't happen, above switch statement is complete
                        throw new IllegalArgumentException(String.format("Unknown output DocumentNature '%s'", outputNature));
                }
            default:
                // shouldn't happen, above switch statement is complete
                throw new IllegalArgumentException(String.format("Unknown input DocumentNature '%s'", inputNature));
        }
    } catch (IOException e) {
        throw new ApplicationException("Unable to render document template", e);
    }
}
Also used : Blob(org.apache.isis.applib.value.Blob) RendererFromCharsToChars(org.incode.module.document.dom.impl.renderers.RendererFromCharsToChars) TranslatableString(org.apache.isis.applib.services.i18n.TranslatableString) RendererFromCharsToBytes(org.incode.module.document.dom.impl.renderers.RendererFromCharsToBytes) IOException(java.io.IOException) RendererFromBytesToChars(org.incode.module.document.dom.impl.renderers.RendererFromBytesToChars) RendererFromBytesToBytes(org.incode.module.document.dom.impl.renderers.RendererFromBytesToBytes) ApplicationException(org.apache.isis.applib.ApplicationException) Renderer(org.incode.module.document.dom.impl.renderers.Renderer) Clob(org.apache.isis.applib.value.Clob) Programmatic(org.apache.isis.applib.annotation.Programmatic)

Aggregations

IOException (java.io.IOException)2 TranslatableString (org.apache.isis.applib.services.i18n.TranslatableString)2 RendererFromCharsToChars (org.incode.module.document.dom.impl.renderers.RendererFromCharsToChars)2 ApplicationException (org.apache.isis.applib.ApplicationException)1 Programmatic (org.apache.isis.applib.annotation.Programmatic)1 Blob (org.apache.isis.applib.value.Blob)1 Clob (org.apache.isis.applib.value.Clob)1 Renderer (org.incode.module.document.dom.impl.renderers.Renderer)1 RendererFromBytesToBytes (org.incode.module.document.dom.impl.renderers.RendererFromBytesToBytes)1 RendererFromBytesToChars (org.incode.module.document.dom.impl.renderers.RendererFromBytesToChars)1 RendererFromCharsToBytes (org.incode.module.document.dom.impl.renderers.RendererFromCharsToBytes)1