Method computeDOSDateTime(): Takes the time from a long and converts to a Calendar object Time is stored in the MSDOS format 5 bits for hour, 6 bits for min, 5 bits for seconds Hours are in military time and must be adjusted to time zone Seconds are divided by two before storing and must be multip
(long currentTime)
| 138 | * @author Aaron Davis |
| 139 | **/ |
| 140 | private static int computeDOSDateTime(long currentTime){ |
| 141 | final int DAY_OF_MONTH = 5; |
| 142 | final int HOUR_OF_DAY = 11; |
| 143 | final int MINUTE = 12; |
| 144 | final int MONTH = 2; |
| 145 | final int SECOND = 13; |
| 146 | final int YEAR = 1; |
| 147 | |
| 148 | //Create calendar object, then set time to value passed in |
| 149 | Calendar modCalendar = Calendar.getInstance(); |
| 150 | modCalendar.setTime(new Date(currentTime)); |
| 151 | |
| 152 | //Hour |
| 153 | int timeBits = modCalendar.get(HOUR_OF_DAY); |
| 154 | timeBits = timeBits - 6; |
| 155 | timeBits = timeBits << 6; |
| 156 | |
| 157 | //Minutes |
| 158 | int minBits = 0x3f & (modCalendar.get(MINUTE));; |
| 159 | timeBits = timeBits ^ minBits; |
| 160 | timeBits = timeBits << 5; |
| 161 | |
| 162 | //Seconds |
| 163 | int secBits = 0x1f & (modCalendar.get(SECOND)); |
| 164 | secBits = secBits >> 1; //Divide by 2 |
| 165 | timeBits = timeBits ^ secBits; |
| 166 | |
| 167 | //Year |
| 168 | int dateBits = (modCalendar.get(YEAR) -1980); |
| 169 | dateBits = dateBits << 4; |
| 170 | |
| 171 | //Month |
| 172 | int month = 0xf & ((modCalendar.get(MONTH)) + 1); |
| 173 | dateBits = dateBits ^ month; |
| 174 | dateBits = dateBits << 5; |
| 175 | |
| 176 | //Day of month |
| 177 | int dayBits = 0x1f & modCalendar.get(DAY_OF_MONTH); |
| 178 | dateBits = dateBits ^ dayBits; |
| 179 | |
| 180 | //Store Date |
| 181 | int storeDate = ((dateBits << 16) ^ (timeBits)); |
| 182 | return storeDate; |
| 183 | } |
| 184 | |
| 185 | //Methods to set and get the uncompressed size of the entry |
| 186 | public void setSize(int size){ |
no test coverage detected