org.fnppl.opensdx.keyserverfe.Helper.java Source code

Java tutorial

Introduction

Here is the source code for org.fnppl.opensdx.keyserverfe.Helper.java

Source

package org.fnppl.opensdx.keyserverfe;
/*
 * Copyright (C) 2010-2015 
 *                      fine people e.V. <opensdx@fnppl.org> 
 *                      Henning Thie <ht@fnppl.org>
 * 
 *                      http://fnppl.org
 */

/*
 * Software license
 *
 * As far as this file or parts of this file is/are software, rather than documentation, this software-license applies / shall be applied.
 *  
 * This file is part of openSDX
 * openSDX is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * openSDX is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * and GNU General Public License along with openSDX.
 * If not, see <http://www.gnu.org/licenses/>.
 *      
 */

/*
 * Documentation license
 * 
 * As far as this file or parts of this file is/are documentation, rather than software, this documentation-license applies / shall be applied.
 * 
 * This file is part of openSDX.
 * Permission is granted to copy, distribute and/or modify this document 
 * under the terms of the GNU Free Documentation License, Version 1.3 
 * or any later version published by the Free Software Foundation; 
 * with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. 
 * A copy of the license is included in the section entitled "GNU 
 * Free Documentation License" resp. in the file called "FDL.txt".
 * 
 */

import java.io.*;
import java.util.*;
import java.util.regex.*;
import java.net.*;
import java.text.*;

import org.fnppl.dbaccess.DBResultSet;
import org.jdom2.*;
import org.jdom2.output.*;

public class Helper {
    public static final String XML_OUTPUTTER_CHARSET = "UTF-8";

    private static final IdGenerator IDGen = new IdGenerator();

    public static String createTmpId() {
        long jetzt = IDGen.getTimestamp();
        return "tmp" + jetzt;
    }

    public static long getTimeStamp() {
        return IDGen.getTimestamp();
    }

    public static String elementToString(Element e) {
        if (e == null)
            return null;

        try {
            org.jdom2.output.Format f = org.jdom2.output.Format.getPrettyFormat();
            f.setEncoding(XML_OUTPUTTER_CHARSET);
            XMLOutputter xmlOutputter = new XMLOutputter(f);

            ByteArrayOutputStream baous = new ByteArrayOutputStream();
            xmlOutputter.output(e, baous);
            return baous.toString();
        } catch (Exception x) {
            x.printStackTrace();
            return null;
        }
    }

    public static String elementToString(Document doc) {
        if (doc == null)
            return null;

        try {
            org.jdom2.output.Format f = org.jdom2.output.Format.getPrettyFormat();
            f.setEncoding(XML_OUTPUTTER_CHARSET);
            XMLOutputter xmlOutputter = new XMLOutputter(f);

            ByteArrayOutputStream baous = new ByteArrayOutputStream();

            return baous.toString();
        } catch (Exception x) {
            x.printStackTrace();
            return null;
        }
    }

    public static void elementToWriter(Document e, OutputStreamWriter w) {
        if (e == null)
            return;

        try {
            org.jdom2.output.Format f = org.jdom2.output.Format.getPrettyFormat();
            f.setEncoding(XML_OUTPUTTER_CHARSET);
            XMLOutputter xmlOutputter = new XMLOutputter(f);

            xmlOutputter.output(e, w);
        } catch (Exception x) {
            x.printStackTrace();
            return;
        }
    }

    public static void elementToWriter(Element e, OutputStreamWriter w) {
        if (e == null)
            return;

        try {
            org.jdom2.output.Format f = org.jdom2.output.Format.getPrettyFormat();
            f.setEncoding(XML_OUTPUTTER_CHARSET);
            XMLOutputter xmlOutputter = new XMLOutputter(f);

            xmlOutputter.output(e, w);
        } catch (Exception x) {
            x.printStackTrace();
            return;
        }
    }

