com.spectralogic.ds3client.metadata.MACMetadataRestore_Test.java Source code

Java tutorial

Introduction

Here is the source code for com.spectralogic.ds3client.metadata.MACMetadataRestore_Test.java

Source

/*
 * ******************************************************************************
 *   Copyright 2014-2017 Spectra Logic Corporation. All Rights Reserved.
 *   Licensed under the Apache License, Version 2.0 (the "License"). You may not use
 *   this file except in compliance with the License. A copy of the License is located at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 *   or in the "license" file accompanying this file.
 *   This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 *   CONDITIONS OF ANY KIND, either express or implied. See the License for the
 *   specific language governing permissions and limitations under the License.
 * ****************************************************************************
 */
package com.spectralogic.ds3client.metadata;

import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.spectralogic.ds3client.commands.interfaces.MetadataImpl;
import com.spectralogic.ds3client.networking.Headers;
import com.spectralogic.ds3client.networking.Metadata;
import com.spectralogic.ds3client.utils.Platform;
import org.apache.http.Header;
import org.apache.http.message.BasicHeader;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.attribute.BasicFileAttributes;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Set;

@RunWith(JUnit4.class)
public class MACMetadataRestore_Test {

    private final File file = new File(getClass().getClassLoader().getResource("LoremIpsum.txt").getFile());

    @Test
    public void restoreFileTimes_Test() throws Exception {

        if (Platform.isMac()) {
            final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yy:HH:mm");
            final BasicFileAttributes attr = Files.readAttributes(file.toPath(), BasicFileAttributes.class);
            final BasicHeader basicHeader[] = new BasicHeader[3];
            basicHeader[0] = new BasicHeader(
                    MetadataKeyConstants.METADATA_PREFIX + MetadataKeyConstants.KEY_CREATION_TIME,
                    String.valueOf(attr.creationTime().toMillis()));
            basicHeader[1] = new BasicHeader(
                    MetadataKeyConstants.METADATA_PREFIX + MetadataKeyConstants.KEY_ACCESS_TIME,
                    String.valueOf(attr.lastAccessTime().toMillis()));
            basicHeader[2] = new BasicHeader(
                    MetadataKeyConstants.METADATA_PREFIX + MetadataKeyConstants.KEY_LAST_MODIFIED_TIME,
                    String.valueOf(attr.lastModifiedTime().toMillis()));
            final Metadata metadata = genMetadata(basicHeader);
            final MACMetadataRestore macMetadataRestore = new MACMetadataRestore(metadata, file.getPath(),
                    MetaDataUtil.getOS());
            macMetadataRestore.restoreFileTimes();
            final BasicFileAttributes fileAttributes = Files.readAttributes(file.toPath(),
                    BasicFileAttributes.class);
            Assert.assertEquals(simpleDateFormat.format(fileAttributes.creationTime().toMillis()),
                    simpleDateFormat.format(Long.valueOf(basicHeader[0].getValue())));
            Assert.assertEquals(simpleDateFormat.format(fileAttributes.lastModifiedTime().toMillis()),
                    simpleDateFormat.format(Long.valueOf(basicHeader[2].getValue())));

        }

    }

    private Metadata genMetadata(final Header... headers) {

        final ImmutableMultimap.Builder<String, String> mapBuilder = ImmutableMultimap.builder();
        for (final Header header : headers) {
            mapBuilder.put(header.getName(), header.getValue());
        }

        final ImmutableMultimap<String, String> map = mapBuilder.build();

        return new MetadataImpl(new Headers() {
            @Override
            public List<String> get(final String key) {
                return Lists.newArrayList(map.get(key));
            }

            @Override
            public Set<String> keys() {
                return Sets.newHashSet(map.keySet());
            }
        });
    }

}