📄 date.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 + -