⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlutil.java

📁 java servlet著名论坛源代码
💻 JAVA
字号:
/*
 * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/admin/importexport/XMLUtil.java,v 1.2 2004/01/18 19:13:10 minhnn Exp $
 * $Author: minhnn $
 * $Revision: 1.2 $
 * $Date: 2004/01/18 19:13:10 $
 *
 * ====================================================================
 *
 * Copyright (C) 2002-2004 by MyVietnam.net
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or any later version.
 *
 * All copyright notices regarding mvnForum MUST remain intact
 * in the scripts and in the outputted HTML.
 * The "powered by" text/logo with a link back to
 * http://www.mvnForum.com and http://www.MyVietnam.net in the
 * footer of the pages MUST remain visible when the pages
 * are viewed on the internet or intranet.
 *
 * This program 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 General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * Support can be obtained from support forums at:
 * http://www.mvnForum.com/mvnforum/index
 *
 * Correspondence and Marketing Questions can be sent to:
 * info@MyVietnam.net
 *
 * @author: Igor Manic   imanic@users.sourceforge.net
 */
package com.mvnforum.admin.importexport;

import java.sql.Timestamp;
import java.text.*;
import java.util.Locale;

import net.myvietnam.mvncore.util.DateUtil;

/**
 * @author <a href="mailto:imanic@users.sourceforge.net">Igor Manic</a>
 * @version $Revision: 1.2 $, $Date: 2004/01/18 19:13:10 $
 * <br/>
 * <code>XMLUtil</code> todo Igor: enter description
 *
 */
public class XMLUtil {

    private XMLUtil() {
    }

    /**
     * Parses integer value out of a string.
     * If the string is invalid, it throws <code>NumberFormatException</code>,
     * so a calling method knows of that issue.<br/>
     *
     * @param value <code>String</code> to be parsed
     * @param defaultValue Default <code>int</code> value if <code>value==null</code>
     *
     * @return Parsed <code>int</code> value.
     * @throws NumberFormatException If <code>value</code> is not valid number.
     *
     */
    public static int stringToIntDef(String value, int defaultValue)
    throws NumberFormatException {
        if (value==null) return defaultValue;
        else return Integer.parseInt(value);
    }

    //1=male, 0=female
    public static int stringToGender(String s) {
        if (s.equalsIgnoreCase("male") || s.equals("1")) {
            return 1;
        } else if (s.equalsIgnoreCase("female") || s.equals("0")) {
            return 0;
        } else throw new IllegalArgumentException("Illegal gender string format.");
    }

    public static int stringToGenderDef(String value, int defaultValue) {
        if (value==null) return defaultValue;
        else return stringToGender(value);
    }

    public static String genderToString(int gender) {
        if (gender==0) return "0";       //or, is it better to return "female" ?
        else if (gender==1) return "1"; //"male"
        else throw new IllegalArgumentException("Illegal gender value.");
    }

//todo Igor: add utility methods for IPs and permissions

    public static boolean stringToBoolean(String s) {
        if (s.equalsIgnoreCase("true") || s.equalsIgnoreCase("yes") || s.equals("1")) {
            return true;
        } else if (s.equalsIgnoreCase("false") || s.equalsIgnoreCase("no") || s.equals("0")) {
            return false;
        } else throw new IllegalArgumentException("Illegal boolean format.");
    }

    public static boolean stringToBooleanDef(String value, boolean defaultValue) {
        if (value==null) return defaultValue;
        else return stringToBoolean(value);
    }

    public static String booleanToString(boolean value) {
        if (value) return "true";
        else       return "false";
    }

    public static java.sql.Date stringToSqlDate(String s) {
        /* I have to accept following formats:
         *    yyyy/MM/dd
         *    yyyy-MM-dd
         *    yyyyMMdd
         *    EEE MMM dd yyyy  (e.g.: "Fri Jan 16 2002")
         */
        if (s==null) throw new java.lang.IllegalArgumentException("null string");
        s=s.trim();

        //SimpleDateFormat f1=new SimpleDateFormat("yyyy/MM/dd", Locale.US);
        //SimpleDateFormat f2=new SimpleDateFormat("yyyy-MM-dd", Locale.US);
        //SimpleDateFormat f3=new SimpleDateFormat("yyyyMMdd", Locale.US);
        //SimpleDateFormat f4=new SimpleDateFormat("EEE MMM dd yyyy", Locale.US); //example: "Fri Jan 16 2002"
        try {
            //discover the format pattern to use for parsing
            SimpleDateFormat f=/*f3*/new SimpleDateFormat("yyyyMMdd", Locale.US);
            if (s.indexOf('/')>0) f=/*f1*/new SimpleDateFormat("yyyy/MM/dd", Locale.US);
            else if (s.indexOf('-')>0) f=/*f2*/new SimpleDateFormat("yyyy-MM-dd", Locale.US);
            else if (s.indexOf(' ')>0) f=/*f4*/new SimpleDateFormat("EEE MMM dd yyyy", Locale.US);
            java.util.Date d=f.parse(s);
            return new java.sql.Date(d.getTime());
        } catch (ParseException e) {
            throw new java.lang.IllegalArgumentException("Invalid date format: \""+s+"\"");
        }
    }

