home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / text / DateFormatSymbols.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  5.4 KB  |  270 lines

  1. package java.text;
  2.  
  3. import java.io.Serializable;
  4. import java.lang.ref.SoftReference;
  5. import java.util.Enumeration;
  6. import java.util.Hashtable;
  7. import java.util.Locale;
  8. import java.util.ResourceBundle;
  9. import java.util.Vector;
  10.  
  11. public class DateFormatSymbols implements Serializable, Cloneable {
  12.    String[] eras = null;
  13.    String[] months = null;
  14.    String[] shortMonths = null;
  15.    String[] weekdays = null;
  16.    String[] shortWeekdays = null;
  17.    String[] ampms = null;
  18.    String[][] zoneStrings = null;
  19.    static final String patternChars = "GyMdkHmsSEDFwWahKz";
  20.    String localPatternChars = null;
  21.    static final long serialVersionUID = -5987973545549424702L;
  22.    static final int millisPerHour = 3600000;
  23.    private static Hashtable cachedLocaleData = new Hashtable(3);
  24.    private static Hashtable cachedZoneData = new Hashtable();
  25.  
  26.    public DateFormatSymbols() {
  27.       this.initializeData(Locale.getDefault());
  28.    }
  29.  
  30.    public DateFormatSymbols(Locale var1) {
  31.       this.initializeData(var1);
  32.    }
  33.  
  34.    public String[] getEras() {
  35.       return this.duplicate(this.eras);
  36.    }
  37.  
  38.    public void setEras(String[] var1) {
  39.       this.eras = this.duplicate(var1);
  40.    }
  41.  
  42.    public String[] getMonths() {
  43.       return this.duplicate(this.months);
  44.    }
  45.  
  46.    public void setMonths(String[] var1) {
  47.       this.months = this.duplicate(var1);
  48.    }
  49.  
  50.    public String[] getShortMonths() {
  51.       return this.duplicate(this.shortMonths);
  52.    }
  53.  
  54.    public void setShortMonths(String[] var1) {
  55.       this.shortMonths = this.duplicate(var1);
  56.    }
  57.  
  58.    public String[] getWeekdays() {
  59.       return this.duplicate(this.weekdays);
  60.    }
  61.  
  62.    public void setWeekdays(String[] var1) {
  63.       this.weekdays = this.duplicate(var1);
  64.    }
  65.  
  66.    public String[] getShortWeekdays() {
  67.       return this.duplicate(this.shortWeekdays);
  68.    }
  69.  
  70.    public void setShortWeekdays(String[] var1) {
  71.       this.shortWeekdays = this.duplicate(var1);
  72.    }
  73.  
  74.    public String[] getAmPmStrings() {
  75.       return this.duplicate(this.ampms);
  76.    }
  77.  
  78.    public void setAmPmStrings(String[] var1) {
  79.       this.ampms = this.duplicate(var1);
  80.    }
  81.  
  82.    public String[][] getZoneStrings() {
  83.       String[][] var1 = new String[this.zoneStrings.length][];
  84.  
  85.       for(int var2 = 0; var2 < this.zoneStrings.length; ++var2) {
  86.          var1[var2] = this.duplicate(this.zoneStrings[var2]);
  87.       }
  88.  
  89.       return var1;
  90.    }
  91.  
  92.    public void setZoneStrings(String[][] var1) {
  93.       String[][] var2 = new String[var1.length][];
  94.  
  95.       for(int var3 = 0; var3 < var1.length; ++var3) {
  96.          var2[var3] = this.duplicate(var1[var3]);
  97.       }
  98.  
  99.       this.zoneStrings = var2;
  100.    }
  101.  
  102.    public String getLocalPatternChars() {
  103.       return new String(this.localPatternChars);
  104.    }
  105.  
  106.    public void setLocalPatternChars(String var1) {
  107.       this.localPatternChars = new String(var1);
  108.    }
  109.  
  110.    public Object clone() {
  111.       try {
  112.          DateFormatSymbols var1 = (DateFormatSymbols)super.clone();
  113.          this.copyMembers(this, var1);
  114.          return var1;
  115.       } catch (CloneNotSupportedException var2) {
  116.          throw new InternalError();
  117.       }
  118.    }
  119.  
  120.    public int hashCode() {
  121.       int var1 = 0;
  122.  
  123.       for(int var2 = 0; var2 < this.zoneStrings[0].length; ++var2) {
  124.          var1 ^= this.zoneStrings[0][var2].hashCode();
  125.       }
  126.  
  127.       return var1;
  128.    }
  129.  
  130.    public boolean equals(Object var1) {
  131.       if (this == var1) {
  132.          return true;
  133.       } else if (var1 != null && this.getClass() == var1.getClass()) {
  134.          DateFormatSymbols var2 = (DateFormatSymbols)var1;
  135.          return Utility.arrayEquals(this.eras, var2.eras) && Utility.arrayEquals(this.months, var2.months) && Utility.arrayEquals(this.shortMonths, var2.shortMonths) && Utility.arrayEquals(this.weekdays, var2.weekdays) && Utility.arrayEquals(this.shortWeekdays, var2.shortWeekdays) && Utility.arrayEquals(this.ampms, var2.ampms) && Utility.arrayEquals(this.zoneStrings, var2.zoneStrings) && Utility.arrayEquals(this.localPatternChars, var2.localPatternChars);
  136.       } else {
  137.          return false;
  138.       }
  139.    }
  140.  
  141.    private ResourceBundle getLocaleElements(Locale var1) {
  142.       return ResourceBundle.getBundle("java.text.resources.LocaleElements", var1);
  143.    }
  144.  
  145.    private ResourceBundle getZoneData(Locale var1) {
  146.       return ResourceBundle.getBundle("java.text.resources.DateFormatZoneData", var1);
  147.    }
  148.  
  149.    private ResourceBundle[] cacheLookup(Locale var1) {
  150.       ResourceBundle[] var2 = new ResourceBundle[2];
  151.       SoftReference[] var3 = (SoftReference[])cachedLocaleData.get(var1);
  152.       if (var3 == null) {
  153.          var2[0] = this.getLocaleElements(var1);
  154.          var2[1] = this.getZoneData(var1);
  155.          var3 = new SoftReference[]{new SoftReference(var2[0]), new SoftReference(var2[1])};
  156.          cachedLocaleData.put(var1, var3);
  157.       } else {
  158.          ResourceBundle var4;
  159.          if ((var4 = (ResourceBundle)var3[0].get()) == null) {
  160.             var4 = this.getLocaleElements(var1);
  161.             var3[0] = new SoftReference(var4);
  162.          }
  163.  
  164.          var2[0] = var4;
  165.          if ((var4 = (ResourceBundle)var3[1].get()) == null) {
  166.             var4 = this.getZoneData(var1);
  167.             var3[1] = new SoftReference(var4);
  168.          }
  169.  
  170.          var2[1] = var4;
  171.       }
  172.  
  173.       return var2;
  174.    }
  175.  
  176.    private String[][] loadZoneStrings(Locale var1, ResourceBundle var2) {
  177.       SoftReference var4 = (SoftReference)cachedZoneData.get(var1);
  178.       String[][] var3;
  179.       if (var4 == null || (var3 = (String[][])var4.get()) == null) {
  180.          Vector var5 = new Vector();
  181.          Enumeration var6 = var2.getKeys();
  182.  
  183.          while(var6.hasMoreElements()) {
  184.             String var7 = (String)var6.nextElement();
  185.             if (!var7.equals("localPatternChars") && !var7.equals("zoneStrings")) {
  186.                var5.add(var2.getObject(var7));
  187.             }
  188.          }
  189.  
  190.          var3 = new String[var5.size()][];
  191.          var5.toArray(var3);
  192.          var4 = new SoftReference(var3);
  193.          cachedZoneData.put(var1, var4);
  194.       }
  195.  
  196.       return var3;
  197.    }
  198.  
  199.    private void initializeData(Locale var1) {
  200.       ResourceBundle[] var3 = this.cacheLookup(var1);
  201.       ResourceBundle var4 = var3[0];
  202.       ResourceBundle var5 = var3[1];
  203.       this.eras = (String[])var4.getObject("Eras");
  204.       this.months = var4.getStringArray("MonthNames");
  205.       this.shortMonths = var4.getStringArray("MonthAbbreviations");
  206.       String[] var6 = var4.getStringArray("DayNames");
  207.       this.weekdays = new String[8];
  208.       this.weekdays[0] = "";
  209.  
  210.       for(int var2 = 0; var2 < var6.length; ++var2) {
  211.          this.weekdays[var2 + 1] = var6[var2];
  212.       }
  213.  
  214.       String[] var7 = var4.getStringArray("DayAbbreviations");
  215.       this.shortWeekdays = new String[8];
  216.       this.shortWeekdays[0] = "";
  217.  
  218.       for(int var8 = 0; var8 < var7.length; ++var8) {
  219.          this.shortWeekdays[var8 + 1] = var7[var8];
  220.       }
  221.  
  222.       this.ampms = var4.getStringArray("AmPmMarkers");
  223.       this.zoneStrings = this.loadZoneStrings(var1, var5);
  224.       this.localPatternChars = (String)var5.getObject("localPatternChars");
  225.    }
  226.  
  227.    final int getZoneIndex(String var1) {
  228.       for(int var2 = 0; var2 < this.zoneStrings.length; ++var2) {
  229.          if (var1.equalsIgnoreCase(this.zoneStrings[var2][0])) {
  230.             return var2;
  231.          }
  232.       }
  233.  
  234.       return -1;
  235.    }
  236.  
  237.    private final String[] duplicate(String[] var1) {
  238.       String[] var2 = new String[var1.length];
  239.       System.arraycopy(var1, 0, var2, 0, var1.length);
  240.       return var2;
  241.    }
  242.  
  243.    private final void copyMembers(DateFormatSymbols var1, DateFormatSymbols var2) {
  244.       var2.eras = this.duplicate(var1.eras);
  245.       var2.months = this.duplicate(var1.months);
  246.       var2.shortMonths = this.duplicate(var1.shortMonths);
  247.       var2.weekdays = this.duplicate(var1.weekdays);
  248.       var2.shortWeekdays = this.duplicate(var1.shortWeekdays);
  249.       var2.ampms = this.duplicate(var1.ampms);
  250.  
  251.       for(int var3 = 0; var3 < var2.zoneStrings.length; ++var3) {
  252.          var2.zoneStrings[var3] = this.duplicate(var1.zoneStrings[var3]);
  253.       }
  254.  
  255.       var2.localPatternChars = new String(var1.localPatternChars);
  256.    }
  257.  
  258.    private final boolean equals(String[] var1, String[] var2) {
  259.       int var3 = var1.length;
  260.  
  261.       for(int var4 = 0; var4 < var3; ++var4) {
  262.          if (!var1[var4].equals(var2[var4])) {
  263.             return false;
  264.          }
  265.       }
  266.  
  267.       return true;
  268.    }
  269. }
  270.