List of usage examples for org.apache.commons.vfs2 FileObject resolveFile
FileObject resolveFile(String path) throws FileSystemException;
From source file:de.innovationgate.wgpublisher.design.fs.FileSystemDesignManager.java
protected FileObject initialDeployScriptModule(WGCSSJSModule script) throws IOException, InstantiationException, IllegalAccessException, WGAPIException, WGDesignSyncException { if (script.isMetadataModule()) { return null; }/*from w ww . ja v a 2s. c o m*/ ScriptInformation info = DesignDirectory.getScriptInformation(script.getCodeType()); if (info == null) { _log.warn("Cannot deploy unknown script code type: " + script.getCodeType()); return null; } // Get script type folder FileObject scriptTypeFolder = getScriptTypeFolder(info.getFolder()); // Eventually create intermediate directories List<String> path = WGUtils.deserializeCollection(script.getName(), ":", true); String localName = (String) path.get(path.size() - 1); FileObject currentDir = scriptTypeFolder; for (int i = 0; i < path.size() - 1; i++) { currentDir = currentDir.resolveFile((String) path.get(i)); if (!currentDir.exists()) { _log.info("Creating script category directory" + getRelativePath(currentDir)); try { currentDir.createFolder(); } catch (FileSystemException e) { throw new WGInitialDeployException( "Could not create script category folder '" + getRelativePath(currentDir) + "'", e); } } else if (!currentDir.getType().equals(FileType.FOLDER)) { throw new WGInitialDeployException( "Cannot deploy " + script.getDocumentKey() + " to sync folder because the directory name '" + path.get(i) + "' is already used by another file"); } } // Create code file FileObject codeFile = currentDir.resolveFile(localName + info.getSuffix()); _log.info("Creating script module file " + getRelativePath(codeFile)); try { codeFile.createFile(); } catch (FileSystemException e) { throw new WGInitialDeployException( "Could not create script code file '" + codeFile.getName().getPathDecoded() + "'"); } Writer writer = createWriter(codeFile); writer.write(script.getCode()); writer.close(); // Create metadata file ScriptMetadata metaData = new ScriptMetadata(script); FileObject metadataDir = currentDir.resolveFile(DesignDirectory.NAME_METADATADIR); if (!metadataDir.exists()) { _log.info("Creating script metadata directory " + getRelativePath(metadataDir)); try { metadataDir.createFolder(); } catch (FileSystemException e) { throw new WGInitialDeployException( "Could not create metadata folder '" + getRelativePath(metadataDir) + "'"); } } FileObject metadataFile = metadataDir.resolveFile(localName + DesignDirectory.SUFFIX_METADATA); _log.info("Creating script metadata file " + getRelativePath(metadataFile)); writer = createWriter(metadataFile); writer.write(_xstream.toXML(metaData.getInfo())); writer.close(); return codeFile; }
From source file:de.innovationgate.wgpublisher.services.WGACoreServicesImpl.java
public void initializeOverlay(RemoteSession session, PluginInfo pluginInfo, String designFolder) throws WGAServiceException { StandardFileSystemManager fsManager = new StandardFileSystemManager(); try {//from www. j ava 2 s .c o m fsManager.init(); if (!isAdminServiceEnabled()) { throw new WGAServiceException("Administrative services are disabled"); } if (!isAdminSession(session)) { throw new WGAServiceException("You need an administrative login to access this service."); } WGAPlugin basePlugin = _core.getPluginSet().getPluginsByInstallationKey() .get(pluginInfo.getInstallationKey()); if (basePlugin == null) { throw new WGAServiceException( "No plugin is installed with installation key " + pluginInfo.getInstallationKey()); } WGDatabase pluginDB = _core.getContentdbs().get(basePlugin.buildDatabaseKey()); if (pluginDB == null) { throw new WGAServiceException( "Plugin database not connected for plugin " + basePlugin.getIdentification()); } FileSystemDesignSource fsDesignSource = (FileSystemDesignSource) _core.getDesignManager() .getDesignSources().get(WGAConfiguration.UID_DESIGNSOURCE_FILESYSTEM); WGADesign overlayDesign = fsDesignSource.getDesign(designFolder); if (overlayDesign == null) { throw new WGAServiceException("File Directory Design '" + designFolder + "' does not exist"); } String designFolderLocation = fsDesignSource.getDesignLocation(overlayDesign); FileObject designFolderObj = fsManager.resolveFile(designFolderLocation); if (!designFolderObj.exists() || !designFolderObj.getType().equals(FileType.FOLDER)) { throw new WGAServiceException( "Design folder '" + designFolder + "' cannot be found or is no folder"); } // Determine design encoding of folder to import to DesignDefinition designDef = null; FileObject designDefFile = designFolderObj.resolveFile("design.xml"); if (designDefFile.exists()) { designDef = DesignDefinition.load(designDefFile); } CSConfig csConfig = null; FileObject csConfigFile = designFolderObj.resolveFile("files/system/csconfig.xml"); if (csConfigFile.exists()) { csConfig = CSConfig.load(csConfigFile); } String designEncoding = FileSystemDesignManager.determineDesignEncoding(designDef, csConfig); // Trigger overlay init/uprade process OverlayStatus status = FileSystemDesignProvider.determineOverlayStatus( (FileSystemDesignProvider) pluginDB.getDesignProvider(), basePlugin.getPluginID(), designFolderObj, designEncoding, _core.getLog(), _core.getDesignFileValidator()); FileSystemDesignProvider.upgradeOverlay((FileSystemDesignProvider) pluginDB.getDesignProvider(), basePlugin.getPluginID(), status, designFolderObj, designEncoding, _core.getLog(), _core.getDesignFileValidator()); // Disconnect consumer apps WGADesignManager designManager = _core.getDesignManager(); for (WGDatabase consumerDb : _core.getContentdbs().values()) { WGDesignProvider provider = consumerDb.getDesignProvider(); if (provider instanceof OverlayDesignProvider) { OverlayDesignProvider overlayProvider = (OverlayDesignProvider) provider; if (overlayProvider.getOverlay() instanceof FileSystemDesignProvider) { FileSystemDesignProvider fsProvider = (FileSystemDesignProvider) overlayProvider .getOverlay(); if (fsProvider.getBaseFolder().equals(designFolderObj)) { _core.removeContentDB(consumerDb.getDbReference()); } } } } // Run update content dbs to reconnect _core.updateContentDBs(); } catch (Exception e) { if (e instanceof WGAServiceException) { throw (WGAServiceException) e; } else { throw new WGAServiceException("Overlay initialisation failed.", e); } } finally { fsManager.close(); } }
From source file:de.innovationgate.wgpublisher.design.fs.FileSystemDesignManager.java
private FileObject findMatchingChild(FileObject folder, String baseName, Set<String> suffixes, boolean exactMatch) throws FileSystemException { FileObject matchingChild = null; // First try fast straight fetch using lowercase file for (String suffix : suffixes) { FileObject straightChild = folder.resolveFile(baseName.toLowerCase() + suffix.toLowerCase()); if (straightChild.exists()) { return straightChild; }//from w w w . j ava 2s . c om } // Secondly we iterate over all children and to a case-insensitive // equals FileObject[] children = folder.getChildren(); for (String suffix : suffixes) { for (FileObject child : children) { if (exactMatch) { if (child.getName().getBaseName().equalsIgnoreCase(baseName + suffix)) { matchingChild = child; break; } } else { String fileName = child.getName().getBaseName().toLowerCase(); String elementName = baseName.toLowerCase() + suffix.toLowerCase(); if (fileName.startsWith(elementName) && fileName.indexOf(".", elementName.length()) == -1) { matchingChild = child; break; } } } } return matchingChild; }
From source file:de.innovationgate.wgpublisher.design.fs.FileSystemDesignManager.java
protected FileObject initialDeployFileContainer(WGFileContainer con) throws IOException, InstantiationException, IllegalAccessException, WGAPIException, WGDesignSyncException { // Create container folder FileObject containerFolder = getFilesFolder().resolveFile(con.getName()); _log.info("Creating file container folder " + getRelativePath(containerFolder)); try {/* ww w. j a v a 2s . c o m*/ containerFolder.createFolder(); } catch (FileSystemException e) { throw new WGInitialDeployException( "Could not create file container folder '" + containerFolder.getName().getPathDecoded() + "'", e); } // Create metadata file FCMetadata metaData = new FCMetadata(con); FileObject metadataFile = containerFolder .resolveFile(AbstractDesignFile.FILECONTAINER_METADATA_FILENAME + DesignDirectory.SUFFIX_METADATA); _log.info("Creating file container metadata file " + getRelativePath(metadataFile)); Writer writer = createWriter(metadataFile); writer.write(_xstream.toXML(metaData.getInfo())); writer.close(); // Create contained files Iterator fileNames = con.getFileNames().iterator(); String fileName; FileObject file; while (fileNames.hasNext()) { fileName = (String) fileNames.next(); InputStream in = con.getFileData(fileName); file = containerFolder.resolveFile(fileName); _log.info("Creating file container file " + getRelativePath(file)); try { file.createFile(); } catch (FileSystemException e) { throw new WGInitialDeployException( "Could not create container file '" + getRelativePath(file) + "'", e); } OutputStream out = file.getContent().getOutputStream(); WGUtils.inToOut(in, out, 2048); in.close(); out.close(); } return containerFolder; }
From source file:de.innovationgate.utils.WGUtils.java
/** * Resolves an eventually present directory link file (variant with Commons VFS file objects). Use this with folders that either may be used themselves or that contain a directory link pointing to the directory to use. * @param file The directory that might contain a directory link file. * @return Either the path that an available directory link file points to or the given directory itself again. *//*from ww w .j a v a 2 s . c o m*/ public static FileObject resolveDirLink(FileObject file) throws FileSystemException { if (file != null && file.exists()) { if (file.getType().equals(FileType.FOLDER)) { FileObject link = file.resolveFile(DIRLINK_FILE); if (link.exists()) { // dir link present resolve Document doc; try { InputStream fileInputStream = link.getContent().getInputStream(); String linkLocation = readDirLinkLocation(fileInputStream); if (linkLocation != null) { if (linkLocation.startsWith("../")) { return file.resolveFile(linkLocation); } else { return file.getFileSystem().resolveFile(linkLocation); } } } catch (Exception e) { Logger.getLogger("wga.utils") .error("Unable to resolve dir link. '" + link.getName().getPath() + "'.", e); } } } } // no dir link or file does not exist - just return return file; }
From source file:de.innovationgate.utils.WGUtils.java
/** * Returns a VFS file object for a folder. If the folder does not exist it is created. * @param parent The parent folder of the retrieved folder * @param name The name of the folder to retrieve * @return The folder//from w ww. j a v a2s. c o m * @throws IOException */ public static FileObject getOrCreateFolder(FileObject parent, String name) throws IOException { if (!parent.getType().equals(FileType.FOLDER)) { throw new IllegalArgumentException("Parent file is no folder: " + parent.getName().getPathDecoded()); } FileObject folder = parent.resolveFile(name); if (!folder.exists()) { if (!folder.getFileSystem().hasCapability(Capability.CREATE)) { throw new IOException("File system of file " + folder.getURL().toString() + " is read only"); } folder.createFolder(); } if (!folder.getType().equals(FileType.FOLDER)) { throw new IllegalArgumentException("There is already a file of this name: " + name); } return folder; }
From source file:com.sonicle.webtop.mail.Service.java
public void processRequestCloudFile(HttpServletRequest request, HttpServletResponse response, PrintWriter out) { try {//from w ww . j a v a 2s . c o m String subject = ServletUtils.getStringParameter(request, "subject", true); String path = "/Uploads"; int sid = vfsmanager.getMyDocumentsStoreId(); FileObject fo = vfsmanager.getStoreFile(sid, path); if (!fo.exists()) fo.createFolder(); String dirname = PathUtils .sanitizeFolderName(DateTimeUtils.createYmdHmsFormatter(environment.getProfile().getTimeZone()) .print(DateTimeUtils.now()) + " - " + subject); FileObject dir = fo.resolveFile(dirname); if (!dir.exists()) dir.createFolder(); JsonResult jsres = new JsonResult(); jsres.put("storeId", sid); jsres.put("filePath", path + "/" + dirname + "/"); jsres.printTo(out); } catch (Exception ex) { logger.error("Request cloud file failure", ex); new JsonResult(ex).printTo(out); } }
From source file:org.anarres.filechooser.impl.vfs2.VFSJFileChooserTest.java
@Test public void testFileChooser() throws Exception { StandardFileSystemManager manager = new StandardFileSystemManager(); manager.init();/*w w w. jav a 2 s . c o m*/ final FileObject root = manager.resolveFile("ram:/"); FileObject foo = root.resolveFile("foo"); foo.createFolder(); foo.resolveFile("foo0").createFile(); foo.resolveFile("foo1").createFile(); root.resolveFile("bar").createFile(); EventQueue.invokeLater(new Runnable() { @Override public void run() { try { CommonsVfs2JFileChooser chooser = new CommonsVfs2JFileChooser(); chooser.setMultiSelectionEnabled(true); chooser.setCurrentDirectory(root); VFSJFileChooser.RETURN_TYPE ret = chooser.showOpenDialog(null); LOG.info("RETURN_TYPE = " + ret); LOG.info("Selected FO = " + chooser.getSelectedFile()); LOG.info("Selected FOs = " + Arrays.toString(chooser.getSelectedFiles())); print(chooser.getSelectedFile()); for (FileObject file : chooser.getSelectedFiles()) { print(file); } } catch (FileSystemException e) { throw new RuntimeException(e); } } }); Robot robot = BasicRobot.robotWithCurrentAwtHierarchy(); robot.waitForIdle(); VFSJFileChooserFixture<FileObject> chooser = VFSJFileChooserFinder.<FileObject>findFileChooser() .using(robot); // Thread.sleep(2000); chooser.setCurrentDirectory(foo); // Thread.sleep(2000); chooser.approve(); }
From source file:org.apache.commons.vfs2.example.Shell.java
/** * Does a 'cp' command./*from w w w . j a v a 2s . c om*/ */ private void cp(final String[] cmd) throws Exception { if (cmd.length < 3) { throw new Exception("USAGE: cp <src> <dest>"); } final FileObject src = mgr.resolveFile(cwd, cmd[1]); FileObject dest = mgr.resolveFile(cwd, cmd[2]); if (dest.exists() && dest.getType() == FileType.FOLDER) { dest = dest.resolveFile(src.getName().getBaseName()); } dest.copyFrom(src, Selectors.SELECT_ALL); }
From source file:org.apache.hadoop.gateway.topology.file.FileTopologyProviderTest.java
private FileObject createFile(FileObject parent, String name, String resource, long timestamp) throws IOException { FileObject file = parent.resolveFile(name); if (!file.exists()) { file.createFile();/*from ww w . ja v a 2 s.c o m*/ } InputStream input = ClassLoader.getSystemResourceAsStream(resource); OutputStream output = file.getContent().getOutputStream(); IOUtils.copy(input, output); output.flush(); input.close(); output.close(); file.getContent().setLastModifiedTime(timestamp); assertTrue("Failed to create test file " + file.getName().getFriendlyURI(), file.exists()); assertTrue("Failed to populate test file " + file.getName().getFriendlyURI(), file.getContent().getSize() > 0); // ByteArrayOutputStream buffer = new ByteArrayOutputStream(); // IOUtils.copy( file.getContent().getInputStream(), buffer ); // System.out.println( new String( buffer.toString( "UTF-8" ) ) ); return file; }