From: <ga...@us...> - 2009-03-14 19:48:46
|
Revision: 5102 http://jnode.svn.sourceforge.net/jnode/?rev=5102&view=rev Author: galatnm Date: 2009-03-14 19:48:39 +0000 (Sat, 14 Mar 2009) Log Message: ----------- Rewrite and update javadocs. Modified Paths: -------------- trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSPlusDirectory.java trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSPlusFile.java trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSUnicodeString.java trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSUtils.java trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/Catalog.java trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFile.java trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFolder.java Added Paths: ----------- trunk/fs/src/fs/org/jnode/fs/hfsplus/ExtendedFileInfo.java trunk/fs/src/fs/org/jnode/fs/hfsplus/FileInfo.java trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSPlusBSDInfo.java Added: trunk/fs/src/fs/org/jnode/fs/hfsplus/ExtendedFileInfo.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/ExtendedFileInfo.java (rev 0) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/ExtendedFileInfo.java 2009-03-14 19:48:39 UTC (rev 5102) @@ -0,0 +1,5 @@ +package org.jnode.fs.hfsplus; + +public class ExtendedFileInfo { + +} Added: trunk/fs/src/fs/org/jnode/fs/hfsplus/FileInfo.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/FileInfo.java (rev 0) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/FileInfo.java 2009-03-14 19:48:39 UTC (rev 5102) @@ -0,0 +1,5 @@ +package org.jnode.fs.hfsplus; + +public class FileInfo { + +} Added: trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSPlusBSDInfo.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSPlusBSDInfo.java (rev 0) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSPlusBSDInfo.java 2009-03-14 19:48:39 UTC (rev 5102) @@ -0,0 +1,5 @@ +package org.jnode.fs.hfsplus; + +public class HFSPlusBSDInfo { + +} Modified: trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSPlusDirectory.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSPlusDirectory.java 2009-03-14 10:45:16 UTC (rev 5101) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSPlusDirectory.java 2009-03-14 19:48:39 UTC (rev 5102) @@ -166,19 +166,12 @@ } Superblock volumeHeader = ((HfsPlusFileSystem) getFileSystem()).getVolumeHeader(); - - Calendar now = Calendar.getInstance(); - now.setTime(new Date()); - int macDate = (int) HFSUtils.getDate(now.getTimeInMillis() / 1000, true); - HFSUnicodeString dirName = new HFSUnicodeString(name); CatalogThread thread = - new CatalogThread(HfsPlusConstants.RECORD_TYPE_FOLDER_THREAD, this.folder - .getFolderId(), dirName); - + new CatalogThread(HfsPlusConstants.RECORD_TYPE_FOLDER_THREAD, this.folder + .getFolderId(), dirName); CatalogFolder newFolder = - new CatalogFolder(0, new CatalogNodeId(volumeHeader.getNextCatalogId()), macDate, - macDate, macDate); + new CatalogFolder(0, new CatalogNodeId(volumeHeader.getNextCatalogId())); log.debug("New catalog folder :\n" + newFolder.toString()); CatalogKey key = new CatalogKey(this.folder.getFolderId(), dirName); Modified: trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSPlusFile.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSPlusFile.java 2009-03-14 10:45:16 UTC (rev 5101) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSPlusFile.java 2009-03-14 19:48:39 UTC (rev 5102) @@ -44,13 +44,13 @@ @Override public final long getLength() { - return file.getDataFork().getTotalSize(); + return file.getDatas().getTotalSize(); } @Override public final void read(final long fileOffset, final ByteBuffer dest) throws IOException { HfsPlusFileSystem fs = (HfsPlusFileSystem) getFileSystem(); - for (ExtentDescriptor d : file.getDataFork().getExtents()) { + for (ExtentDescriptor d : file.getDatas().getExtents()) { if (!d.isEmpty()) { long firstOffset = d.getStartBlock() * fs.getVolumeHeader().getBlockSize(); fs.getApi().read(firstOffset, dest); Modified: trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSUnicodeString.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSUnicodeString.java 2009-03-14 10:45:16 UTC (rev 5101) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSUnicodeString.java 2009-03-14 19:48:39 UTC (rev 5102) @@ -29,9 +29,10 @@ private String string; /** + * Create HFSUnicodeString from existing data. * - * @param src - * @param offset + * @param src byte array contains data. + * @param offset start of data in the array. */ public HFSUnicodeString(final byte[] src, final int offset) { length = BigEndian.getInt16(src, offset); Modified: trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSUtils.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSUtils.java 2009-03-14 10:45:16 UTC (rev 5101) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/HFSUtils.java 2009-03-14 19:48:39 UTC (rev 5102) @@ -22,6 +22,7 @@ import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.Date; public class HFSUtils { @@ -59,4 +60,14 @@ SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); return sdf.format(cal.getTime()); } + + /** + * Returns current date and time in mac format. + * @return current date and time. + */ + public static int getNow(){ + Calendar now = Calendar.getInstance(); + now.setTime(new Date()); + return (int) HFSUtils.getDate(now.getTimeInMillis() / 1000, true); + } } Modified: trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/Catalog.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/Catalog.java 2009-03-14 10:45:16 UTC (rev 5101) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/Catalog.java 2009-03-14 19:48:39 UTC (rev 5102) @@ -125,13 +125,8 @@ // First record (folder) HFSUnicodeString name = new HFSUnicodeString(params.getVolumeName()); CatalogKey ck = new CatalogKey(CatalogNodeId.HFSPLUS_POR_CNID, name); - int valence = params.isJournaled() ? 2 : 0; - Calendar now = Calendar.getInstance(); - now.setTime(new Date()); - int macDate = (int) HFSUtils.getDate(now.getTimeInMillis() / 1000, true); CatalogFolder folder = - new CatalogFolder(valence, CatalogNodeId.HFSPLUS_ROOT_CNID, macDate, macDate, - macDate); + new CatalogFolder(params.isJournaled() ? 2 : 0, CatalogNodeId.HFSPLUS_ROOT_CNID); LeafRecord record = new LeafRecord(ck, folder.getBytes()); rootNode.addNodeRecord(0, record, offset); // Second record (thread) Modified: trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFile.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFile.java 2009-03-14 10:45:16 UTC (rev 5101) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFile.java 2009-03-14 19:48:39 UTC (rev 5102) @@ -17,62 +17,174 @@ * along with this library; If not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ - + package org.jnode.fs.hfsplus.catalog; +import org.jnode.fs.hfsplus.ExtendedFileInfo; +import org.jnode.fs.hfsplus.FileInfo; +import org.jnode.fs.hfsplus.HFSPlusBSDInfo; import org.jnode.fs.hfsplus.HFSPlusForkData; import org.jnode.fs.hfsplus.HFSUtils; +import org.jnode.fs.hfsplus.HfsPlusConstants; import org.jnode.util.BigEndian; +/** + * This class implements catalog file structure use in the catalog to hold + * information about a file on the volume. + * + * @author Fabien Lesire + * + */ public class CatalogFile { - private byte[] data; + public static final int CATALOG_FILE_SIZE = 248; + /** catalog record type, always RECORD_TYPE_FILE */ + private int recordType; + /** */ + private int flags; + /** the catalog node id of the file */ + private CatalogNodeId fileId; + /** The date and time the file was created */ + private int createDate; + /** */ + private int contentModDate; + /** */ + private int attrModDate; + /** */ + private int accessDate; + /** */ + private int backupDate; + /** */ + private HFSPlusBSDInfo permissions; + /** */ + private FileInfo userInfo; + /** */ + private ExtendedFileInfo finderInfo; + /** */ + private int textEncoding; + /** data fork location and size */ + private HFSPlusForkData datas; + /** resource fork location and size */ + private HFSPlusForkData resources; + + /** + * + * @param src + */ public CatalogFile(final byte[] src) { - data = new byte[248]; + byte[] data = new byte[CATALOG_FILE_SIZE]; System.arraycopy(src, 0, data, 0, 248); + recordType = BigEndian.getInt16(data, 0); + flags = BigEndian.getInt16(data, 2); + fileId = new CatalogNodeId(data, 8); + createDate = BigEndian.getInt32(data, 12); + contentModDate = BigEndian.getInt32(data, 16); + attrModDate = BigEndian.getInt32(data, 20); + datas = new HFSPlusForkData(data, 88); + resources = new HFSPlusForkData(data, 168); } - public final int getRecordType() { - return BigEndian.getInt16(data, 0); + /** + * + * @param flags + * @param fileId + * @param createDate + * @param contentModDate + * @param attrModDate + * @param datas + * @param resources + */ + public CatalogFile(int flags, CatalogNodeId fileId, HFSPlusForkData datas, HFSPlusForkData resources) { + this.recordType = HfsPlusConstants.RECORD_TYPE_FILE; + this.flags = flags; + this.fileId = fileId; + this.createDate = HFSUtils.getNow(); + this.contentModDate = HFSUtils.getNow(); + this.attrModDate = HFSUtils.getNow(); + this.datas = datas; + this.resources = resources; } - public final int getFlags() { - return BigEndian.getInt16(data, 2); + /** + * + * @return + */ + public byte[] getBytes() { + return null; } - public final CatalogNodeId getFileId() { - return new CatalogNodeId(data, 8); + /* + * (non-Javadoc) + * + * @see java.lang.Object#toString() + */ + public final String toString() { + StringBuffer s = new StringBuffer(); + s.append("Record type:").append(recordType).append("\t"); + s.append("File ID :").append(fileId.getId()).append("\n"); + s.append("Creation Date :").append( + HFSUtils.printDate(createDate, "EEE MMM d HH:mm:ss yyyy")).append("\n"); + s.append("Content Mod Date :").append( + HFSUtils.printDate(contentModDate, "EEE MMM d HH:mm:ss yyyy")).append("\n"); + s.append("Attr Mod Date :").append( + HFSUtils.printDate(attrModDate, "EEE MMM d HH:mm:ss yyyy")).append("\n"); + return s.toString(); } - public final int getCreateDate() { - return BigEndian.getInt32(data, 12); + public int getRecordType() { + return recordType; } - public final int getContentModDate() { - return BigEndian.getInt32(data, 16); + public int getFlags() { + return flags; } - public final int getAttrModDate() { - return BigEndian.getInt32(data, 20); + public CatalogNodeId getFileId() { + return fileId; } - public final HFSPlusForkData getDataFork() { - return new HFSPlusForkData(data, 88); + public int getCreateDate() { + return createDate; } - public final HFSPlusForkData getResourceFork() { - return new HFSPlusForkData(data, 168); + public int getContentModDate() { + return contentModDate; } - public final String toString() { - StringBuffer s = new StringBuffer(); - s.append("Record type:").append(getRecordType()).append("\t"); - s.append("File ID :").append(getFileId().getId()).append("\n"); - s.append("Creation Date :").append(HFSUtils.printDate(getCreateDate(), "EEE MMM d HH:mm:ss yyyy")).append("\n"); - s.append("Content Mod Date :").append(HFSUtils.printDate(getContentModDate(), "EEE MMM d HH:mm:ss yyyy")) - .append("\n"); - s.append("Attr Mod Date :").append(HFSUtils.printDate(getAttrModDate(), "EEE MMM d HH:mm:ss yyyy")).append( - "\n"); - return s.toString(); + public int getAttrModDate() { + return attrModDate; } + + public HFSPlusForkData getDatas() { + return datas; + } + + public HFSPlusForkData getResources() { + return resources; + } + + public int getAccessDate() { + return accessDate; + } + + public int getBackupDate() { + return backupDate; + } + + public HFSPlusBSDInfo getPermissions() { + return permissions; + } + + public FileInfo getUserInfo() { + return userInfo; + } + + public ExtendedFileInfo getFinderInfo() { + return finderInfo; + } + + public int getTextEncoding() { + return textEncoding; + } + } Modified: trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFolder.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFolder.java 2009-03-14 10:45:16 UTC (rev 5101) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFolder.java 2009-03-14 19:48:39 UTC (rev 5102) @@ -54,18 +54,14 @@ * * @param valence * @param folderID - * @param createDate - * @param contentModDate - * @param attrModDate */ - public CatalogFolder(int valence, CatalogNodeId folderID, int createDate, - int contentModDate, int attribModDate) { + public CatalogFolder(int valence, CatalogNodeId folderID) { this.recordType = HfsPlusConstants.RECORD_TYPE_FOLDER; this.valence = valence; this.folderId = folderID; - this.createDate = createDate; - this.contentModDate = contentModDate; - this.attrModDate = attribModDate; + this.createDate = HFSUtils.getNow(); + this.contentModDate = HFSUtils.getNow(); + this.attrModDate = HFSUtils.getNow(); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |