1 package twcsckernel.serverKernel.utils; 2 3 import twcsckernel.projectbase.io.FileDescriptor; 4 import twcsckernel.projectbase.io.FsChangeDescriptor; 5 import twcsckernel.projectbase.io.UserRootPathManager; 6 7 /*** 8 * Klasa służy dostosowywaniu zdarzeń o zmianach w systemie plików względem 9 * managera ścieżki root danego użytkownika. 10 * 11 * @author VMD Group 12 * 13 */ 14 public class RootAdjuster { 15 /*** 16 * Dostosowanie ścieżek dla deskryptora zmian 17 * 18 * @param fsDescriptor - 19 * deskryptor zmian 20 * @param rootManager - 21 * manager ścieżki root używany do "obróbki" 22 * @return - dostosowany przez rootManagera deskryptor zmiany 23 */ 24 public static FsChangeDescriptor adjustRootPath( 25 FsChangeDescriptor fsDescriptor, UserRootPathManager rootManager) { 26 FsChangeDescriptor result = new FsChangeDescriptor(fsDescriptor 27 .getChangeType()); 28 if (fsDescriptor.getSource() != null) { 29 String tmpStr = adjustRootPath(fsDescriptor.getSource(), 30 rootManager); 31 if (tmpStr == null) 32 return null; 33 result.setSource(tmpStr); 34 } 35 if (fsDescriptor.getTarget() != null) { 36 String tmpStr = adjustRootPath(fsDescriptor.getTarget(), 37 rootManager); 38 if (tmpStr == null) 39 return null; 40 result.setTarget(tmpStr); 41 } 42 if (fsDescriptor.getChangeInfo() != null) { 43 FileDescriptor tmp = adjustRootPath(fsDescriptor.getChangeInfo(), 44 rootManager); 45 if (tmp == null) 46 return null; 47 result.setChangeInfo(tmp); 48 } 49 return result; 50 } 51 52 /*** 53 * Dostosowanie ścieżek dla deskryptora pliku 54 * 55 * @param changeInfo - 56 * deskryptor pliku 57 * @param rootManager - 58 * manager ścieżki root używany do "obróbki" 59 * @return - dostosowany przez rootManagera deskryptor pliku 60 */ 61 public static FileDescriptor adjustRootPath(FileDescriptor changeInfo, 62 UserRootPathManager rootManager) { 63 String tmp = adjustRootPath(changeInfo.getPath(), rootManager); 64 if (tmp == null) 65 return null; 66 FileDescriptor result = new FileDescriptor(); 67 result.setPath(tmp); 68 result.setHidden(changeInfo.isHidden()); 69 result.setLastModified(changeInfo.getLastModified()); 70 result.setIsFile(changeInfo.isFile()); 71 result.setLength(changeInfo.getLength()); 72 result.setName(changeInfo.getName()); 73 return result; 74 } 75 76 /*** 77 * Dostosowanie podanej ścieżki absolutnej przez manager ścieżki root 78 * 79 * @param absolutePath - 80 * ścieżka absolutna do dostosowania 81 * @param rootManager - 82 * manager ścieżki root używany do "obróbki" 83 * @return - ścieżka dostosowana przez rootManagera 84 */ 85 public static String adjustRootPath(String absolutePath, 86 UserRootPathManager rootManager) { 87 return rootManager.getUserAbsolutePath(absolutePath); 88 } 89 }