    public static String buildSessionXml(Hashtable hash) {
        Element e = new Element("sessiondata");

        Enumeration en = hash.keys();
        while (en.hasMoreElements()) {
            String key = (String) en.nextElement();
            Object value = hash.get(key);

            if (value instanceof String) {
                e.addContent((new Element(key)).setText((String) value));
            }
        }

        org.jdom2.output.XMLOutputter xout = new org.jdom2.output.XMLOutputter();
        return xout.outputString(e);
    }

    public static void printHashtable(Hashtable hash) {
        Enumeration en = hash.keys();
        while (en.hasMoreElements()) {
            String key = (String) en.nextElement();
            Object value = hash.get(key);

            System.out.println(key + " -> " + value);
        }

    }

    public static Hashtable buildSessionHash(String xml) {
        Hashtable hash = new Hashtable();
        org.jdom2.input.SAXBuilder sax = new org.jdom2.input.SAXBuilder(false);
        try {
            Element e = sax.build(new StringReader(xml)).getRootElement();
            Iterator it = e.getChildren().iterator();
            while (it.hasNext()) {
                Element ee = (Element) it.next();
                hash.put(ee.getName(), ee.getText());
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            hash = null;
        }

        return hash;
    }

    public static String dbEncode(String s) {
        StringBuffer ret = new StringBuffer();

        if (s == null)
            s = "";

        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);

            if (c == '\'') {
                ret.append('\'');//scheint die neue syntax zu sein HT 15.01.2008
            }

            ret.append(c);
        }

