WindowsDirectoryListingFormatter.java revision 7d00fd0c9917e59d8ee38543e25fcabb0d04f965
17d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair/*
27d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * Copyright 2008 the original author or authors.
37d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair *
47d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * Licensed under the Apache License, Version 2.0 (the "License");
57d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * you may not use this file except in compliance with the License.
67d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * You may obtain a copy of the License at
77d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair *
87d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair *      http://www.apache.org/licenses/LICENSE-2.0
97d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair *
107d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * Unless required by applicable law or agreed to in writing, software
117d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * distributed under the License is distributed on an "AS IS" BASIS,
127d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * See the License for the specific language governing permissions and
147d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * limitations under the License.
157d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair */
167d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismairpackage org.mockftpserver.fake.filesystem
177d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair
187d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismairimport java.text.SimpleDateFormat
197d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair
207d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair/**
217d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * Windows-specific implementation of the DirectoryListingFormatter interface.
227d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair *
237d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * @version $Revision: 86 $ - $Date: 2008-07-23 21:16:27 -0400 (Wed, 23 Jul 2008) $
247d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair *
257d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * @author Chris Mair
267d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair */
277d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismairclass WindowsDirectoryListingFormatter implements DirectoryListingFormatter {
287d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair
297d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair    static final DATE_FORMAT = "MM-dd-yy hh:mmaa"
307d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair    static final SIZE_WIDTH = 15
317d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair
327d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair    /**
337d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair     * Format the directory listing for a single file/directory entry.
347d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair     * @param fileInfo - the FileInfo for a single file system entry
357d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair     * @return the formatted directory listing
367d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair     */
377d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair    String format(FileInfo fileInfo) {
387d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair        def dateFormat = new SimpleDateFormat(DATE_FORMAT)
397d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair        def dateStr = dateFormat.format(fileInfo.lastModified)
407d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair        def dirOrSize = fileInfo.directory ? "<DIR>".padRight(SIZE_WIDTH) : fileInfo.size.toString().padLeft(SIZE_WIDTH)
417d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair        return "$dateStr  $dirOrSize  ${fileInfo.name}"
427d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair    }
437d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair
447d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair}