17d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair/*
27d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * Copyright 2008 the original author or authors.
35eefc0033edb232f9febcc1d32ede04bc901067cchrismair *
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
75eefc0033edb232f9febcc1d32ede04bc901067cchrismair *
87d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair *      http://www.apache.org/licenses/LICENSE-2.0
95eefc0033edb232f9febcc1d32ede04bc901067cchrismair *
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 */
165eefc0033edb232f9febcc1d32ede04bc901067cchrismairpackage org.mockftpserver.fake.filesystem;
175eefc0033edb232f9febcc1d32ede04bc901067cchrismair
185eefc0033edb232f9febcc1d32ede04bc901067cchrismairimport org.mockftpserver.core.util.StringUtil;
197d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair
205eefc0033edb232f9febcc1d32ede04bc901067cchrismairimport java.text.DateFormat;
215eefc0033edb232f9febcc1d32ede04bc901067cchrismairimport java.text.SimpleDateFormat;
2240186f5d22de9dfbf27e9ddcbcac0e7c54f18d9dchrismairimport java.util.Locale;
237d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair
247d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair/**
257d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * Windows-specific implementation of the DirectoryListingFormatter interface.
267d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair *
277d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair * @author Chris Mair
282a0a3f946dba517a01cc26278f905156857c9c91chrismair * @version $Revision$ - $Date$
297d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair */
305eefc0033edb232f9febcc1d32ede04bc901067cchrismairpublic class WindowsDirectoryListingFormatter implements DirectoryListingFormatter {
317d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair
325eefc0033edb232f9febcc1d32ede04bc901067cchrismair    private static final String DATE_FORMAT = "MM-dd-yy hh:mmaa";
335eefc0033edb232f9febcc1d32ede04bc901067cchrismair    private static final int SIZE_WIDTH = 15;
347d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair
357d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair    /**
367d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair     * Format the directory listing for a single file/directory entry.
375eefc0033edb232f9febcc1d32ede04bc901067cchrismair     *
381dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair     * @param fileSystemEntry - the FileSystemEntry for a single file system entry
397d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair     * @return the formatted directory listing
407d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair     */
415eefc0033edb232f9febcc1d32ede04bc901067cchrismair    public String format(FileSystemEntry fileSystemEntry) {
4240186f5d22de9dfbf27e9ddcbcac0e7c54f18d9dchrismair        DateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.ENGLISH);
435eefc0033edb232f9febcc1d32ede04bc901067cchrismair        String dateStr = dateFormat.format(fileSystemEntry.getLastModified());
445eefc0033edb232f9febcc1d32ede04bc901067cchrismair        String dirOrSize = fileSystemEntry.isDirectory()
455eefc0033edb232f9febcc1d32ede04bc901067cchrismair                ? StringUtil.padRight("<DIR>", SIZE_WIDTH)
465eefc0033edb232f9febcc1d32ede04bc901067cchrismair                : StringUtil.padLeft(Long.toString(fileSystemEntry.getSize()), SIZE_WIDTH);
475eefc0033edb232f9febcc1d32ede04bc901067cchrismair        return dateStr + "  " + dirOrSize + "  " + fileSystemEntry.getName();
487d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair    }
497d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair
507d00fd0c9917e59d8ee38543e25fcabb0d04f965chrismair}