        return ret.toString();
    }

    public static String toHex(byte[] b) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < b.length; i++) {
            int k = b[i];
            if (b[i] < 0) {
                k = Byte.MAX_VALUE;
                k += (Byte.MIN_VALUE - b[i]) * -1 + 1;
            }
            if (k < 16) {
                sb.append("0");
            }
            sb.append(Integer.toHexString(k));
        }

        return sb.toString();
    }

    public static String getMD5ForData(byte[] b) {
        try {
            java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");

            md.update(b);
            return toHex(md.digest());
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return "";
    }

public static String umlautEncode(String src) {
    StringBuffer s=new StringBuffer();
    int wo;
    for(int i=0; i<src.length(); i++) {
        char c = src.charAt(i);
            
        switch(c) {
            case '':
                s.append("ae");
                break;
            case '':
                s.append("Ae");
                break;
            case '':
                s.append("oe");
                break;
            case '':
                s.append("Oe");
                break;                
            case '':
                s.append("Ue");
                break;
            case '':
                s.append("ue");
                break;
            case '':
                s.append("ss");
                break;
            case ' ':
                s.append("_");
                break;
            case '"':
                break;
            case '?':
                break;
            case '/':
                s.append("_");
                break;
            case '!':
                break;
            case '&':
                s.append(" and ");
                break;
            default:
                s.append(c);
                break;
        }
    }
    return s.toString();
}

    public static Element dbResultSetToElement(DBResultSet rset) {
        return dbResultSetToElement(rset, null);
    }

    public static Element dbResultSetToElement(DBResultSet rset, Vector<String> columnnames) {
        Element raus = new Element("resultset");

        if (columnnames == null) {
            columnnames = rset.gimmeColNames();
        }

        Element meta = new Element("meta");
        meta.addContent(new Element("columncount").setText(String.valueOf(columnnames.size())));
        meta.addContent(new Element("rowcount").setText(String.valueOf(rset.height())));
        Element e = new Element("columnnames");
        for (int kk = 0; kk < columnnames.size(); kk++)
            e.addContent(new Element("col" + kk).setText(columnnames.elementAt(kk)));
        meta.addContent(e);

        raus.addContent(meta);

        Element row;
        for (int aa = 0; aa < rset.height(); aa++) {
            row = new Element("row" + aa);
            for (int bb = 0; bb < columnnames.size(); bb++) {
                row.addContent(new Element("col" + bb).setText(rset.getValueOf(aa, columnnames.elementAt(bb))));
            }
            raus.addContent(row);
        }

        return raus;
    }

    public static Element dbResultSetToNamelyElement(DBResultSet rset, String retname, String linename //, 
    //String dateColName
    ) {
        Element raus = new Element(retname);
        String tmpCol = null;

        Vector<String> columnames = rset.gimmeColNames();

        for (int i = 0; i < rset.height(); i++) {
            Element me = new Element(linename);
            raus.addContent(me);

            for (int ii = 0; ii < columnames.size(); ii++) {
                Element e = new Element(columnames.elementAt(ii));
                me.addContent(e);

                tmpCol = rset.getValueOf(i, columnames.elementAt(ii));

                //              if(columnames[ii].equalsIgnoreCase(dateColName)){
                //                 e.setText(Helper.getDateStringFromMillis(Long.parseLong(tmpCol)));
                //              }
                //              else{
                e.setText(rset.getValueOf(i, columnames.elementAt(ii)));
                //              }
            }
        }

        return raus;
    }

    public static void handleInput(final String prefix, final Process p) {
        Thread t = new Thread() {
            public void run() {
                try {
                    InputStream out = p.getInputStream();
                    BufferedReader br = new BufferedReader(new InputStreamReader(out));
                    String zeile = "";
                    while ((zeile = br.readLine()) != null) {
                        //appendMsg("in: "+zeile+"\n");
                        //                        Logger.logMsg(prefix+":: "+zeile);
                    }

                } catch (Exception ex) {
                    //appendErr(exceptionToString(ex)+"\n");
                    ex.printStackTrace();
                }
            }
        };
        t.start();

        t = new Thread() {
            public void run() {
                try {
                    InputStream out = p.getErrorStream();
                    BufferedReader br = new BufferedReader(new InputStreamReader(out));
                    String zeile = "";
                    while ((zeile = br.readLine()) != null) {
                        //appendMsg("err: "+zeile+"\n");
                        //                        Logger.logMsg(prefix+":: "+zeile);
                    }
                } catch (Exception ex) {
                    //                    appendErr(exceptionToString(ex)+"\n");
                    ex.printStackTrace();
                }
            }
        };
        t.start();
    }

    private static void putIfPresent(Map tags, String key, String value) {
        if (value != null)
            try {
                tags.put(key, value);
            } catch (Exception e) {
                e.printStackTrace();
            }
    }

    public static String getYear(String date) throws Exception {
        long l = Long.parseLong(date);
        Calendar cal = Calendar.getInstance();
        cal.setTimeInMillis(l);
        return String.valueOf(cal.get(Calendar.YEAR));
    }

    public static byte[] getFileAsBytes(String filename) {
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        try {
            File f = new File(filename);
            FileInputStream fin = new FileInputStream(f);
            byte[] b = new byte[32000];
            int r = 0;
            while ((r = fin.read(b)) != -1) {
                bout.write(b, 0, r);
            }
            fin.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        //        Logger.logMsg("file-ret: "+bout.size());
        return bout.toByteArray();
    }

    public static String join(Collection c, String separator) {
        StringBuffer sb = new StringBuffer();
        for (Iterator ito = c.iterator(); ito.hasNext();) {
            sb.append(String.valueOf(ito.next()));
            if (ito.hasNext()) {
                sb.append(separator);
            }
        }

        return sb.toString();
    }

    public static String join(Object[] o, String separator) {
        StringBuffer sb = new StringBuffer();
        for (int ii = 0; ii < o.length; ii++) {
            sb.append(String.valueOf(o[ii]));
            if (ii < o.length - 1) {
                sb.append(separator);
            }
        }

        return sb.toString();
    }

    public static String join(Object[] o, String separator, String prefix) {
        StringBuffer sb = new StringBuffer();
        for (int ii = 0; ii < o.length; ii++) {
            sb.append("'" + prefix + String.valueOf(o[ii]) + "'");
            if (ii < o.length - 1) {
                sb.append(separator);
            }
        }

        return sb.toString();
    }

    /** MIT klammern */
    public static String asSQLList(Collection c) {
        String s = join(c, ",");
        if (s.length() == 0)
            return "(null)";
        else
            return "(" + s + ")";
    }

    /** MIT klammern */
    public static String asSQLList(Object[] o) {
        String s = join(o, ",");
        if (s.length() == 0)
            return "(null)";
        else
            return "(" + s + ")";
    }

    public static String asSQLList(Object[] o, String prefix) {
        String s = join(o, ",", prefix);
        if (s.length() == 0)
            return "(null)";
        else
            return "(" + s + ")";
    }

public static String simplifyMax(String src) {
    StringBuffer s=new StringBuffer();
        
    if(src==null) return "";
        
    int wo;
    for(int i=0; i<src.length(); i++) {
        char c = src.charAt(i);
        switch(c) {
            case '':
                s.append("ae");
                break;
            case '':
                s.append("Ae");
                break;
            case '':
                s.append("oe");
                break;
            case '':
                s.append("Oe");
                break;                
            case '':
                s.append("Ue");
                break;
            case '':
                s.append("ue");
                break;
            case '':
                s.append("ss");
                break;
            case ' ':
                s.append("_");
                break;
            case ':':
                s.append("_");
                break;
            case '.':                    
                break;
            case ';':                    
                break;
            case '/':                    
                break;
            default:
                if(Character.isLetterOrDigit(c)) {
                    s.append(c);
                }
                break;
        }
    }
    return s.toString();
}

    public static void copy(File src, File dst) throws Exception {

        FileInputStream fin = new FileInputStream(src);
        FileOutputStream fout = new FileOutputStream(dst);

        copy(fin, fout);

        fout.close();
        fin.close();
    }

    public static void copy(InputStream fin, OutputStream fout) throws Exception {
        byte[] buff = new byte[128000];
        int r = 0;

        while ((r = fin.read(buff)) > 0) {
            fout.write(buff, 0, r);
        }
        fout.flush();
    }

    public static String cuteCut(String s, int len, char c) {
        if (s.length() > len) {
            return s.substring(0, len);
        }
        return paddUp(s.subSequence(0, s.length()), len, c);
    }

    public static String paddUp(CharSequence s, int len, char c) {
        StringBuffer sb = s == null ? new StringBuffer(len) : new StringBuffer(s.toString());
        for (; sb.length() < len; sb.append(c))
            ;
        return sb.toString();
    }

    public static boolean eq(Object o1, Object o2) {
        return o1 == o2 || o1 != null && o1.equals(o2);
    }

    public static boolean domBoolean(String arg) {
        return arg != null && arg.length() > 0 && ("t".equals(arg) || "true".equals(arg));
    }

    public static String domBigInt(String arg) {
        try {
            return String.valueOf(Long.parseLong(arg));
        } catch (Exception x) {
            return "-1";
        }
    }

    public static void handleInput(final Process p) {
        Thread t = new Thread() {
            public void run() {
                try {
                    InputStream out = p.getInputStream();
                    BufferedReader br = new BufferedReader(new InputStreamReader(out));
                    String zeile = "";
                    while ((zeile = br.readLine()) != null) {
                        //appendMsg("in: "+zeile+"\n");
                        System.out.println(zeile);
                    }

                } catch (Exception ex) {
                    //appendErr(exceptionToString(ex)+"\n");
                    ex.printStackTrace();
                }
            }
        };
        t.start();

        t = new Thread() {
            public void run() {
                try {
                    InputStream out = p.getErrorStream();
                    BufferedReader br = new BufferedReader(new InputStreamReader(out));
                    String zeile = "";
                    while ((zeile = br.readLine()) != null) {
                        //appendMsg("err: "+zeile+"\n");
                        //Logger.logMsg("err: "+zeile+"\n");
                        System.err.println(zeile);
                    }
                } catch (Exception ex) {
                    //appendErr(exceptionToString(ex)+"\n");
                    ex.printStackTrace();
                }
            }
        };
        t.start();
    }

}