MacroTools.java 3.05 KB
package com.sitech.ismp.coll.busi.util;

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

import com.sitech.util.Formater;

public class MacroTools {
	/**
	 * 宏替换
	 * @throws 
	 * @since Ver 1.1
	 */
	public static String strReplaceDateMacro(String str) {
		String re = "";
		HashMap<String, String> hmMacro = new HashMap<String, String>();
		Date dt = new Date();

		SimpleDateFormat formatterYYYY = new SimpleDateFormat("yyyy");
		SimpleDateFormat formatterMM = new SimpleDateFormat("MM");
		SimpleDateFormat formatterDD = new SimpleDateFormat("dd");
		SimpleDateFormat formatterHH = new SimpleDateFormat("HH");
		SimpleDateFormat formatterMI = new SimpleDateFormat("mm");
		SimpleDateFormat formatterSS = new SimpleDateFormat("ss");
		String strYYYY = formatterYYYY.format(dt);
		String strMM = formatterMM.format(dt);
		String strDD = formatterDD.format(dt);
		String strHH = formatterHH.format(dt);
		String strMI = formatterMI.format(dt);
		String strSS = formatterSS.format(dt);

		hmMacro.put("YYYY", strYYYY);
		hmMacro.put("MM", strMM);
		hmMacro.put("DD", strDD);
		hmMacro.put("HH", strHH);
		hmMacro.put("MI", strMI);
		hmMacro.put("SS", strSS);
		hmMacro.put("YYYYMMDD", strYYYY + strMM + strDD);

		SimpleDateFormat formatterYYYYMMDD = new SimpleDateFormat("yyyyMMdd");
		SimpleDateFormat formatterMMDD = new SimpleDateFormat("MMdd");
		String strYYYYMMDD_1 = formatterYYYYMMDD.format(Formater.computeDate(dt, 'd', -1));
		String strYYYYMMDD_2 = formatterYYYYMMDD.format(Formater.computeDate(dt, 'd', -2));
		String strYYYYMMDD_3 = formatterYYYYMMDD.format(Formater.computeDate(dt, 'd', -3));
		String strYYYYMMDD_4 = formatterYYYYMMDD.format(Formater.computeDate(dt, 'd', -4));
		String strYYYYMMDD_5 = formatterYYYYMMDD.format(Formater.computeDate(dt, 'd', -5));
		String strMMDD_1 = formatterMMDD.format(Formater.computeDate(dt, 'd', -1));
		String strMMDD_2 = formatterMMDD.format(Formater.computeDate(dt, 'd', -2));
		String strMMDD_3 = formatterMMDD.format(Formater.computeDate(dt, 'd', -3));
		String strMMDD_4 = formatterMMDD.format(Formater.computeDate(dt, 'd', -4));
		String strMMDD_5 = formatterMMDD.format(Formater.computeDate(dt, 'd', -5));

		hmMacro.put("YYYYMMDD-1D", strYYYYMMDD_1);
		hmMacro.put("YYYYMMDD-2D", strYYYYMMDD_2);
		hmMacro.put("YYYYMMDD-3D", strYYYYMMDD_3);
		hmMacro.put("YYYYMMDD-4D", strYYYYMMDD_4);
		hmMacro.put("YYYYMMDD-5D", strYYYYMMDD_5);
		hmMacro.put("MMDD-1D", strMMDD_1);
		hmMacro.put("MMDD-2D", strMMDD_2);
		hmMacro.put("MMDD-3D", strMMDD_3);
		hmMacro.put("MMDD-4D", strMMDD_4);
		hmMacro.put("MMDD-5D", strMMDD_5);

		re = strReplaceMacro(str, hmMacro);

		return re;
	}

	public static String strReplaceMacro(String str, HashMap<String, String> macroMap) {
		String result = str;

		if (macroMap == null) {
			return result;
		}
		for (String macroName : macroMap.keySet()) {
			result = result.replaceAll("<" + macroName + ">", macroMap.get(macroName));
		}

		return result;
	}
	
	public static void main(String[] args) {
		System.out.println(MacroTools.strReplaceDateMacro("file_<YYYYMMDD>_<YYYY>"));
	}
}