    public static java.sql.Date stringToSqlDateDef(String value, java.sql.Date defaultValue) {
        if (value==null) return defaultValue;
        else return stringToSqlDate(value);
    }

    public static java.sql.Date stringToSqlDateDefNow(String value) {
        Timestamp now = DateUtil.getCurrentGMTTimestamp();
        return stringToSqlDateDef(value, new java.sql.Date(now.getTime()));
    }

    public static java.sql.Date stringToSqlDateDefNull(String value) {
        /* todo Igor: important: must change this so it doesn't return now()
         * but null, as it should. For now, I must not return null, because
         * db.*WebHelper classes don't handle null dates correctly.
         * They should check if aDate is null and if it is, don't send null
         * to SQL engine (since database schema states it must be non-null),
         * but send empty string in the query, so SQL engine will do the rest.
        if (value==null) return null;
        else return stringToSqlDate(value);
         */
        return stringToSqlDateDefNow(value);
    }

    public static String sqlDateToString(java.sql.Date value) {
        DateFormat frm = new SimpleDateFormat("yyyy/MM/dd", Locale.US);
        return frm.format(value);
    }

    public static String sqlDateToStringDefNow(java.sql.Date value) {
        Timestamp now = DateUtil.getCurrentGMTTimestamp();
        if (value==null) return sqlDateToString(new java.sql.Date(now.getTime()));
        else return sqlDateToString(value);
    }

    public static String sqlDateToStringDefEmpty(java.sql.Date value) {
        //todo Igor: should I return "0000-00-00 00:00:00" instead of ""? same for Timestamp
        if (value==null) return "";
        else return sqlDateToString(value);
    }

    public static java.sql.Timestamp stringToSqlTimestamp(String s) {
        /* I have to accept following formats:
         *    yyyy/MM/dd HH:mm:ss.nn
         *    yyyy-MM-dd HH:mm:ss.nn
         *    yyyyMMddHHmmssnn
         *    EEE MMM dd HH:mm:ss z yyyy  (e.g.: "Fri Jan 16 18:48:25 CEST 2002")
         * In first three formats, last nn are hundreths and are optional
         */
        if (s==null) throw new java.lang.IllegalArgumentException("null string");
        s=s.trim();

        //SimpleDateFormat f1=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.US); //may have extra ".nn" on the end (hundreths)
        //SimpleDateFormat f2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); //may have extra ".nn" on the end (hundreths)
        //SimpleDateFormat f3=new SimpleDateFormat("yyyyMMddHHmmss", Locale.US); //may have extra "nn" on the end (hundreths)
        //SimpleDateFormat f4=new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US); //example: "Fri Jan 16 18:48:25 CEST 2002"
        try {
            //discover the format pattern to use for parsing
            SimpleDateFormat f=/*f3*/new SimpleDateFormat("yyyyMMddHHmmss", Locale.US);
            if (s.indexOf('/')>0) {
                s=s.substring(0, 19); //cut hundreths if they exist
                f=/*f1*/new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.US);
            } else if (s.indexOf('-')>0) {
                s=s.substring(0, 19); //cut hundreths if they exist
                f=/*f2*/new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
            } else if (s.indexOf(' ')>0) {
                f=/*f4*/new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
            } else {
                s=s.substring(0, 14); //cut hundreths if they exist
                f=/*f3*/new SimpleDateFormat("yyyyMMddHHmmss", Locale.US);
            }
            java.util.Date d=f.parse(s);
            return new Timestamp(d.getTime());
        } catch (StringIndexOutOfBoundsException e) {
            throw new java.lang.IllegalArgumentException("Invalid timestamp format: \""+s+"\"");
        } catch (ParseException e) {
            throw new java.lang.IllegalArgumentException("Invalid timestamp format: \""+s+"\"");
        }
    }

    public static java.sql.Timestamp stringToSqlTimestampDef(String value, java.sql.Timestamp defaultValue) {
        if (value==null) return defaultValue;
        else return stringToSqlTimestamp(value);
    }

    public static java.sql.Timestamp stringToSqlTimestampDefNow(String value) {
        Timestamp now = DateUtil.getCurrentGMTTimestamp();
        return stringToSqlTimestampDef(value, now);
    }

    public static java.sql.Timestamp stringToSqlTimestampDefNull(String value) {
        /* todo Igor: important: must change this so it doesn't return now()
         * but null, as it should. For now, I must not return null, because
         * db.*WebHelper classes don't handle null dates correctly.
         * They should check if aTimestamp is null and if it is, don't send null
         * to SQL engine (since database schema states it must be non-null),
         * but send empty string in the query, so SQL engine will do the rest.
        if (value==null) return null;
        else return stringToSqlTimestamp(value);
         */
        return stringToSqlTimestampDefNow(value);
    }

    public static String sqlTimestampToString(java.sql.Timestamp value) {
        DateFormat frm = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.US);
        return frm.format(value);
    }

    public static String sqlTimestampToStringDefNow(java.sql.Timestamp value) {
        Timestamp now = DateUtil.getCurrentGMTTimestamp();
        if (value==null) return sqlTimestampToString(now);
        else return sqlTimestampToString(value);
    }

    public static String sqlTimestampToStringDefEmpty(java.sql.Timestamp value) {
        if (value==null) return "";
        else return sqlTimestampToString(value);
    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -