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

📄 date.java

📁 struts 2 核心包 的源码 有错误是难免的
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   Date.java

package org.apache.struts2.components;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.TextProvider;
import com.opensymphony.xwork2.util.CompoundRoot;
import com.opensymphony.xwork2.util.ValueStack;
import java.io.IOException;
import java.io.Writer;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

// Referenced classes of package org.apache.struts2.components:
//			Component

public class Date extends Component
{

	private static final Log LOG = LogFactory.getLog(org/apache/struts2/components/Date);
	public static final String DATETAG_PROPERTY = "struts.date.format";
	public static final String DATETAG_PROPERTY_PAST = "struts.date.format.past";
	private static final String DATETAG_DEFAULT_PAST = "{0} ago";
	public static final String DATETAG_PROPERTY_FUTURE = "struts.date.format.future";
	private static final String DATETAG_DEFAULT_FUTURE = "in {0}";
	public static final String DATETAG_PROPERTY_SECONDS = "struts.date.format.seconds";
	private static final String DATETAG_DEFAULT_SECONDS = "an instant";
	public static final String DATETAG_PROPERTY_MINUTES = "struts.date.format.minutes";
	private static final String DATETAG_DEFAULT_MINUTES = "{0,choice,1#one minute|1<{0} minutes}";
	public static final String DATETAG_PROPERTY_HOURS = "struts.date.format.hours";
	private static final String DATETAG_DEFAULT_HOURS = "{0,choice,1#one hour|1<{0} hours}{1,choice,0#|1#, one minute|1<, {1} minutes}";
	public static final String DATETAG_PROPERTY_DAYS = "struts.date.format.days";
	private static final String DATETAG_DEFAULT_DAYS = "{0,choice,1#one day|1<{0} days}{1,choice,0#|1#, one hour|1<, {1} hours}";
	public static final String DATETAG_PROPERTY_YEARS = "struts.date.format.years";
	private static final String DATETAG_DEFAULT_YEARS = "{0,choice,1#one year|1<{0} years}{1,choice,0#|1#, one day|1<, {1} days}";
	private String name;
	private String format;
	private boolean nice;

	public Date(ValueStack stack)
	{
		super(stack);
	}

	private TextProvider findProviderInStack()
	{
		for (Iterator iterator = getStack().getRoot().iterator(); iterator.hasNext();)
		{
			Object o = iterator.next();
			if (o instanceof TextProvider)
				return (TextProvider)o;
		}

		return null;
	}

	public String formatTime(TextProvider tp, java.util.Date date)
	{
		java.util.Date now = new java.util.Date();
		StringBuffer sb = new StringBuffer();
		List args = new ArrayList();
		long secs = Math.abs((now.getTime() - date.getTime()) / 1000L);
		long mins = secs / 60L;
		long sec = secs % 60L;
		int min = (int)mins % 60;
		long hours = mins / 60L;
		int hour = (int)hours % 24;
		int days = (int)hours / 24;
		int day = days % 365;
		int years = days / 365;
		if (years > 0)
		{
			args.add(new Long(years));
			args.add(new Long(day));
			args.add(sb);
			args.add(null);
			sb.append(tp.getText("struts.date.format.years", "{0,choice,1#one year|1<{0} years}{1,choice,0#|1#, one day|1<, {1} days}", args));
		} else
		if (day > 0)
		{
			args.add(new Long(day));
			args.add(new Long(hour));
			args.add(sb);
			args.add(null);
			sb.append(tp.getText("struts.date.format.days", "{0,choice,1#one day|1<{0} days}{1,choice,0#|1#, one hour|1<, {1} hours}", args));
		} else
		if (hour > 0)
		{
			args.add(new Long(hour));
			args.add(new Long(min));
			args.add(sb);
			args.add(null);
			sb.append(tp.getText("struts.date.format.hours", "{0,choice,1#one hour|1<{0} hours}{1,choice,0#|1#, one minute|1<, {1} minutes}", args));
		} else
		if (min > 0)
		{
			args.add(new Long(min));
			args.add(new Long(sec));
			args.add(sb);
			args.add(null);
			sb.append(tp.getText("struts.date.format.minutes", "{0,choice,1#one minute|1<{0} minutes}", args));
		} else
		{
			args.add(new Long(sec));
			args.add(sb);
			args.add(null);
			sb.append(tp.getText("struts.date.format.seconds", "an instant", args));
		}
		args.clear();
		args.add(sb.toString());
		if (date.before(now))
			return tp.getText("struts.date.format.past", "{0} ago", args);
		else
			return tp.getText("struts.date.format.future", "in {0}", args);
	}

	public boolean end(Writer writer, String body)
	{
		String msg = null;
		ValueStack stack = getStack();
		java.util.Date date = null;
		try
		{
			date = (java.util.Date)findValue(name);
		}
		catch (Exception e)
		{
			LOG.error((new StringBuilder()).append("Could not convert object with key '").append(name).append("' to a java.util.Date instance").toString());
			msg = "";
		}
		if (format != null)
			format = findString(format);
		if (date != null)
		{
			TextProvider tp = findProviderInStack();
			if (tp != null)
			{
				if (nice)
					msg = formatTime(tp, date);
				else
				if (format == null)
				{
					String globalFormat = null;
					globalFormat = tp.getText("struts.date.format");
					if (globalFormat != null && !"struts.date.format".equals(globalFormat))
						msg = (new SimpleDateFormat(globalFormat, ActionContext.getContext().getLocale())).format(date);
					else
						msg = DateFormat.getDateTimeInstance(2, 2, ActionContext.getContext().getLocale()).format(date);
				} else
				{
					msg = (new SimpleDateFormat(format, ActionContext.getContext().getLocale())).format(date);
				}
				if (msg != null)
					try
					{
						if (getId() == null)
							writer.write(msg);
						else
							stack.getContext().put(getId(), msg);
					}
					catch (IOException e)
					{
						LOG.error("Could not write out Date tag", e);
					}
			}
		}
		return super.end(writer, "");
	}

	public void setFormat(String format)
	{
		this.format = format;
	}

	public void setNice(boolean nice)
	{
		this.nice = nice;
	}

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	public String getFormat()
	{
		return format;
	}

	public boolean isNice()
	{
		return nice;
	}

}

⌨️ 快捷键说明

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