All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencrx.kernel.utils.rtf.RtfUtil Maven / Gradle / Ivy

The newest version!
/*
 * ====================================================================
 * Project:     openCRX/Core, http://www.opencrx.org/
 * Description: IndexerServlet
 * Owner:       the original authors.
 * ====================================================================
 *
 * This software is published under the BSD license
 * as listed below.
 * 
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions 
 * are met:
 * 
 * * Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 
 * * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in
 * the documentation and/or other materials provided with the
 * distribution.
 * 
 * * Neither the name of the openCRX team nor the names of the contributors
 * to openCRX may be used to endorse or promote products derived
 * from this software without specific prior written permission
 * 
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 * 
 * ------------------
 * 
 * This product includes software developed by the Apache Software
 * Foundation (http://www.apache.org/).
 * 
 * This product includes software developed by contributors to
 * openMDX (http://www.openmdx.org/)
 */
package org.opencrx.kernel.utils.rtf;

import java.text.SimpleDateFormat;
import java.util.Date;

public class RtfUtil {

    public RtfUtil() {
    }

    public static String convertDateToRTFString(Date datum) {
        SimpleDateFormat formater = new SimpleDateFormat("'\\yr'yyyy'\\mo'MM'\\dy'dd'\\hr'HH'\\min'mm'\\sec'ss");
        return formater.format(datum);
    }

    public static String getRTFString(String text) {
        StringBuffer workstr = new StringBuffer();
        for(int i = 0; i < text.length(); i++) {
            char ch = text.charAt(i);
            switch(ch) {
            case 92: // '\\'
                workstr.append("\\\\");
                break;

            case 123: // '{'
                workstr.append("\\{");
                break;

            case 125: // '}'
                workstr.append("\\}");
                break;

            case 9: // '\t'
                workstr.append("{\\tab}");
                break;

            case 16: // '\020'
                workstr.append("{\\line}");
                break;

            default:
                if(ch < '\200') {
                    workstr.append(ch);
                } else {
                    workstr.append("\\u" + String.format("%04d", (int)ch) + "?");                    
                }
                break;
            }
        }
        return workstr.toString();
    }

    public static int getTwipFromMillimeter(double mm) {
        return (int)((mm / 25.399999999999999D) * 1440D + 0.5D);
    }

    public static double getMillimeterFromTwip(int twips) {
        return (twips * 25.399999999999999D) / 1440D;
    }

    public static int getIntegerFromText(
        String buf, 
        int startpos
    ) {
        int result = -1;
        int len;
        for(len = 0; Character.isDigit(buf.charAt(startpos + len)); len++) {}
        try {
            result = Integer.parseInt(buf.substring(startpos, startpos + len));
        }
        catch(NumberFormatException e) {
            result = -1;
        }
        return result;
    }

    public static int getPositionOfTagEnd(
        StringBuffer text, 
        int begin
    ) {
        int end = begin + 1;
        for(int count = 1; count > 0;) {
            if(text.charAt(end) == '{')
                count++;
            else
            if(text.charAt(end) == '}')
                count--;
            end++;
        }
        return end;
    }
    
    public static int getPositionOfTagEnd(
        String text, 
        int begin
    ) {
        int end = begin + 1;
        for(int count = 1; count > 0;) {
            if(text.charAt(end) == '{')
                count++;
            else
            if(text.charAt(end) == '}')
                count--;
            end++;
        }
        return end;
    }
    
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy