src/share/classes/com/sun/tools/javac/zip/ZipFileIndexEntry.java

Wed, 09 Apr 2008 13:41:45 +0100

author
mcimadamore
date
Wed, 09 Apr 2008 13:41:45 +0100
changeset 24
d032d5090fd5
parent 1
9a66ca7c79fa
child 36
58e352559a41
permissions
-rw-r--r--

5009937: hiding versus generics versus binary compatibility
Summary: missing implementation of JLS 8.4.8.3 (different arguments with same erasure not always triggering a compiler error)
Reviewed-by: jjg

duke@1 1 package com.sun.tools.javac.zip;
duke@1 2
duke@1 3 import java.io.File;
duke@1 4
duke@1 5 public final class ZipFileIndexEntry implements Comparable<ZipFileIndexEntry> {
duke@1 6 public static final ZipFileIndexEntry[] EMPTY_ARRAY = {};
duke@1 7
duke@1 8 // Directory related
duke@1 9 String dir;
duke@1 10 boolean isDir;
duke@1 11
duke@1 12 // File related
duke@1 13 String name;
duke@1 14
duke@1 15 int offset;
duke@1 16 int size;
duke@1 17 int compressedSize;
duke@1 18 long javatime;
duke@1 19
duke@1 20 private int nativetime;
duke@1 21
duke@1 22 public ZipFileIndexEntry(String path) {
duke@1 23 int separator = path.lastIndexOf(File.separatorChar);
duke@1 24 if (separator == -1) {
duke@1 25 dir = "".intern();
duke@1 26 name = path;
duke@1 27 } else {
duke@1 28 dir = path.substring(0, separator).intern();
duke@1 29 name = path.substring(separator + 1);
duke@1 30 }
duke@1 31 }
duke@1 32
duke@1 33 public ZipFileIndexEntry(String directory, String name) {
duke@1 34 this.dir = directory.intern();
duke@1 35 this.name = name;
duke@1 36 }
duke@1 37
duke@1 38 public String getName() {
duke@1 39 if (dir == null || dir.length() == 0) {
duke@1 40 return name;
duke@1 41 }
duke@1 42
duke@1 43 StringBuilder sb = new StringBuilder();
duke@1 44 sb.append(dir);
duke@1 45 sb.append(File.separatorChar);
duke@1 46 sb.append(name);
duke@1 47 return sb.toString();
duke@1 48 }
duke@1 49
duke@1 50 public String getFileName() {
duke@1 51 return name;
duke@1 52 }
duke@1 53
duke@1 54 public long getLastModified() {
duke@1 55 if (javatime == 0) {
duke@1 56 javatime = dosToJavaTime(nativetime);
duke@1 57 }
duke@1 58 return javatime;
duke@1 59 }
duke@1 60
duke@1 61 // From java.util.zip
duke@1 62 private static long dosToJavaTime(int nativetime) {
duke@1 63 // Bootstrap build problems prevent me from using the code directly
duke@1 64 // Convert the raw/native time to a long for now
duke@1 65 return (long)nativetime;
duke@1 66 }
duke@1 67
duke@1 68 void setNativeTime(int natTime) {
duke@1 69 nativetime = natTime;
duke@1 70 }
duke@1 71
duke@1 72 public boolean isDirectory() {
duke@1 73 return isDir;
duke@1 74 }
duke@1 75
duke@1 76 public int compareTo(ZipFileIndexEntry other) {
duke@1 77 String otherD = other.dir;
duke@1 78 if (dir != otherD) {
duke@1 79 int c = dir.compareTo(otherD);
duke@1 80 if (c != 0)
duke@1 81 return c;
duke@1 82 }
duke@1 83 return name.compareTo(other.name);
duke@1 84 }
duke@1 85
duke@1 86
duke@1 87 public String toString() {
duke@1 88 return isDir ? ("Dir:" + dir + " : " + name) :
duke@1 89 (dir + ":" + name);
duke@1 90 }
duke@1 91 }

mercurial