// Path: src/main/java/com/wouterbreukink/onedrive/client/OneDriveItem.java
// public interface OneDriveItem {
//     String getId();
// 
//     boolean isDirectory();
// 
//     String getName();
// 
//     String getFullName();
// 
//     long getCrc32();
// 
//     long getSize();
// 
//     Date getCreatedDateTime();
// 
//     Date getLastModifiedDateTime();
// 
//     OneDriveItem getParent();
// 
//     class FACTORY {
// 
//         public static OneDriveItem create(final OneDriveItem parent, final String name, final boolean isDirectory) {
// 
//             return new OneDriveItem() {
//                 public String getId() {
//                     return null;
//                 }
// 
//                 public boolean isDirectory() {
//                     return isDirectory;
//                 }
// 
//                 public String getName() {
//                     return name;
//                 }
// 
//                 public String getFullName() {
//                     return parent.getFullName() + name + (isDirectory ? "/" : "");
//                 }
// 
//                 @Override
//                 public long getCrc32() {
//                     return 0;
//                 }
// 
//                 @Override
//                 public long getSize() {
//                     return 0;
//                 }
// 
//                 @Override
//                 public Date getCreatedDateTime() {
//                     return null;
//                 }
// 
//                 @Override
//                 public Date getLastModifiedDateTime() {
//                     return null;
//                 }
// 
//                 @Override
//                 public OneDriveItem getParent() {
//                     return parent;
//                 }
//             };
//         }
// 
//         public static OneDriveItem create(final Item item) {
//             return new OneDriveItem() {
// 
//                 private OneDriveItem parent = create(item.getParentReference());
// 
//                 @Override
//                 public String getId() {
//                     return item.getId();
//                 }
// 
//                 @Override
//                 public boolean isDirectory() {
//                     return item.getFolder() != null;
//                 }
// 
//                 @Override
//                 public String getName() {
//                     return item.getName();
//                 }
// 
//                 @Override
//                 public String getFullName() {
//                     return parent.getFullName() + item.getName() + (isDirectory() ? "/" : "");
//                 }
// 
//                 @Override
//                 public long getCrc32() {
//                     return item.getFile().getHashes().getCrc32();
//                 }
// 
//                 @Override
//                 public long getSize() {
//                     return item.getSize();
//                 }
// 
//                 @Override
//                 public Date getCreatedDateTime() {
//                     return JsonDateSerializer.INSTANCE.deserialize(item.getFileSystemInfo().getCreatedDateTime());
//                 }
// 
//                 @Override
//                 public Date getLastModifiedDateTime() {
//                     return JsonDateSerializer.INSTANCE.deserialize(item.getFileSystemInfo().getLastModifiedDateTime());
//                 }
// 
//                 @Override
//                 public OneDriveItem getParent() {
//                     return parent;
//                 }
//             };
//         }
// 
//         public static OneDriveItem create(final ItemReference parent) {
//             return new OneDriveItem() {
//                 @Override
//                 public String getId() {
//                     return parent.getId();
//                 }
// 
//                 @Override
//                 public boolean isDirectory() {
//                     return true;
//                 }
// 
//                 @Override
//                 public String getName() {
//                     return null;
//                 }
// 
//                 public String getFullName() {
// 
//                     if (parent.getPath() == null) {
//                         return null;
//                     }
// 
//                     int index = parent.getPath().indexOf(':');
// 
//                     try {
//                         return URLDecoder.decode(index > 0 ? parent.getPath().substring(index + 1) : parent.getPath(), "UTF-8") + "/";
//                     } catch (UnsupportedEncodingException e) {
//                         throw Throwables.propagate(e);
//                     }
//                 }
// 
//                 @Override
//                 public long getCrc32() {
//                     return 0;
//                 }
// 
//                 @Override
//                 public long getSize() {
//                     return 0;
//                 }
// 
//                 @Override
//                 public Date getCreatedDateTime() {
//                     return null;
//                 }
// 
//                 @Override
//                 public Date getLastModifiedDateTime() {
//                     return null;
//                 }
// 
//                 @Override
//                 public OneDriveItem getParent() {
//                     return null;
//                 }
//             };
//         }
//     }
// }


import com.google.api.client.util.Preconditions;
import com.wouterbreukink.onedrive.client.OneDriveItem;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Date;
import java.util.concurrent.TimeUnit;
import static com.wouterbreukink.onedrive.CommandLineOpts.getCommandLineOpts;
package com.wouterbreukink.onedrive.tasks;




public class UpdatePropertiesTask extends Task {

