/* * Copyright (C) 2014 Indeed Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the * License 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.indeed.imhotep.io.caching; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Map; public class RemappingRemoteFileSystem extends RemoteFileSystem { private RemoteFileSystemMounter mounter; private String mountPoint; public RemappingRemoteFileSystem(Map<String,String> settings, RemoteFileSystem parent, RemoteFileSystemMounter mounter) { String mp; mp = settings.get("mountpoint"); if (mp == null) { mp = ""; } else { mp = mp.trim(); } mountPoint = mp; mountPoint = mountPoint + DELIMITER; mountPoint = mounter.getRootMountPoint() + mountPoint; mountPoint = mountPoint.replace("//", "/"); this.mounter = mounter; } @Override public void copyFileInto(String fullPath, File localFile) throws IOException { RemoteFileSystem fs; fs = mounter.findMountPoint(fullPath); fs.copyFileInto(fullPath, localFile); } @Override public File loadFile(String fullPath) throws IOException { RemoteFileSystem fs; fs = mounter.findMountPoint(fullPath); return fs.loadFile(fullPath); } @Override public RemoteFileInfo stat(String fullPath) { RemoteFileSystem fs; fs = mounter.findMountPoint(fullPath); return fs.stat(fullPath); } @Override public List<RemoteFileInfo> readDir(String fullPath) { RemoteFileSystem fs; fs = mounter.findMountPoint(fullPath); return fs.readDir(fullPath); } @Override public String getMountPoint() { return this.mountPoint; } @Override public Map<String, File> loadDirectory(String fullPath, File location) throws IOException { RemoteFileSystem fs; fs = mounter.findMountPoint(fullPath); return fs.loadDirectory(fullPath, location); } @Override public InputStream getInputStreamForFile(String fullPath, long startOffset, long maxReadLength) throws IOException { RemoteFileSystem fs; fs = mounter.findMountPoint(fullPath); return fs.getInputStreamForFile(fullPath, startOffset, maxReadLength); } }