Example usage for com.liferay.portal.kernel.diff DiffUtil diff

List of usage examples for com.liferay.portal.kernel.diff DiffUtil diff

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.diff DiffUtil diff.

Prototype

public static List<DiffResult>[] diff(Reader source, Reader target) 

Source Link

Document

This is a diff method with default values.

Usage

From source file:com.liferay.document.library.web.internal.portlet.action.CompareVersionsMVCRenderCommand.java

License:Open Source License

protected void compareVersions(RenderRequest renderRequest) throws Exception {

    long sourceFileVersionId = ParamUtil.getLong(renderRequest, "sourceFileVersionId");
    long targetFileVersionId = ParamUtil.getLong(renderRequest, "targetFileVersionId");

    FileVersion sourceFileVersion = _dlAppService.getFileVersion(sourceFileVersionId);

    InputStream sourceIs = sourceFileVersion.getContentStream(false);

    String sourceExtension = sourceFileVersion.getExtension();

    if (sourceExtension.equals("css") || sourceExtension.equals("htm") || sourceExtension.equals("html")
            || sourceExtension.equals("js") || sourceExtension.equals("txt") || sourceExtension.equals("xml")) {

        String sourceContent = HtmlUtil.escape(StringUtil.read(sourceIs));

        sourceIs = new UnsyncByteArrayInputStream(sourceContent.getBytes(StringPool.UTF8));
    }//from   w  w w  .java 2s.  c o  m

    FileVersion targetFileVersion = _dlAppLocalService.getFileVersion(targetFileVersionId);

    InputStream targetIs = targetFileVersion.getContentStream(false);

    String targetExtension = targetFileVersion.getExtension();

    if (targetExtension.equals("css") || targetExtension.equals("htm") || targetExtension.equals("html")
            || targetExtension.equals("js") || targetExtension.equals("txt") || targetExtension.equals("xml")) {

        String targetContent = HtmlUtil.escape(StringUtil.read(targetIs));

        targetIs = new UnsyncByteArrayInputStream(targetContent.getBytes(StringPool.UTF8));
    }

    if (DocumentConversionUtil.isEnabled()) {
        if (DocumentConversionUtil.isConvertBeforeCompare(sourceExtension)) {

            String sourceTempFileId = DLUtil.getTempFileId(sourceFileVersion.getFileEntryId(),
                    sourceFileVersion.getVersion());

            sourceIs = new FileInputStream(
                    DocumentConversionUtil.convert(sourceTempFileId, sourceIs, sourceExtension, "txt"));
        }

        if (DocumentConversionUtil.isConvertBeforeCompare(targetExtension)) {

            String targetTempFileId = DLUtil.getTempFileId(targetFileVersion.getFileEntryId(),
                    targetFileVersion.getVersion());

            targetIs = new FileInputStream(
                    DocumentConversionUtil.convert(targetTempFileId, targetIs, targetExtension, "txt"));
        }
    }

    List<DiffResult>[] diffResults = DiffUtil.diff(new InputStreamReader(sourceIs),
            new InputStreamReader(targetIs));

    renderRequest.setAttribute(WebKeys.DIFF_RESULTS, diffResults);

    renderRequest.setAttribute(WebKeys.SOURCE_NAME,
            sourceFileVersion.getTitle() + StringPool.SPACE + sourceFileVersion.getVersion());
    renderRequest.setAttribute(WebKeys.TARGET_NAME,
            targetFileVersion.getTitle() + StringPool.SPACE + targetFileVersion.getVersion());
}