Skip to content

Commit f1e09f7

Browse files
Redesign the classes for sdk and test cases
1 parent 026d702 commit f1e09f7

26 files changed

+966
-464
lines changed

ds3-sdk/src/main/java/com/spectralogic/ds3client/metadata/MACMetaDataRestore.java renamed to ds3-sdk/src/main/java/com/spectralogic/ds3client/metadata/MACMetadataRestore.java

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@
1313
* ****************************************************************************
1414
*/
1515

16-
// This code is auto-generated, do not modify
1716
package com.spectralogic.ds3client.metadata;
1817

19-
import com.spectralogic.ds3client.metadata.interfaces.MetaDataRestoreListener;
18+
import com.spectralogic.ds3client.metadata.interfaces.MetadataRestoreListener;
2019
import com.spectralogic.ds3client.networking.Metadata;
2120

2221
import java.text.SimpleDateFormat;
@@ -25,9 +24,9 @@
2524
import static com.spectralogic.ds3client.utils.MetadataKeyConstants.*;
2625

2726

28-
public class MACMetaDataRestore extends PosixMetaDataRestore {
29-
public MACMetaDataRestore(final Metadata metadata, final String filePath, final String localOS, final MetaDataRestoreListener metaDataRestoreListener) {
30-
super(metadata, filePath, localOS,metaDataRestoreListener);
27+
public class MACMetadataRestore extends PosixMetadataRestore {
28+
public MACMetadataRestore(final Metadata metadata, final String filePath, final String localOS, final MetadataRestoreListener metadataRestoreListener) {
29+
super(metadata, filePath, localOS, metadataRestoreListener);
3130
}
3231

3332
/**
@@ -76,10 +75,16 @@ public void restoreFileTimes() {
7675
private void restoreCreationTimeMAC(final String objectName, final String creationTime) {
7776
try {
7877
final ProcessBuilder processBuilder = new ProcessBuilder("touch", "-t", getDate(Long.parseLong(creationTime), "YYYYMMddHHmm"), objectName);
79-
processBuilder.start();
78+
final Process process = processBuilder.start();
79+
//Wait to get exit value
80+
final int exitValue = process.waitFor();
81+
if(exitValue != 0) {
82+
LOG.error("Unable to restore creation time::"+exitValue);
83+
metadataRestoreListener.metadataRestoreFailed("Unable to restore creation time ::"+exitValue);
84+
}
8085
} catch (final Exception e) {
8186
LOG.error("Unable to restore creation time", e);
82-
metaDataRestoreListener.metadataRestoreFailed("Unable to restore creation time ::"+e.getMessage());
87+
metadataRestoreListener.metadataRestoreFailed("Unable to restore creation time ::"+e.getMessage());
8388
}
8489

8590
}
@@ -93,10 +98,16 @@ private void restoreCreationTimeMAC(final String objectName, final String creati
9398
private void restoreModifiedTimeMAC(final String objectName, final String modifiedTime) {
9499
try {
95100
final ProcessBuilder processBuilder = new ProcessBuilder("touch", "-mt", getDate(Long.parseLong(modifiedTime), "YYYYMMddHHmm"), objectName);
96-
processBuilder.start();
101+
final Process process = processBuilder.start();
102+
//Wait to get exit value
103+
final int exitValue = process.waitFor();
104+
if(exitValue != 0) {
105+
LOG.error("Unable to restore modified time::"+exitValue);
106+
metadataRestoreListener.metadataRestoreFailed("Unable to restore creation time ::"+exitValue);
107+
}
97108
} catch (final Exception e) {
98109
LOG.error("Unable to restore modified time", e);
99-
metaDataRestoreListener.metadataRestoreFailed("Unable to restore modified time ::"+e.getMessage());
110+
metadataRestoreListener.metadataRestoreFailed("Unable to restore modified time ::"+e.getMessage());
100111
}
101112

102113
}

ds3-sdk/src/main/java/com/spectralogic/ds3client/metadata/MetaDataAccessImpl.java

Lines changed: 0 additions & 110 deletions
This file was deleted.
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
/*
2+
* ******************************************************************************
3+
* Copyright 2014-2016 Spectra Logic Corporation. All Rights Reserved.
4+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use
5+
* this file except in compliance with the License. A copy of the License is located at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* or in the "license" file accompanying this file.
10+
* This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
11+
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
12+
* specific language governing permissions and limitations under the License.
13+
* ****************************************************************************
14+
*/
15+
16+
package com.spectralogic.ds3client.metadata;
17+
18+
19+
import com.google.common.collect.ImmutableMap;
20+
import com.spectralogic.ds3client.helpers.Ds3ClientHelpers;
21+
import com.spectralogic.ds3client.metadata.interfaces.MetadataStore;
22+
import com.spectralogic.ds3client.metadata.interfaces.MetadataStoreListener;
23+
import com.spectralogic.ds3client.utils.MetaDataUtil;
24+
import org.slf4j.Logger;
25+
import org.slf4j.LoggerFactory;
26+
27+
import java.io.IOException;
28+
import java.nio.file.Files;
29+
import java.nio.file.Path;
30+
import java.nio.file.attribute.BasicFileAttributes;
31+
import java.nio.file.attribute.PosixFileAttributes;
32+
import java.util.Map;
33+
import java.util.Set;
34+
35+
/**
36+
* Implementation of MetaDataAcess Interface
37+
* Used to store meta data on Server
38+
*/
39+
public class MetadataAccessImpl implements Ds3ClientHelpers.MetadataAccess {
40+
static private final Logger LOG = LoggerFactory.getLogger(MetadataAccessImpl.class);
41+
private final Map<String, Path> fileMapper;
42+
private final MetadataStoreListener metadataStoreListener;
43+
44+
public MetadataAccessImpl(final Map<String, Path> fileMapper , final MetadataStoreListener metadataStoreListener) {
45+
this.fileMapper = fileMapper;
46+
this.metadataStoreListener = metadataStoreListener;
47+
}
48+
49+
@Override
50+
public Map<String, String> getMetadataValue(final String filename) {
51+
try {
52+
final Path file = fileMapper.get(filename);
53+
return storeMetaData(file).build();
54+
} catch (final Exception e) {
55+
LOG.error("failed to store Metadata", e);
56+
metadataStoreListener.onMetadataFailed("Unable to get MetaData"+e.getMessage());
57+
return null;
58+
}
59+
}
60+
61+
/**
62+
* @param file local path of file
63+
* @return map builder containing the data to be stored on server
64+
*/
65+
private ImmutableMap.Builder<String, String> storeMetaData(final Path file) {
66+
final ImmutableMap.Builder<String, String> metadata = new ImmutableMap.Builder<>();
67+
new ImmutableMap.Builder<String, String>();
68+
try {
69+
//get local os name
70+
final String localOSName = MetaDataUtil.getOS();
71+
final Set<String> setFileAttributes = MetaDataUtil.getSupportedFileAttributes(file);
72+
//get metadata store based on os type
73+
final MetadataStore metadataStore = new MetadataStoreFactory().getOsSpecificMetadataStore(localOSName, metadata,metadataStoreListener);
74+
metadataStore.saveOSMetaData(localOSName);
75+
76+
final BasicFileAttributes attr = Files.readAttributes(file, BasicFileAttributes.class);
77+
final PosixFileAttributes attrPosix = Files.readAttributes(file, PosixFileAttributes.class);
78+
79+
metadataStore.saveCreationTimeMetaData(attr);
80+
metadataStore.saveAccessTimeMetaData(attr);
81+
metadataStore.saveLastModifiedTime(attr);
82+
83+
if(attrPosix != null)
84+
metadataStore.saveOSSpecificMetadata(file,attrPosix);
85+
else
86+
metadataStore.saveOSSpecificMetadata(file,attr);
87+
88+
} catch (final IOException ioe) {
89+
LOG.error("unable to get metadata", ioe);
90+
metadataStoreListener.onMetadataFailed("Unable to get MetaData"+ioe.getMessage());
91+
}
92+
return metadata;
93+
}
94+
95+
}

ds3-sdk/src/main/java/com/spectralogic/ds3client/metadata/MetadataReceivedListenerImpl.java

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,21 @@
1313
* ****************************************************************************
1414
*/
1515

16-
// This code is auto-generated, do not modify
1716
package com.spectralogic.ds3client.metadata;
1817

1918
import com.spectralogic.ds3client.helpers.MetadataReceivedListener;
20-
import com.spectralogic.ds3client.metadata.interfaces.MetaDataRestore;
21-
import com.spectralogic.ds3client.metadata.interfaces.MetaDataRestoreListener;
19+
import com.spectralogic.ds3client.metadata.interfaces.MetadataRestore;
20+
import com.spectralogic.ds3client.metadata.interfaces.MetadataRestoreListener;
2221
import com.spectralogic.ds3client.networking.Metadata;
2322
import com.spectralogic.ds3client.utils.MetaDataUtil;
2423

2524
public class MetadataReceivedListenerImpl implements MetadataReceivedListener {
2625
private String localFilePath = null;
27-
private final MetaDataRestoreListener metaDataRestoreListener;
26+
private final MetadataRestoreListener metadataRestoreListener;
2827

29-
public MetadataReceivedListenerImpl(final String localFilePath ,final MetaDataRestoreListener metaDataRestoreListener) {
28+
public MetadataReceivedListenerImpl(final String localFilePath ,final MetadataRestoreListener metadataRestoreListener) {
3029
this.localFilePath = localFilePath;
31-
this.metaDataRestoreListener = metaDataRestoreListener;
30+
this.metadataRestoreListener = metadataRestoreListener;
3231
}
3332

3433
@Override
@@ -46,18 +45,16 @@ public void metadataReceived(final String filename, final Metadata metadata) {
4645
private void restoreMetaData(final String objectName, final Metadata metadata) {
4746
final String osName = System.getProperty("os.name");
4847
//get metadatarestore on the basis of os
49-
final MetaDataRestore metaDataRestore = new MetaDataRestoreFactory().getOSSpecificMetadataRestore(metadata, objectName, osName,metaDataRestoreListener);
48+
final MetadataRestore metadataRestore = new MetadataRestoreFactory().getOSSpecificMetadataRestore(metadata, objectName, osName, metadataRestoreListener);
5049
//restore os name
51-
metaDataRestore.restoreOSName();
50+
metadataRestore.restoreOSName();
5251
//restore user and owner based on OS
53-
metaDataRestore.restoreUserAndOwner();
52+
metadataRestore.restoreUserAndOwner();
5453
//restore creation and modified time based on OS
55-
metaDataRestore.restoreFileTimes();
54+
metadataRestore.restoreFileTimes();
5655
//restore permissions based on OS
57-
metaDataRestore.restorePermissions();
58-
if (metaDataRestore instanceof WindowsMetaDataRestore) {
59-
((WindowsMetaDataRestore) metaDataRestore).restoreFlags();
60-
}
56+
metadataRestore.restorePermissions();
57+
6158

6259

6360
}

ds3-sdk/src/main/java/com/spectralogic/ds3client/metadata/MetaDataRestoreFactory.java renamed to ds3-sdk/src/main/java/com/spectralogic/ds3client/metadata/MetadataRestoreFactory.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,21 @@
1313
* ****************************************************************************
1414
*/
1515

16-
// This code is auto-generated, do not modify
1716
package com.spectralogic.ds3client.metadata;
1817

19-
import com.spectralogic.ds3client.metadata.interfaces.MetaDataRestore;
20-
import com.spectralogic.ds3client.metadata.interfaces.MetaDataRestoreListener;
18+
import com.spectralogic.ds3client.metadata.interfaces.MetadataRestore;
19+
import com.spectralogic.ds3client.metadata.interfaces.MetadataRestoreListener;
2120
import com.spectralogic.ds3client.networking.Metadata;
2221

2322

24-
public class MetaDataRestoreFactory {
25-
public MetaDataRestore getOSSpecificMetadataRestore(final Metadata metadata, final String filePath, final String localOS , final MetaDataRestoreListener metaDataRestoreListener) {
23+
public class MetadataRestoreFactory {
24+
public MetadataRestore getOSSpecificMetadataRestore(final Metadata metadata, final String filePath, final String localOS , final MetadataRestoreListener metadataRestoreListener) {
2625
if (localOS.contains("Windows")) {
27-
return new WindowsMetaDataRestore(metadata, filePath, localOS,metaDataRestoreListener);
26+
return new WindowsMetadataRestore(metadata, filePath, localOS, metadataRestoreListener);
2827
} else if (localOS.contains("Mac")) {
29-
return new MACMetaDataRestore(metadata, filePath, localOS,metaDataRestoreListener);
28+
return new MACMetadataRestore(metadata, filePath, localOS, metadataRestoreListener);
3029
} else {
31-
return new PosixMetaDataRestore(metadata, filePath, localOS,metaDataRestoreListener);
30+
return new PosixMetadataRestore(metadata, filePath, localOS, metadataRestoreListener);
3231
}
3332
}
3433
}

ds3-sdk/src/main/java/com/spectralogic/ds3client/metadata/MetaDataStoreFactory.java renamed to ds3-sdk/src/main/java/com/spectralogic/ds3client/metadata/MetadataStoreFactory.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,22 @@
1313
* ****************************************************************************
1414
*/
1515

16-
// This code is auto-generated, do not modify
1716
package com.spectralogic.ds3client.metadata;
1817

1918
import com.google.common.collect.ImmutableMap;
20-
import com.spectralogic.ds3client.metadata.interfaces.MetaDataStore;
19+
import com.spectralogic.ds3client.metadata.interfaces.MetadataStore;
20+
import com.spectralogic.ds3client.metadata.interfaces.MetadataStoreListener;
2121

2222

23-
public class MetaDataStoreFactory
23+
public class MetadataStoreFactory
2424
{
25-
public MetaDataStore getOsSpecificMetadataStore(final String osName, final ImmutableMap.Builder<String, String> metadataMap)
25+
public MetadataStore getOsSpecificMetadataStore(final String osName, final ImmutableMap.Builder<String, String> metadataMap,final MetadataStoreListener metadataStoreListener)
2626
{
27-
if(osName.contains("Windows"))
28-
return new WindowsMetaDataStore(metadataMap);
29-
else
30-
return new PosixMetaDataStore(metadataMap);
27+
if(osName.contains("Windows")) {
28+
return new WindowsMetadataStore(metadataMap,metadataStoreListener);
29+
}
30+
else {
31+
return new PosixMetadataStore(metadataMap,metadataStoreListener);
32+
}
3133
}
3234
}

0 commit comments

Comments
 (0)