/* * Copyright (C) 2005-2007 Alfresco Software Limited. * * This program 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; either version 2 * of the License, or (at your option) any later version. * This program 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 this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * As a special exception to the terms and conditions of version 2.0 of * the GPL, you may redistribute this Program in connection with Free/Libre * and Open Source Software ("FLOSS") applications as described in Alfresco's * FLOSS exception. You should have recieved a copy of the text describing * the FLOSS exception, and it is also available here: * http://www.alfresco.com/legal/licensing" */ package org.alfresco.filesys.server.filesys; /** * Notify Change Transaction Class */ public class NotifyChange { // Change notification filter flags public final static int FileName = 0x0001; public final static int DirectoryName = 0x0002; public final static int Attributes = 0x0004; public final static int Size = 0x0008; public final static int LastWrite = 0x0010; public final static int LastAccess = 0x0020; public final static int Creation = 0x0040; public final static int Security = 0x0100; // Change notification actions public final static int ActionAdded = 1; public final static int ActionRemoved = 2; public final static int ActionModified = 3; public final static int ActionRenamedOldName = 4; public final static int ActionRenamedNewName = 5; public final static int ActionAddedStream = 6; public final static int ActionRemovedStream = 7; public final static int ActionModifiedStream = 8; // Change notification action names private final static String[] _actnNames = { "Added", "Removed", "Modified", "RenamedOldName", "RenamedNewName", "AddedStream", "RemovedStream", "ModifiedStream" }; /** * Return the change notification action as a string * * @param action int * @return String */ public static final String getActionAsString(int action) { // Range check the action if (action <= 0 || action > _actnNames.length) return "Unknown"; // Return the action as a string return _actnNames[action - 1]; } /** * Return the change notification filter flag as a string. This method assumes a single flag is * set. * * @param filter int * @return String */ public static final String getFilterAsString(int filter) { // Check if there are any flags set if (filter == 0) return ""; // Determine the filter type String filtStr = null; switch (filter) { case FileName: filtStr = "FileName"; break; case DirectoryName: filtStr = "DirectoryName"; break; case Attributes: filtStr = "Attributes"; break; case Size: filtStr = "Size"; break; case LastWrite: filtStr = "LastWrite"; break; case LastAccess: filtStr = "LastAccess"; break; case Creation: filtStr = "Creation"; break; case Security: filtStr = "Security"; break; } // Return the filter type string return filtStr; } /** * Return the change notification filter flags as a string. * * @param filter int * @return String */ public static final String getFilterFlagsAsString(int filter) { // Check if there are any flags set if (filter == 0) return ""; // Build the filter flags string StringBuffer filtStr = new StringBuffer(); int i = 0x0001; while (i < Security) { // Check if the current filter flag is set if ((filter & i) != 0) { // Get the filter flag name String name = getFilterAsString(i); if (name != null) { if (filtStr.length() > 0) filtStr.append(","); filtStr.append(name); } } // Update the filter flag mask i = i << 1; } // Return the filter flags string return filtStr.toString(); } }