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

📄 oracletimestampformat.java

📁 mysql集群
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/*****************************************************************************      SQLJEP - Java SQL Expression Parser 0.2      November 1 2006         (c) Copyright 2006, Alexey Gaidukov      SQLJEP Author: Alexey Gaidukov      SQLJEP is based on JEP 2.24 (http://www.singularsys.com/jep/)           (c) Copyright 2002, Nathan Funk       See LICENSE.txt for license information.*****************************************************************************/package com.meidusa.amoeba.sqljep.function;import java.util.*;import java.text.*;import static java.util.Calendar.*;import com.meidusa.amoeba.sqljep.function.OracleDateFormat;import com.meidusa.amoeba.sqljep.function.OracleTimeFormat;public class OracleTimestampFormat extends Format {	private static final String PATTERN_EXCEPTION = "Wrong pattern";	private static final String FORMAT_EXCEPTION = "Wrong pattern";	private static final String NOT_IMPLIMENTED_EXCEPTION = "Not implimented";	private static final String BAD_INPUT_PATTERN = "Format code cannot appear in date input format";	private static final String BAD_HH12 = "Hour must be between 1 and 12";	protected static final Hashtable<String, ArrayList<Object>> formatsCache = new Hashtable<String, ArrayList<Object>>();	protected static final ArrayList<DATE> dateSymbols = new ArrayList<DATE>();	protected static final ArrayList<DATE> timeSymbols = new ArrayList<DATE>();	protected ArrayList<Object> format = null;		protected Calendar cal;	protected DateFormatSymbols symb;		public static abstract class DATE {		abstract public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) 				throws java.text.ParseException;		abstract public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) 				throws java.text.ParseException;		public boolean equals(Comparable<?>  obj) {			if (obj == null) {				return false;			}			return (obj.getClass() == this.getClass());		}	};		public static abstract class TIME extends DATE {	};	// ERA	public static final class fBC extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			String[] eras = symb.getEras();			int era = cal.get(ERA);			str.append(eras[era]);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			String[] eras = symb.getEras();			int idx = pos.getIndex();			for (int i = 0; i < eras.length; i++) {				int len = eras[i].length();				if (source.regionMatches(false, idx, eras[i], 0, len)) {					pos.setIndex(idx+len);					cal.set(ERA, i);					return;				}			}			throw new java.text.ParseException("", 0);		}		public String toString() {			return "BC";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new fBC());	}	public static final class fAD extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			String[] eras = symb.getEras();			int era = cal.get(ERA);			str.append(eras[era]);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			String[] eras = symb.getEras();			int idx = pos.getIndex();			for (int i = 0; i < eras.length; i++) {				int len = eras[i].length();				if (source.regionMatches(true, idx, eras[i], 0, len)) {					pos.setIndex(idx+len);					cal.set(ERA, i);					return;				}			}			throw new java.text.ParseException("", 0);		}		public String toString() {			return "AD";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new fAD());	}	public static final class BdCd extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int era = cal.get(ERA);			str.append(era == GregorianCalendar.BC ? "b.c." : "a.d.");			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			int i = pos.getIndex();			String t = source.substring(i, i+4);			if (toString().equals(t.toUpperCase())) {				pos.setIndex(i+4);				cal.set(ERA, GregorianCalendar.BC);			}			else if (t.toUpperCase().equals("A.D.")) {				pos.setIndex(i+4);				cal.set(ERA, GregorianCalendar.AD);			} else {				throw new java.text.ParseException("", 0);			}		}		public String toString() {			return "B.C.";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new BdCd());	}	public static final class AdDd extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int era = cal.get(ERA);			str.append(era == GregorianCalendar.AD ? "a.d." : "b.c.");			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			int i = pos.getIndex();			String t = source.substring(i, i+4);			if (toString().equals(t.toUpperCase())) {				pos.setIndex(i+4);				cal.set(ERA, GregorianCalendar.AD);			}			else if (t.toUpperCase().equals("B.C.")) {				pos.setIndex(i+4);				cal.set(ERA, GregorianCalendar.BC);			} else {				throw new java.text.ParseException("", 0);			}		}		public String toString() {			return "A.D.";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new AdDd());	}		// CENTURE	public static final class SCC extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int year = cal.get(YEAR);			String cc = Integer.toString((year/100)*100);			if (cc.length() == 1) {				str.append('0');			}			str.append(cc);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			throw new java.text.ParseException(BAD_INPUT_PATTERN, 0);		}		public String toString() {			return "SCC";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new SCC());	}	public static final class CC extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int year = cal.get(YEAR);			String cc = Integer.toString(Math.abs((year/100)*100));			if (cc.length() == 1) {				str.append('0');			}			str.append(cc);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			throw new java.text.ParseException(BAD_INPUT_PATTERN, 0);		}		public String toString() {			return "CC";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new CC());	}		// YEAR	public static final class SYYYY extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int year = cal.get(YEAR);			String y = Integer.toString(year);			for (int i = y.length(); i < 4; i++) {				str.append('0');			}			str.append(y);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			boolean negate = false;			if (getSign(source, pos) == '-') {				negate = true;			}			int year = getNumber(source, pos, 4);			if (negate) {				year = -year;			}			cal.set(YEAR, year);		}		public String toString() {			return "SYYYY";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new SYYYY());	}	public static final class YYYY extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int year = cal.get(YEAR);			String y = Integer.toString(Math.abs(year));			for (int i = y.length(); i < 4; i++) {				str.append('0');			}			str.append(y);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			int year = getNumber(source, pos, 4);			cal.set(YEAR, year);		}		public String toString() {			return "YYYY";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new YYYY());	}	public static final class YcYYY extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int year = cal.get(YEAR);			String y = Integer.toString(year/1000);			str.append(y+',');			String yyy = Integer.toString(year-(year/1000)*1000);			for (int i = y.length(); i < 3; i++) {				str.append('0');			}			str.append(yyy);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			getNumber(source, pos, 1);			int i = pos.getIndex();			String d = source.charAt(i-1)+"";			int year;			if (source.charAt(i) == ',') {				++i;				pos.setIndex(i);				getNumber(source, pos, 3);				d += source.substring(i, pos.getIndex());				year = Integer.valueOf(d);			} else {				pos.setIndex(i-1);				year = getNumber(source, pos, 4);			}			cal.set(YEAR, year);		}		public String toString() {			return "Y,YYY";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new YcYYY());	}	public static final class YYY extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int year = cal.get(YEAR);			String y = Integer.toString(year - (year/1000)*1000);			for (int i = y.length(); i < 3; i++) {				str.append('0');			}			str.append(y);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			int year = getNumber(source, pos, 3);			int y = (cal.get(YEAR)/1000)*1000;			cal.set(YEAR, y+year);		}		public String toString() {			return "YYY";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new YYY());	}	public static final class YY extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int year = cal.get(YEAR);			String y = Integer.toString(year - (year/100)*100);			for (int i = y.length(); i < 2; i++) {				str.append('0');			}			str.append(y);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			int year = getNumber(source, pos, 2);			int y = (cal.get(YEAR)/100)*100;			cal.set(YEAR, y+year);		}		public String toString() {			return "YY";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new YY());	}	public static final class Y extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int year = cal.get(YEAR);			String y = Integer.toString(year - (year/10)*10);			str.append(y);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			int year = getNumber(source, pos, 1);			int y = (cal.get(YEAR)/10)*10;			cal.set(YEAR, y+year);		}		public String toString() {			return "Y";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new Y());	}		public static final class SYEAR extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			throw new java.text.ParseException(NOT_IMPLIMENTED_EXCEPTION, 0);		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			throw new java.text.ParseException(BAD_INPUT_PATTERN, 0);		}		public String toString() {			return "SYEAR";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new SYEAR());	}	public static final class YEAR extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			throw new java.text.ParseException(NOT_IMPLIMENTED_EXCEPTION, 0);		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			throw new java.text.ParseException(BAD_INPUT_PATTERN, 0);		}		public String toString() {			return "YEAR";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new YEAR());	}	public static final class IYYY extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			throw new java.text.ParseException(NOT_IMPLIMENTED_EXCEPTION, 0);		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			throw new java.text.ParseException(NOT_IMPLIMENTED_EXCEPTION, 0);		}		public String toString() {			return "IYYY";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new IYYY());	}	public static final class IY extends DATE {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			throw new java.text.ParseException(NOT_IMPLIMENTED_EXCEPTION, 0);		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			throw new java.text.ParseException(NOT_IMPLIMENTED_EXCEPTION, 0);		}		public String toString() {			return "IY";		}	};	static {		OracleTimestampFormat.dateSymbols.add(new IY());

⌨️ 快捷键说明

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