    private static final Logger log = LogManager.getLogger(UpdatePropertiesTask.class.getName());
    private final OneDriveItem remoteFile;
    private final File localFile;

// Path: src/main/java/com/wouterbreukink/onedrive/client/OneDriveItem.java
// public interface OneDriveItem {
//     String getId();
// 
//     boolean isDirectory();
// 
//     String getName();
// 
//     String getFullName();
// 
//     long getCrc32();
// 
//     long getSize();
// 
//     Date getCreatedDateTime();
// 
//     Date getLastModifiedDateTime();
// 
//     OneDriveItem getParent();
// 
//     class FACTORY {
// 
//         public static OneDriveItem create(final OneDriveItem parent, final String name, final boolean isDirectory) {
// 
//             return new OneDriveItem() {
//                 public String getId() {
//                     return null;
//                 }
// 
//                 public boolean isDirectory() {
//                     return isDirectory;
//                 }
// 
//                 public String getName() {
//                     return name;
//                 }
// 
//                 public String getFullName() {
//                     return parent.getFullName() + name + (isDirectory ? "/" : "");
//                 }
// 
//                 @Override
//                 public long getCrc32() {
//                     return 0;
//                 }
// 
//                 @Override
//                 public long getSize() {
//                     return 0;
//                 }
// 
//                 @Override
//                 public Date getCreatedDateTime() {
//                     return null;
//                 }
// 
//                 @Override
//                 public Date getLastModifiedDateTime() {
//                     return null;
//                 }
// 
//                 @Override
//                 public OneDriveItem getParent() {
//                     return parent;
//                 }
//             };
//         }
// 
//         public static OneDriveItem create(final Item item) {
//             return new OneDriveItem() {
// 
//                 private OneDriveItem parent = create(item.getParentReference());
// 
//                 @Override
//                 public String getId() {
//                     return item.getId();
//                 }
// 
//                 @Override
//                 public boolean isDirectory() {
//                     return item.getFolder() != null;
//                 }
// 
//                 @Override
//                 public String getName() {
//                     return item.getName();
//                 }
// 
//                 @Override
//                 public String getFullName() {
//                     return parent.getFullName() + item.getName() + (isDirectory() ? "/" : "");
//                 }
// 
//                 @Override
//                 public long getCrc32() {
//                     return item.getFile().getHashes().getCrc32();
//                 }
// 
//                 @Override
//                 public long getSize() {
//                     return item.getSize();
//                 }
// 
//                 @Override
//                 public Date getCreatedDateTime() {
//                     return JsonDateSerializer.INSTANCE.deserialize(item.getFileSystemInfo().getCreatedDateTime());
//                 }
// 
//                 @Override
//                 public Date getLastModifiedDateTime() {
//                     return JsonDateSerializer.INSTANCE.deserialize(item.getFileSystemInfo().getLastModifiedDateTime());
//                 }
// 
//                 @Override
//                 public OneDriveItem getParent() {
//                     return parent;
//                 }
//             };
//         }
// 
//         public static OneDriveItem create(final ItemReference parent) {
//             return new OneDriveItem() {
//                 @Override
//                 public String getId() {
//                     return parent.getId();
//                 }
// 
//                 @Override
//                 public boolean isDirectory() {
//                     return true;
//                 }
// 
//                 @Override
//                 public String getName() {
//                     return null;
//                 }
// 
//                 public String getFullName() {
// 
//                     if (parent.getPath() == null) {
//                         return null;
//                     }
// 
//                     int index = parent.getPath().indexOf(':');
// 
//                     try {
//                         return URLDecoder.decode(index > 0 ? parent.getPath().substring(index + 1) : parent.getPath(), "UTF-8") + "/";
//                     } catch (UnsupportedEncodingException e) {
//                         throw Throwables.propagate(e);
//                     }
//                 }
// 
//                 @Override
//                 public long getCrc32() {
//                     return 0;
//                 }
// 
//                 @Override
//                 public long getSize() {
//                     return 0;
//                 }
// 
//                 @Override
//                 public Date getCreatedDateTime() {
//                     return null;
//                 }
// 
//                 @Override
//                 public Date getLastModifiedDateTime() {
//                     return null;
//                 }
// 
//                 @Override
//                 public OneDriveItem getParent() {
//                     return null;
//                 }
//             };
//         }
//     }
// }


// Path: src/main/java/com/wouterbreukink/onedrive/tasks/UpdatePropertiesTask.java
import com.google.api.client.util.Preconditions;
import com.wouterbreukink.onedrive.client.OneDriveItem;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Date;
import java.util.concurrent.TimeUnit;
import static com.wouterbreukink.onedrive.CommandLineOpts.getCommandLineOpts;

package com.wouterbreukink.onedrive.tasks;




public class UpdatePropertiesTask extends Task {

    private static final Logger log = LogManager.getLogger(UpdatePropertiesTask.class.getName());
    private final OneDriveItem remoteFile;
    private final File localFile;

    public UpdatePropertiesTask(TaskOptions options, OneDriveItem remoteFile, File localFile) {