/* * Copyright 2004 - 2010 Christian Sprajc. All rights reserved. * * This file is part of PowerFolder. * * PowerFolder is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation. * * PowerFolder is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PowerFolder. If not, see <http://www.gnu.org/licenses/>. * * $Id: MetaDataHandler.java 12163 2010-04-24 02:06:55Z harry $ */ package de.dal33t.powerfolder.transfer; import de.dal33t.powerfolder.PFComponent; import de.dal33t.powerfolder.Controller; import de.dal33t.powerfolder.disk.Folder; import de.dal33t.powerfolder.disk.DiskItemFilter; import de.dal33t.powerfolder.light.FileInfo; /** * This class delegates responsibility for processing metaFolder fileInfo * 'events' to relevant classes. */ public class MetaFolderDataHandler extends PFComponent { public MetaFolderDataHandler(Controller controller) { super(controller); } /** * Handle file change to metaFolder files. * * @param fileInfo * metaFolder file info */ public void handleMetaFolderFileInfo(FileInfo fileInfo) { if (!fileInfo.getFolderInfo().isMetaFolder()) { logSevere("Unable to handle meta data file. Not in meta folder: " + fileInfo.toDetailString()); return; } Folder parentFolder = getController().getFolderRepository() .getParentFolder(fileInfo.getFolderInfo()); if (parentFolder == null) { logSevere("Parent folder for meta folder not found: " + fileInfo.getFolderInfo() + '/' + fileInfo.getFolderInfo().id); return; } if (fileInfo.getRelativeName().endsWith( DiskItemFilter.PATTERNS_FILENAME)) { handleMetaFolderSyncPatterns(parentFolder, fileInfo); } if (fileInfo.getRelativeName().equals(Folder.METAFOLDER_MEMBERS)) { handleMetaFolderMembers(parentFolder); } } /** * Update the members in the parent folder. * * @param parentFolder * @param fileInfo */ private static void handleMetaFolderMembers(Folder parentFolder) { parentFolder.updateMetaFolderMembers(); } /** * Updated sync patterns have been downloaded to the metaFolder. Update the * sync patterns in the parent folder. * * @param fileInfo * fileInfo of the new sync patterns */ private static void handleMetaFolderSyncPatterns(Folder parentFolder, FileInfo fileInfo) { parentFolder.handleMetaFolderSyncPatterns(fileInfo); } }