|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.core.windows.persistence.convert; import org.netbeans.core.windows.Debug; import org.netbeans.core.windows.persistence.PersistenceManager; import org.openide.ErrorManager; import org.openide.filesystems.*; /** * Handler of changes in old module folder. Changes can be for example * generated by enabling/disabling module which defines some winsys * element(s). * * @author Marek Slama */ class ModuleChangeHandlerOld implements FileChangeListener { private boolean started = false; private FileSystem fs = null; private FileObject wmFolder; private FileObject rootFolder; private FileObject compsFolder; /** Creates a new instance of ModuleChangeHandler */ public ModuleChangeHandlerOld () { } void startHandling () { if (started) { return; } ImportManager im = ImportManager.getDefault(); wmFolder = im.getWindowManagerFolder(); log("startHandling wmFolder:" + wmFolder); rootFolder = im.getRootFolder(); log("startHandling rootFolder:" + rootFolder); compsFolder = im.getComponentsFolder(); log("startHandling rootFolder:" + compsFolder); try { fs = wmFolder.getFileSystem(); } catch (FileStateInvalidException exc) { ErrorManager em = ErrorManager.getDefault(); em.log(ErrorManager.WARNING, "[WinSys.ModuleChangeHandlerOld.startHandling]" // NOI18N + " Cannot get filesystem."); // NOI18N em.notify(ErrorManager.INFORMATIONAL,exc); return; } fs.addFileChangeListener(this); started = true; } void stopHandling () { if (!started) { return; } fs.removeFileChangeListener(this); fs = null; started = false; } /** Used to detect if FileEvent event is interesting for us. * @return true if event should be accepted */ private boolean acceptEvent (FileObject fo) { /*log("acceptEvent ENTER" + " fo: " + fo + " path: " + fo.getPath() + " [" + Integer.toHexString(System.identityHashCode(fo)) + "]" + " rootFolder:" + rootFolder + " path:" + rootFolder.getPath() + " [" + Integer.toHexString(System.identityHashCode(rootFolder)) + "]");*/ //Root folder if (fo.getPath().equals(rootFolder.getPath())) { log("acceptEvent ROOT"); return true; } //Window manager folder if (fo.getPath().equals(wmFolder.getPath())) { log("acceptEvent WINDOW MANAGER"); return true; } FileObject parent = fo.getParent(); if (parent == null) { return false; } //Change of workspace config file or workspace folder if (parent.getPath().equals(wmFolder.getPath())) { log("acceptEvent ++ WORKSPACE ++"); return true; } //Change in components folder if (parent.getPath().equals(compsFolder.getPath())) { log("acceptEvent ++ COMPONENT ++"); return true; } parent = parent.getParent(); if (parent == null) { return false; } //Change of mode config file or mode folder if (parent.getPath().equals(wmFolder.getPath())) { log("acceptEvent ++ MODE ++"); return true; } parent = parent.getParent(); if (parent == null) { return false; } //Change of tcRef config file if (parent.getPath().equals(wmFolder.getPath())) { log("acceptEvent ++ TCREF ++"); return true; } return false; } public void fileAttributeChanged (FileAttributeEvent fe) { } public void fileChanged (FileEvent fe) { } public void fileDataCreated (FileEvent fe) { FileObject fo = fe.getFile(); //log("fileDataCreated ENTER fo: " + fo //+ " isFolder:" + fo.isFolder()); boolean accepted = acceptEvent(fo); if (!accepted) { return; } log("fileDataCreated fo: " + fo + " isFolder:" + fo.isFolder() + " ACCEPTED"); //+ " th:" + Thread.currentThread().getName()); if (accepted && fo.isFolder()) { FileObject [] files = fo.getChildren(); for (int i = 0; i < files.length; i++) { System.out.println("fo[" + i + "]: " + files[i] + " [" + Integer.toHexString(System.identityHashCode(files[i])) + "]"); } } processDataOrFolderCreated(fo); } public void fileFolderCreated (FileEvent fe) { FileObject fo = fe.getFile(); //log("fileFolderCreated ENTER fo: " + fo //+ " isFolder:" + fo.isFolder()); boolean accepted = acceptEvent(fo); if (!accepted) { return; } log("fileFolderCreated fo: " + fo + " isFolder:" + fo.isFolder() + " ACCEPTED"); //+ " th:" + Thread.currentThread().getName()); if (accepted && fo.isFolder()) { FileObject [] files = fo.getChildren(); for (int i = 0; i < files.length; i++) { log("fo[" + i + "]: " + files[i] + " [" + Integer.toHexString(System.identityHashCode(files[i])) + "]"); } } processDataOrFolderCreated(fo); } private void processDataOrFolderCreated (FileObject fo) { if (fo.getPath().equals(rootFolder.getPath()) || fo.getPath().equals(wmFolder.getPath())) { log("processDataOrFolderCreated ADD ALL"); addAllWorkspaces(); return; } FileObject parent1 = fo.getParent(); if (parent1.getPath().equals(wmFolder.getPath())) { /*if (!fo.isFolder() && ImportManager.WORKSPACE_EXT.equals(fo.getExt())) { log("processDataOrFolderCreated WORKSPACE ADD"); addWorkspace(fo.getName()); return; } else*/ if (fo.isFolder()) { log("processDataOrFolderCreated WORKSPACE ADD"); addWorkspace(fo.getName()); return; } } FileObject parent2 = parent1.getParent(); if (parent2.getPath().equals(wmFolder.getPath())) { /*if (!fo.isFolder() && PersistenceManager.MODE_EXT.equals(fo.getExt())) { log("processDataOrFolderCreated MODE ADD"); addMode(parent1.getName(), fo.getName()); return; } else*/ if (fo.isFolder()) { log("processDataOrFolderCreated MODE ADD"); addMode(parent1.getName(), fo.getName()); return; } } FileObject parent3 = parent2.getParent(); if (parent3.getPath().equals(wmFolder.getPath())) { if (!fo.isFolder() && PersistenceManager.TCREF_EXT.equals(fo.getExt())) { log("processDataOrFolderCreated TCREF ADD"); addTCRef(parent2.getName(), parent1.getName(), fo.getName()); return; } } } public void fileDeleted (FileEvent fe) { FileObject fo = fe.getFile(); //log("fileDeleted ENTER fo: " + fo //+ " isFolder:" + fo.isFolder()); boolean accepted = acceptEvent(fo); if (!accepted) { return; } log("fileDeleted fo: " + fo + " isFolder:" + fo.isFolder() + " isValid:" + fo.isValid() + " ACCEPTED"); //+ " th:" + Thread.currentThread().getName()); if (fo.getPath().equals(rootFolder.getPath()) || fo.getPath().equals(wmFolder.getPath())) { log("fileDeleted REMOVE ALL WORKSPACES"); removeAllWorkspaces(); return; } FileObject parent1 = fo.getParent(); if (parent1.getPath().equals(wmFolder.getPath())) { /*if (!fo.isFolder() && ImportManager.WORKSPACE_EXT.equals(fo.getExt())) { log("fileDeleted WORKSPACE REMOVE"); removeWorkspace(fo.getName()); return; } else */ if (fo.isFolder()) { log("fileDeleted REMOVE WORKSPACE:" + fo.getName()); removeWorkspace(fo.getName()); return; } } //Component settings file was removed if (parent1.getPath().equals(compsFolder.getPath())) { if (!fo.isFolder() && "settings".equals(fo.getExt())) { // NOI18N log("fileDeleted COMPONENT REMOVE fo:" + fo.getName()); removeComponent(fo.getName()); return; } } FileObject parent2 = parent1.getParent(); if (parent2.getPath().equals(wmFolder.getPath())) { /*if (!fo.isFolder() && PersistenceManager.MODE_EXT.equals(fo.getExt())) { log("fileDeleted MODE REMOVE"); removeMode(parent1.getName(), fo.getName()); return; } else */ if (fo.isFolder()) { log("fileDeleted REMOVE MODE ws:" + parent1.getName() + " mo:" + fo.getName()); removeMode(parent1.getName(), fo.getName()); return; } } FileObject parent3 = parent2.getParent(); if (parent3.getPath().equals(wmFolder.getPath())) { if (!fo.isFolder() && PersistenceManager.TCREF_EXT.equals(fo.getExt())) { log("fileDeleted tcRef REMOVE"); removeTCRef(parent2.getName(), parent1.getName(), fo.getName()); return; } } } public void fileRenamed (FileRenameEvent fe) { } private void addAllWorkspaces () { log("addAllWorkspaces ENTER"); ImportManager.getDefault().addConfigurationData(); log("addAllWorkspaces LEAVE"); } private void addWorkspace (String workspaceName) { log("addWorkspace ENTER" + " ws:" + workspaceName); ImportManager.getDefault().addWorkspace(workspaceName); log("addWorkspace LEAVE" + " ws:" + workspaceName); } private void addMode (String workspaceName, String modeName) { log("addMode ENTER" + " ws:" + workspaceName + " mo:" + modeName); ImportManager.getDefault().addMode(workspaceName,modeName); log("addMode LEAVE" + " ws:" + workspaceName + " mo:" + modeName); } private void addTCRef (String workspaceName, String modeName, String tcRefName) { log("addTCRef ENTER" + " ws:" + workspaceName + " modeName:" + modeName + " tcRefName:" + tcRefName); ImportManager.getDefault().addTCRef(workspaceName,modeName,tcRefName); log("addTCRef LEAVE" + " ws:" + workspaceName + " modeName:" + modeName + " tcRefName:" + tcRefName); } private void removeAllWorkspaces () { log("removeAllWorkspaces ENTER"); WindowManagerParserOld wmParser = ImportManager.getDefault().getWindowManagerParserOld(); wmParser.removeAllWorkspaces(); log("removeAllWorkspaces LEAVE"); } private void removeWorkspace (String workspaceName) { log("removeWorkspace ENTER" + " ws:" + workspaceName); WindowManagerParserOld wmParser = ImportManager.getDefault().getWindowManagerParserOld(); wmParser.removeWorkspace(workspaceName); log("removeWorkspace LEAVE" + " ws:" + workspaceName); } private void removeMode (String workspaceName, String modeName) { log("removeMode ENTER" + " ws:" + workspaceName + " mo:" + modeName); WindowManagerParserOld wmParser = ImportManager.getDefault().getWindowManagerParserOld(); wmParser.removeMode(workspaceName,modeName); log("removeMode LEAVE" + " ws:" + workspaceName + " mo:" + modeName); } private void removeTCRef (String workspaceName, String modeName, String tcRefName) { log("removeTCRef ENTER" + " ws:" + workspaceName + " modeName:" + modeName + " tcRefName:" + tcRefName); WindowManagerParserOld wmParser = ImportManager.getDefault().getWindowManagerParserOld(); wmParser.removeTCRef(workspaceName,modeName,tcRefName); log("removeTCRef LEAVE" + " ws:" + workspaceName + " modeName:" + modeName + " tcRefName:" + tcRefName); } private void removeComponent (String compName) { log("removeComponent ENTER comp:" + compName); PersistenceManager.getDefault().removeUsedTCId(compName); //XXX Delete localy copied settings file PersistenceManager pm = PersistenceManager.getDefault(); FileObject toBeDeleted = pm.getComponentsLocalFolder().getFileObject(compName,"settings"); // NOI18N if (toBeDeleted != null) { log("removeComponent DELETE fo:" + toBeDeleted); PersistenceManager.deleteOneFO(toBeDeleted); } log("removeComponent LEAVE comp:" + compName); } void log (String s) { Debug.log(ModuleChangeHandlerOld.class, s); } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.