mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-15 04:55:22 +02:00
Adding the JUnit testcases for archive handler.
This commit is contained in:
parent
8392333302
commit
dc33640fab
4 changed files with 1297 additions and 0 deletions
|
@ -0,0 +1,786 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2007 IBM Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Xuan Chen (IBM) - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.rse.tests.subsystems.files;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import org.eclipse.jface.preference.IPreferenceStore;
|
||||||
|
import org.eclipse.rse.core.IRSESystemType;
|
||||||
|
import org.eclipse.rse.core.model.IHost;
|
||||||
|
import org.eclipse.rse.core.model.ISystemRegistry;
|
||||||
|
import org.eclipse.rse.core.model.SystemStartHere;
|
||||||
|
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||||
|
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
|
||||||
|
import org.eclipse.rse.services.files.IFileService;
|
||||||
|
import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem;
|
||||||
|
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile;
|
||||||
|
import org.eclipse.rse.tests.RSETestsPlugin;
|
||||||
|
import org.eclipse.rse.ui.ISystemPreferencesConstants;
|
||||||
|
import org.eclipse.rse.ui.RSEUIPlugin;
|
||||||
|
|
||||||
|
public class FileServiceArchiveTest extends FileServiceBaseTest {
|
||||||
|
|
||||||
|
protected String ZIP_SOURCE_DIR = "";
|
||||||
|
protected String TMP_DIR_PARENT = "";
|
||||||
|
protected String SYSTEM_TYPE_ID = IRSESystemType.SYSTEMTYPE_LOCAL_ID;
|
||||||
|
protected String SYSTEM_ADDRESS = "";
|
||||||
|
protected String SYSTEM_NAME = "";
|
||||||
|
protected String USER_ID = "";
|
||||||
|
protected String PASSWORD = "";
|
||||||
|
|
||||||
|
public void setUp() {
|
||||||
|
if (!classBeenRunBefore)
|
||||||
|
{
|
||||||
|
IPreferenceStore store = RSEUIPlugin.getDefault().getPreferenceStore();
|
||||||
|
|
||||||
|
//We need to setDefault first in order to set the value of a preference.
|
||||||
|
store.setDefault(ISystemPreferencesConstants.ALERT_SSL, ISystemPreferencesConstants.DEFAULT_ALERT_SSL);
|
||||||
|
store.setDefault(ISystemPreferencesConstants.ALERT_NONSSL, ISystemPreferencesConstants.DEFAULT_ALERT_NON_SSL);
|
||||||
|
store.setValue(ISystemPreferencesConstants.ALERT_SSL, false);
|
||||||
|
store.setValue(ISystemPreferencesConstants.ALERT_NONSSL, false);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
System.out.println("need to sleep");
|
||||||
|
Thread.sleep(500);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
classBeenRunBefore = true;
|
||||||
|
}
|
||||||
|
IHost localHost = getLocalSystemConnection();
|
||||||
|
ISystemRegistry sr = SystemStartHere.getSystemRegistry();
|
||||||
|
ISubSystem[] ss = sr.getServiceSubSystems(localHost, IFileService.class);
|
||||||
|
for (int i=0; i<ss.length; i++) {
|
||||||
|
if (ss[i] instanceof IFileServiceSubSystem) {
|
||||||
|
fss = (IFileServiceSubSystem)ss[i];
|
||||||
|
fs = fss.getFileService();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
File tempDirFile = File.createTempFile("rsetest","dir"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
assertTrue(tempDirFile.delete());
|
||||||
|
assertTrue(tempDirFile.mkdir());
|
||||||
|
tempDirPath = tempDirFile.getAbsolutePath();
|
||||||
|
tempDir = fss.getRemoteFileObject(tempDirPath, mon);
|
||||||
|
} catch(Exception e) {
|
||||||
|
assertTrue("Exception creating temp dir", false); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
ZIP_SOURCE_DIR = "d:\\tmp\\junit_source\\";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void tearDown() {
|
||||||
|
try {
|
||||||
|
fss.delete(tempDir, mon);
|
||||||
|
} catch(SystemMessageException msg) {
|
||||||
|
assertFalse("Exception: "+msg.getLocalizedMessage(), true); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCreateZipFile() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//Create the zip file first.
|
||||||
|
String testName = "dummy.zip";
|
||||||
|
IRemoteFile newArchiveFile = createFileOrFolder(tempDirPath, testName, false);
|
||||||
|
assertTrue(newArchiveFile != null);
|
||||||
|
assertTrue(newArchiveFile.exists());
|
||||||
|
assertTrue(newArchiveFile.canRead());
|
||||||
|
assertTrue(newArchiveFile.canWrite());
|
||||||
|
assertEquals(newArchiveFile.getName(), testName);
|
||||||
|
assertEquals(newArchiveFile.getParentPath(), tempDirPath);
|
||||||
|
|
||||||
|
//fss.resolveFilterString(filterString, monitor)
|
||||||
|
|
||||||
|
//Now, we want to create a text file inside.
|
||||||
|
String childName = "aaa.txt";
|
||||||
|
IRemoteFile file1 = createFileOrFolder(newArchiveFile.getAbsolutePath(), childName, false);
|
||||||
|
assertTrue(file1 != null);
|
||||||
|
|
||||||
|
childName = "bbb.txt";
|
||||||
|
IRemoteFile file2 = createFileOrFolder(newArchiveFile.getAbsolutePath(), childName, false);
|
||||||
|
assertTrue(file2 != null);
|
||||||
|
|
||||||
|
//Create a folder
|
||||||
|
childName = "folder1";
|
||||||
|
IRemoteFile folder1 = createFileOrFolder(newArchiveFile.getAbsolutePath(), childName, true);
|
||||||
|
assertTrue(folder1 != null);
|
||||||
|
|
||||||
|
//Now, check the contents
|
||||||
|
String[] namesToCheck = {"aaa.txt", "bbb.txt", "folder1"};
|
||||||
|
int[] typesToCheck = {TYPE_FILE, TYPE_FILE, TYPE_FOLDER};
|
||||||
|
checkFolderContents(newArchiveFile, namesToCheck, typesToCheck);
|
||||||
|
|
||||||
|
//Now, create some files inside the folder.
|
||||||
|
String secondLevelChildName = "ccc.exe";
|
||||||
|
IRemoteFile levelTwoChild1 = createFileOrFolder(folder1.getAbsolutePath(), secondLevelChildName, false);
|
||||||
|
assertTrue(levelTwoChild1 != null);
|
||||||
|
|
||||||
|
secondLevelChildName = "ddd.bat";
|
||||||
|
IRemoteFile levelTwoChild2 = createFileOrFolder(folder1.getAbsolutePath(), secondLevelChildName, false);
|
||||||
|
assertTrue(levelTwoChild2 != null);
|
||||||
|
|
||||||
|
secondLevelChildName = "another Folder"; //folder with space
|
||||||
|
IRemoteFile levelTwoChild3 = createFileOrFolder(folder1.getAbsolutePath(), secondLevelChildName, true);
|
||||||
|
assertTrue(levelTwoChild3 != null);
|
||||||
|
|
||||||
|
//Now, check the contents
|
||||||
|
String[] namesToCheck1 = {"ccc.exe", "ddd.bat", "another Folder"};
|
||||||
|
int[] typesToCheck1 = {TYPE_FILE, TYPE_FILE, TYPE_FOLDER};
|
||||||
|
checkFolderContents(folder1, namesToCheck1, typesToCheck1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRenameVirtualFile() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//Create the zip file first.
|
||||||
|
String testName = "dummy.zip";
|
||||||
|
IRemoteFile newArchiveFile = createFileOrFolder(tempDirPath, testName, false);
|
||||||
|
|
||||||
|
//Now, we want to create a text file inside.
|
||||||
|
String childName = "aaa.txt";
|
||||||
|
IRemoteFile file1 = createFileOrFolder(newArchiveFile.getAbsolutePath(), childName, false);
|
||||||
|
assertTrue(file1 != null);
|
||||||
|
|
||||||
|
childName = "bbb.txt";
|
||||||
|
IRemoteFile file2 = createFileOrFolder(newArchiveFile.getAbsolutePath(), childName, false);
|
||||||
|
assertTrue(file2 != null);
|
||||||
|
|
||||||
|
//Create a folder
|
||||||
|
childName = "folder1";
|
||||||
|
IRemoteFile folder1 = createFileOrFolder(newArchiveFile.getAbsolutePath(), childName, true);
|
||||||
|
assertTrue(folder1 != null);
|
||||||
|
|
||||||
|
//Now, check the contents
|
||||||
|
String[] levelOneNamesToCheck = {"aaa.txt", "bbb.txt", "folder1"};
|
||||||
|
int[] levalOneTypesToCheck = {TYPE_FILE, TYPE_FILE, TYPE_FOLDER};
|
||||||
|
checkFolderContents(newArchiveFile, levelOneNamesToCheck, levalOneTypesToCheck);
|
||||||
|
|
||||||
|
//Now, create some files inside the folder.
|
||||||
|
String secondLevelChildName = "ccc.exe";
|
||||||
|
IRemoteFile levelTwoChild1 = createFileOrFolder(folder1.getAbsolutePath(), secondLevelChildName, false);
|
||||||
|
assertTrue(levelTwoChild1 != null);
|
||||||
|
|
||||||
|
secondLevelChildName = "ddd.bat";
|
||||||
|
IRemoteFile levelTwoChild2 = createFileOrFolder(folder1.getAbsolutePath(), secondLevelChildName, false);
|
||||||
|
assertTrue(levelTwoChild2 != null);
|
||||||
|
|
||||||
|
secondLevelChildName = "another Folder"; //folder with space
|
||||||
|
IRemoteFile levelTwoChild3 = createFileOrFolder(folder1.getAbsolutePath(), secondLevelChildName, true);
|
||||||
|
assertTrue(levelTwoChild3 != null);
|
||||||
|
|
||||||
|
//Now, check the contents
|
||||||
|
String[] levelTwoNamesToCheck = {"ccc.exe", "ddd.bat", "another Folder"};
|
||||||
|
int[] levalTwoTypesToCheck = {TYPE_FILE, TYPE_FILE, TYPE_FOLDER};
|
||||||
|
checkFolderContents(folder1, levelTwoNamesToCheck, levalTwoTypesToCheck);
|
||||||
|
|
||||||
|
//Now rename one of the text file in the first level:
|
||||||
|
IRemoteFile childToRename = (IRemoteFile)getChildFromFolder(newArchiveFile, "aaa.txt");
|
||||||
|
fss.rename(childToRename, "aaa1.txt", mon);
|
||||||
|
//Now rename one of the folder in the first level
|
||||||
|
childToRename = (IRemoteFile)getChildFromFolder(newArchiveFile, "folder1");
|
||||||
|
fss.rename(childToRename, "folder2", mon);
|
||||||
|
|
||||||
|
//Check the result of rename
|
||||||
|
String[] newLevelOneNamesToCheck = {"aaa1.txt", "bbb.txt", "folder2"};
|
||||||
|
checkFolderContents(newArchiveFile, newLevelOneNamesToCheck, levalOneTypesToCheck);
|
||||||
|
|
||||||
|
//Now rename one of the text file in the second level:
|
||||||
|
IRemoteFile thisFolder = (IRemoteFile)getChildFromFolder(newArchiveFile, "folder2");
|
||||||
|
childToRename = (IRemoteFile)getChildFromFolder(thisFolder, "ddd.bat");
|
||||||
|
fss.rename(childToRename, "ddd1.bat", mon);
|
||||||
|
//Now rename one of the folder in the second level
|
||||||
|
childToRename = (IRemoteFile)getChildFromFolder(thisFolder, "another Folder");
|
||||||
|
fss.rename(childToRename, "some folder$", mon);
|
||||||
|
|
||||||
|
//Check the result of rename
|
||||||
|
String[] newLevelTwoNamesToCheck = {"ccc.exe", "ddd1.bat", "some folder$"};
|
||||||
|
checkFolderContents(thisFolder, newLevelTwoNamesToCheck, levalTwoTypesToCheck);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRenameVirtualFileBigZip() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//copy the zip file first.
|
||||||
|
String sourceFileName = "eclipse-SDK-3.3M6-win32.zip";
|
||||||
|
IRemoteFile sourceZipFile = copySourceFileOrFolder(ZIP_SOURCE_DIR + sourceFileName, sourceFileName, tempDirPath);
|
||||||
|
assertTrue(sourceZipFile != null);
|
||||||
|
|
||||||
|
//Get the "features" directory under "eclipse"
|
||||||
|
String directoryName ="eclipse";
|
||||||
|
IRemoteFile parentDirectory = (IRemoteFile)getChildFromFolder(sourceZipFile, directoryName);
|
||||||
|
assertTrue(parentDirectory != null);
|
||||||
|
directoryName = "features";
|
||||||
|
parentDirectory = (IRemoteFile)getChildFromFolder(parentDirectory, directoryName);
|
||||||
|
//Now, we want to rename a folder (with really long name) inside this "feature" directory.
|
||||||
|
directoryName = "org.eclipse.cvs.source_1.0.0.v20070202-7B79_71CI99g_LDV2411";
|
||||||
|
IRemoteFile directoryToRename = (IRemoteFile)getChildFromFolder(parentDirectory, directoryName);
|
||||||
|
assertTrue(directoryToRename != null);
|
||||||
|
//Now, rename this directory
|
||||||
|
String newDirectoryName = "org.eclipse.cvs.source_1.0.0.v20070202-7B79_71CI99g_LDV2411 aaa#@";
|
||||||
|
fss.rename(directoryToRename, newDirectoryName, mon);
|
||||||
|
|
||||||
|
//check result of this operation
|
||||||
|
String[] namesToCheck = {"org.eclipse.cvs.source_1.0.0.v20070202-7B79_71CI99g_LDV2411 aaa#@",
|
||||||
|
"org.eclipse.cvs_1.0.0.v20070202-7B79_71CI99g_LDV2411",
|
||||||
|
"org.eclipse.jdt.source_3.3.0.v20070319-1800-7n7dEAWEgDfeRYHuyAaFTR",
|
||||||
|
"org.eclipse.jdt_3.3.0.v20070319-1800-7n7dEAWEgDfeRYHuyAaFTR",
|
||||||
|
"org.eclipse.pde.source_3.3.0.v20061114-0800-7M7M-6NUEF6EbRV6EWGC",
|
||||||
|
"org.eclipse.pde_3.3.0.v20061114-0800-7M7M-6NUEF6EbRV6EWGC",
|
||||||
|
"org.eclipse.platform.source_3.3.0.v20070316b-_-9MEhFxiXZ2gosKM6M-3_Hu9MqL",
|
||||||
|
"org.eclipse.platform_3.3.0.v20070316b-_-9MEhFxiXZ2gosKM6M-3_Hu9MqL",
|
||||||
|
"org.eclipse.rcp.source_3.3.0.v20070316b-8l8VCEYXUPdNkSgt8LpKG",
|
||||||
|
"org.eclipse.rcp_3.3.0.v20070316b-8l8VCEYXUPdNkSgt8LpKG",
|
||||||
|
"org.eclipse.sdk_3.3.0.v20070319-7L7J-4DjllPLcCcxrZDgaddnelet"};
|
||||||
|
int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER,TYPE_FOLDER,TYPE_FOLDER,TYPE_FOLDER,
|
||||||
|
TYPE_FOLDER, TYPE_FOLDER,TYPE_FOLDER,TYPE_FOLDER,TYPE_FOLDER, TYPE_FOLDER};
|
||||||
|
checkFolderContents(parentDirectory, namesToCheck, typesToCheck);
|
||||||
|
|
||||||
|
//Now, rename some files and folder inside the renamed folder.
|
||||||
|
directoryToRename = (IRemoteFile)getChildFromFolder(parentDirectory, newDirectoryName);
|
||||||
|
assertTrue(directoryToRename != null);
|
||||||
|
|
||||||
|
String fileToRenameName = "eclipse_update_120.jpg";
|
||||||
|
IRemoteFile levelThreeFileToRename = (IRemoteFile)getChildFromFolder(directoryToRename, fileToRenameName);
|
||||||
|
assertTrue(levelThreeFileToRename != null);
|
||||||
|
|
||||||
|
directoryName = "META-INF";
|
||||||
|
IRemoteFile levelThreeDirectoryToRename = (IRemoteFile)getChildFromFolder(directoryToRename, directoryName);
|
||||||
|
assertTrue(levelThreeDirectoryToRename != null);
|
||||||
|
|
||||||
|
//Rename file first
|
||||||
|
String newFileName = "eclipse_update_120aaa.jpg";
|
||||||
|
fss.rename(levelThreeFileToRename, newFileName, mon);
|
||||||
|
|
||||||
|
newDirectoryName = "META!@#$%^&*INF";
|
||||||
|
fss.rename(levelThreeDirectoryToRename, newDirectoryName, mon);
|
||||||
|
|
||||||
|
//check the result
|
||||||
|
String[] level3NamesToCheck = {"META!@#$%^&*INF",
|
||||||
|
"eclipse_update_120aaa.jpg",
|
||||||
|
"epl-v10.html",
|
||||||
|
"feature.properties",
|
||||||
|
"feature.xml",
|
||||||
|
"license.html"};
|
||||||
|
int[] level3TypesToCheck = {TYPE_FOLDER, TYPE_FILE, TYPE_FILE, TYPE_FILE, TYPE_FILE, TYPE_FILE};
|
||||||
|
checkFolderContents(directoryToRename, level3NamesToCheck, level3TypesToCheck);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testMoveVirtualFile() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//copy the zip file first.
|
||||||
|
String sourceFileName = "closedBefore.zip";
|
||||||
|
IRemoteFile sourceZipFile = copySourceFileOrFolder(ZIP_SOURCE_DIR + sourceFileName, sourceFileName, tempDirPath);
|
||||||
|
assertTrue(sourceZipFile != null);
|
||||||
|
|
||||||
|
//then, create a folder inside the tempDir
|
||||||
|
//then, create a folder inside the tempDir
|
||||||
|
String folderName = "folder1";
|
||||||
|
IRemoteFile folder1 = createFileOrFolder(tempDirPath, folderName, true);
|
||||||
|
assertTrue(folder1 != null);
|
||||||
|
|
||||||
|
//Now, copy one of the folder from the zip file into folder1
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Object[] children = fss.resolveFilterString(sourceZipFile, null, mon);
|
||||||
|
IRemoteFile originalVirtualFolder = (IRemoteFile)children[0];
|
||||||
|
String movedFolderName = originalVirtualFolder.getName();
|
||||||
|
fss.move(originalVirtualFolder, folder1, movedFolderName, mon);
|
||||||
|
|
||||||
|
|
||||||
|
Object movedVirtualFolder = getChildFromFolder(folder1, movedFolderName);
|
||||||
|
|
||||||
|
assertTrue(movedVirtualFolder != null);
|
||||||
|
|
||||||
|
String[] contents = {"Team", "TypeFilters", "xuanchentp", ".compatibility", ".project"};
|
||||||
|
int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE};
|
||||||
|
checkFolderContents((IRemoteFile)movedVirtualFolder, contents, typesToCheck);
|
||||||
|
|
||||||
|
//Now, make sure the moved virtual folder is gone from its original zip file
|
||||||
|
children = fss.resolveFilterString(sourceZipFile, null, mon);
|
||||||
|
assertTrue(children.length == 0);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("Problem encountered: " + e.getStackTrace().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testMoveVirtualFileLevelTwo() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//copy the zip file first.
|
||||||
|
String sourceFileName = "closedBefore.zip";
|
||||||
|
IRemoteFile sourceZipFile = copySourceFileOrFolder(ZIP_SOURCE_DIR + sourceFileName, sourceFileName, tempDirPath);
|
||||||
|
assertTrue(sourceZipFile != null);
|
||||||
|
|
||||||
|
//then, create a folder inside the tempDir
|
||||||
|
//then, create a folder inside the tempDir
|
||||||
|
String folderName = "folder1";
|
||||||
|
IRemoteFile folder1 = createFileOrFolder(tempDirPath, folderName, true);
|
||||||
|
assertTrue(folder1 != null);
|
||||||
|
|
||||||
|
//Now, move one of the level two folder from the zip file into folder1
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Now, copy one of the level two folder from the zip file into folder1
|
||||||
|
Object[] children = fss.resolveFilterString(sourceZipFile, null, mon); //level one chidren
|
||||||
|
Object[] levelTwoChildren = fss.resolveFilterString(children[0], null, mon);
|
||||||
|
IRemoteFile originalVirtualFolder = (IRemoteFile)levelTwoChildren[0];
|
||||||
|
String movedFolderName = originalVirtualFolder.getName();
|
||||||
|
|
||||||
|
//copy this level two childer into folder1
|
||||||
|
fss.move(originalVirtualFolder, folder1, originalVirtualFolder.getName(), mon);
|
||||||
|
|
||||||
|
Object movedVirtualFolder = getChildFromFolder(folder1, movedFolderName);
|
||||||
|
|
||||||
|
assertTrue(movedVirtualFolder != null);
|
||||||
|
|
||||||
|
String[] contents = {"Connections", "Filters", "profile.xmi"};
|
||||||
|
int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE};
|
||||||
|
checkFolderContents((IRemoteFile)movedVirtualFolder, contents, typesToCheck);
|
||||||
|
|
||||||
|
//Now, make sure the moved virtual folder is gone from its original zip file
|
||||||
|
children = fss.resolveFilterString(sourceZipFile, null, mon);
|
||||||
|
Object result = getChildFromFolder((IRemoteFile)children[0], movedFolderName);
|
||||||
|
assertTrue(result == null); //we should not be able to find it.
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("Problem encountered: " + e.getStackTrace().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testMoveToArchiveFile() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//copy the zip file first.
|
||||||
|
String zipTargetFileName = "closedBefore.zip";
|
||||||
|
|
||||||
|
IRemoteFile targetZipFile = copySourceFileOrFolder(ZIP_SOURCE_DIR + zipTargetFileName, zipTargetFileName, tempDirPath);
|
||||||
|
assertTrue(targetZipFile != null);
|
||||||
|
|
||||||
|
//Now, copy the source folder.
|
||||||
|
String sourceFolderName = "folderToCopy";
|
||||||
|
IRemoteFile sourceFolder = copySourceFileOrFolder(ZIP_SOURCE_DIR + sourceFolderName, sourceFolderName, tempDirPath);
|
||||||
|
assertTrue(sourceFolder != null);
|
||||||
|
|
||||||
|
//Now, copy one of the folder from the sourceFolder into copiedTargetZipFile
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Object[] children = fss.resolveFilterString(sourceZipFile, null, mon);
|
||||||
|
fss.move(sourceFolder, targetZipFile, sourceFolder.getName(), mon);
|
||||||
|
//IRemoteFile copiedVirtualFolder = fss.getRemoteFileObject(folderAbsName+"\\" + ((IRemoteFile)children[0]).getName(), mon);
|
||||||
|
|
||||||
|
Object theMovedChild = getChildFromFolder(targetZipFile, sourceFolderName);
|
||||||
|
|
||||||
|
assertTrue(theMovedChild != null);
|
||||||
|
|
||||||
|
//Also make sure the copied child has the right contents.
|
||||||
|
String[] childrenToCheck = {"aaaaaaaa", "aaaab", "epdcdump01.hex12a", "RSE-SDK-2.0RC1.zip"};
|
||||||
|
|
||||||
|
int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE};
|
||||||
|
checkFolderContents((IRemoteFile)theMovedChild, childrenToCheck, typesToCheck);
|
||||||
|
|
||||||
|
//make sure the original folder is gone.
|
||||||
|
//make sure the original folder is gone.
|
||||||
|
IRemoteFile tempDirRemoteFile = fss.getRemoteFileObject(tempDirPath, mon);
|
||||||
|
Object originalSource = getChildFromFolder(tempDirRemoteFile, sourceFolderName);
|
||||||
|
assertFalse(originalSource != null);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("Problem encountered: " + e.getStackTrace().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testMoveToVirtualFileLevelOne() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//copy the zip file first.
|
||||||
|
String zipTargetFileName = "closedBefore.zip";
|
||||||
|
|
||||||
|
IRemoteFile targetZipFile = copySourceFileOrFolder(ZIP_SOURCE_DIR + zipTargetFileName, zipTargetFileName, tempDirPath);
|
||||||
|
assertTrue(targetZipFile != null);
|
||||||
|
|
||||||
|
//Now, copy the source folder.
|
||||||
|
String sourceFolderName = "folderToCopy";
|
||||||
|
IRemoteFile sourceFolder = copySourceFileOrFolder(ZIP_SOURCE_DIR + sourceFolderName, sourceFolderName, tempDirPath);
|
||||||
|
assertTrue(sourceFolder != null);
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Now, copy one of the folder from the sourceFolder into a first level virtual file in targetZipFile
|
||||||
|
//Get one of its first level children, and copy the folder to there.
|
||||||
|
Object[] childrenOfTargetZipFile = fss.resolveFilterString(targetZipFile, null, mon);
|
||||||
|
|
||||||
|
//Object[] children = fss.resolveFilterString(sourceZipFile, null, mon);
|
||||||
|
fss.move(sourceFolder, ((IRemoteFile)childrenOfTargetZipFile[0]), sourceFolderName, mon);
|
||||||
|
|
||||||
|
Object theMovedChild = getChildFromFolder(((IRemoteFile)childrenOfTargetZipFile[0]), sourceFolderName);
|
||||||
|
|
||||||
|
assertTrue(theMovedChild != null);
|
||||||
|
|
||||||
|
//Also make sure the copied child has the right contents.
|
||||||
|
String[] childrenToCheck = {"aaaaaaaa", "aaaab", "epdcdump01.hex12a", "RSE-SDK-2.0RC1.zip"};
|
||||||
|
int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE};
|
||||||
|
checkFolderContents((IRemoteFile)theMovedChild, childrenToCheck, typesToCheck);
|
||||||
|
|
||||||
|
//make sure the original folder is gone.
|
||||||
|
IRemoteFile tempDirRemoteFile = fss.getRemoteFileObject(tempDirPath, mon);
|
||||||
|
Object originalSource = getChildFromFolder(tempDirRemoteFile, sourceFolderName);
|
||||||
|
assertFalse(originalSource != null);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("Problem encountered: " + e.getStackTrace().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testMoveToVirtualFileLevelTwo() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//copy the zip file first.
|
||||||
|
String zipTargetFileName = "closedBefore.zip";
|
||||||
|
|
||||||
|
IRemoteFile targetZipFile = copySourceFileOrFolder(ZIP_SOURCE_DIR + zipTargetFileName, zipTargetFileName, tempDirPath);
|
||||||
|
assertTrue(targetZipFile != null);
|
||||||
|
|
||||||
|
//Now, copy the source folder.
|
||||||
|
String sourceFolderName = "folderToCopy";
|
||||||
|
IRemoteFile sourceFolder = copySourceFileOrFolder(ZIP_SOURCE_DIR + sourceFolderName, sourceFolderName, tempDirPath);
|
||||||
|
assertTrue(sourceFolder != null);
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Get one of its second level children, and copy the folder to there.
|
||||||
|
Object[] childrenOfTargetZipFile = fss.resolveFilterString(targetZipFile, null, mon);
|
||||||
|
Object[] childrenOfTargetZipFileFirstLevel = fss.resolveFilterString(childrenOfTargetZipFile[0], null, mon);
|
||||||
|
|
||||||
|
//Object[] children = fss.resolveFilterString(sourceZipFile, null, mon);
|
||||||
|
fss.move(sourceFolder, ((IRemoteFile)childrenOfTargetZipFileFirstLevel[1]), sourceFolder.getName(), mon);
|
||||||
|
|
||||||
|
Object theMovedChild = getChildFromFolder((IRemoteFile)childrenOfTargetZipFileFirstLevel[1], sourceFolderName);
|
||||||
|
|
||||||
|
assertTrue(theMovedChild != null);
|
||||||
|
|
||||||
|
//Also make sure the copied child has the right contents.
|
||||||
|
String[] childrenToCheck = {"aaaaaaaa", "aaaab", "epdcdump01.hex12a", "RSE-SDK-2.0RC1.zip"};
|
||||||
|
int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE};
|
||||||
|
checkFolderContents((IRemoteFile)theMovedChild, childrenToCheck, typesToCheck);
|
||||||
|
|
||||||
|
//make sure the original folder is gone.
|
||||||
|
IRemoteFile tempDirRemoteFile = fss.getRemoteFileObject(tempDirPath, mon);
|
||||||
|
Object originalSource = getChildFromFolder(tempDirRemoteFile, sourceFolderName);
|
||||||
|
assertFalse(originalSource != null);
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("Problem encountered: " + e.getStackTrace().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void testCopyVirtualFile() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//copy the zip file first.
|
||||||
|
String sourceFileName = "closedBefore.zip";
|
||||||
|
IRemoteFile sourceZipFile = copySourceFileOrFolder(ZIP_SOURCE_DIR + sourceFileName, sourceFileName, tempDirPath);
|
||||||
|
assertTrue(sourceZipFile != null);
|
||||||
|
|
||||||
|
//then, create a folder inside the tempDir
|
||||||
|
//then, create a folder inside the tempDir
|
||||||
|
String folderName = "folder1";
|
||||||
|
IRemoteFile folder1 = createFileOrFolder(tempDirPath, folderName, true);
|
||||||
|
assertTrue(folder1 != null);
|
||||||
|
|
||||||
|
//Now, copy one of the folder from the zip file into folder1
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Object[] children = fss.resolveFilterString(sourceZipFile, null, mon);
|
||||||
|
fss.copy(((IRemoteFile)children[0]), folder1, ((IRemoteFile)children[0]).getName(), mon);
|
||||||
|
|
||||||
|
Object copiedVirtualFolder = getChildFromFolder(folder1, (((IRemoteFile)children[0]).getName()));
|
||||||
|
|
||||||
|
assertTrue(copiedVirtualFolder != null);
|
||||||
|
|
||||||
|
String[] contents = {"Team", "TypeFilters", "xuanchentp", ".compatibility", ".project"};
|
||||||
|
int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE};
|
||||||
|
checkFolderContents((IRemoteFile)copiedVirtualFolder, contents, typesToCheck);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("Problem encountered: " + e.getStackTrace().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCopyVirtualFileLevelTwo() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//copy the zip file first.
|
||||||
|
String sourceFileName = "closedBefore.zip";
|
||||||
|
IRemoteFile sourceZipFile = copySourceFileOrFolder(ZIP_SOURCE_DIR + sourceFileName, sourceFileName, tempDirPath);
|
||||||
|
assertTrue(sourceZipFile != null);
|
||||||
|
|
||||||
|
//then, create a folder inside the tempDir
|
||||||
|
String folderName = "folder1";
|
||||||
|
IRemoteFile folder1 = createFileOrFolder(tempDirPath, folderName, true);
|
||||||
|
assertTrue(folder1 != null);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Now, copy one of the level two folder from the zip file into folder1
|
||||||
|
Object[] children = fss.resolveFilterString(sourceZipFile, null, mon); //level one chidren
|
||||||
|
Object[] levelTwoChildren = fss.resolveFilterString(children[0], null, mon);
|
||||||
|
//copy this level two childer into folder1
|
||||||
|
fss.copy(((IRemoteFile)levelTwoChildren[0]), folder1, ((IRemoteFile)levelTwoChildren[0]).getName(), mon);
|
||||||
|
|
||||||
|
Object copiedVirtualFolder = getChildFromFolder(folder1, (((IRemoteFile)levelTwoChildren[0]).getName()));
|
||||||
|
|
||||||
|
assertTrue(copiedVirtualFolder != null);
|
||||||
|
|
||||||
|
String[] contents = {"Connections", "Filters", "profile.xmi"};
|
||||||
|
int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE};
|
||||||
|
checkFolderContents((IRemoteFile)copiedVirtualFolder, contents, typesToCheck);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("Problem encountered: " + e.getStackTrace().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void testCopyToArchiveFile() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//copy the zip file first.
|
||||||
|
String zipTargetFileName = "closedBefore.zip";
|
||||||
|
|
||||||
|
IRemoteFile targetZipFile = copySourceFileOrFolder(ZIP_SOURCE_DIR + zipTargetFileName, zipTargetFileName, tempDirPath);
|
||||||
|
assertTrue(targetZipFile != null);
|
||||||
|
|
||||||
|
//Now, copy the source folder.
|
||||||
|
String sourceFolderName = "folderToCopy";
|
||||||
|
IRemoteFile sourceFolder = copySourceFileOrFolder(ZIP_SOURCE_DIR + sourceFolderName, sourceFolderName, tempDirPath);
|
||||||
|
assertTrue(sourceFolder != null);
|
||||||
|
|
||||||
|
//Now, copy one of the folder from the sourceFolder into copiedTargetZipFile
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Object[] children = fss.resolveFilterString(sourceZipFile, null, mon);
|
||||||
|
fss.copy(sourceFolder, targetZipFile, sourceFolder.getName(), mon);
|
||||||
|
//IRemoteFile copiedVirtualFolder = fss.getRemoteFileObject(folderAbsName+"\\" + ((IRemoteFile)children[0]).getName(), mon);
|
||||||
|
|
||||||
|
Object theCopiedChild = getChildFromFolder(targetZipFile, sourceFolderName);
|
||||||
|
|
||||||
|
assertTrue(theCopiedChild != null);
|
||||||
|
|
||||||
|
//Also make sure the copied child has the right contents.
|
||||||
|
String[] childrenToCheck = {"aaaaaaaa", "aaaab", "epdcdump01.hex12a", "RSE-SDK-2.0RC1.zip"};
|
||||||
|
|
||||||
|
int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE};
|
||||||
|
checkFolderContents((IRemoteFile)theCopiedChild, childrenToCheck, typesToCheck);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("Problem encountered: " + e.getStackTrace().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void testCopyToVirtualFileLevelOne() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//copy the zip file first.
|
||||||
|
String zipTargetFileName = "closedBefore.zip";
|
||||||
|
|
||||||
|
IRemoteFile targetZipFile = copySourceFileOrFolder(ZIP_SOURCE_DIR + zipTargetFileName, zipTargetFileName, tempDirPath);
|
||||||
|
assertTrue(targetZipFile != null);
|
||||||
|
|
||||||
|
//Now, copy the source folder.
|
||||||
|
String sourceFolderName = "folderToCopy";
|
||||||
|
IRemoteFile sourceFolder = copySourceFileOrFolder(ZIP_SOURCE_DIR + sourceFolderName, sourceFolderName, tempDirPath);
|
||||||
|
assertTrue(sourceFolder != null);
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Now, copy one of the folder from the sourceFolder into a first level virtual file in targetZipFile
|
||||||
|
//Get one of its first level children, and copy the folder to there.
|
||||||
|
Object[] childrenOfTargetZipFile = fss.resolveFilterString(targetZipFile, null, mon);
|
||||||
|
|
||||||
|
//Object[] children = fss.resolveFilterString(sourceZipFile, null, mon);
|
||||||
|
fss.copy(sourceFolder, ((IRemoteFile)childrenOfTargetZipFile[0]), sourceFolder.getName(), mon);
|
||||||
|
|
||||||
|
Object theCopiedChild = getChildFromFolder(((IRemoteFile)childrenOfTargetZipFile[0]), sourceFolderName);
|
||||||
|
|
||||||
|
assertTrue(theCopiedChild != null);
|
||||||
|
|
||||||
|
//Also make sure the copied child has the right contents.
|
||||||
|
String[] childrenToCheck = {"aaaaaaaa", "aaaab", "epdcdump01.hex12a", "RSE-SDK-2.0RC1.zip"};
|
||||||
|
int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE};
|
||||||
|
checkFolderContents((IRemoteFile)theCopiedChild, childrenToCheck, typesToCheck);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("Problem encountered: " + e.getStackTrace().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void testCopyToVirtualFileLevelTwo() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//copy the zip file first.
|
||||||
|
String zipTargetFileName = "closedBefore.zip";
|
||||||
|
|
||||||
|
IRemoteFile targetZipFile = copySourceFileOrFolder(ZIP_SOURCE_DIR + zipTargetFileName, zipTargetFileName, tempDirPath);
|
||||||
|
assertTrue(targetZipFile != null);
|
||||||
|
|
||||||
|
//Now, copy the source folder.
|
||||||
|
String sourceFolderName = "folderToCopy";
|
||||||
|
IRemoteFile sourceFolder = copySourceFileOrFolder(ZIP_SOURCE_DIR + sourceFolderName, sourceFolderName, tempDirPath);
|
||||||
|
assertTrue(sourceFolder != null);
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Get one of its second level children, and copy the folder to there.
|
||||||
|
Object[] childrenOfTargetZipFile = fss.resolveFilterString(targetZipFile, null, mon);
|
||||||
|
Object[] childrenOfTargetZipFileFirstLevel = fss.resolveFilterString(childrenOfTargetZipFile[0], null, mon);
|
||||||
|
|
||||||
|
//Object[] children = fss.resolveFilterString(sourceZipFile, null, mon);
|
||||||
|
fss.copy(sourceFolder, ((IRemoteFile)childrenOfTargetZipFileFirstLevel[1]), sourceFolder.getName(), mon);
|
||||||
|
|
||||||
|
Object theCopiedChild = getChildFromFolder((IRemoteFile)childrenOfTargetZipFileFirstLevel[1], sourceFolderName);
|
||||||
|
|
||||||
|
assertTrue(theCopiedChild != null);
|
||||||
|
|
||||||
|
//Also make sure the copied child has the right contents.
|
||||||
|
String[] childrenToCheck = {"aaaaaaaa", "aaaab", "epdcdump01.hex12a", "RSE-SDK-2.0RC1.zip"};
|
||||||
|
int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER, TYPE_FILE, TYPE_FILE};
|
||||||
|
checkFolderContents((IRemoteFile)theCopiedChild, childrenToCheck, typesToCheck);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("Problem encountered: " + e.getStackTrace().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testDeleteVirtualFileBigZip() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//copy the zip file first.
|
||||||
|
String sourceFileName = "eclipse-SDK-3.3M6-win32.zip";
|
||||||
|
IRemoteFile sourceZipFile = copySourceFileOrFolder(ZIP_SOURCE_DIR + sourceFileName, sourceFileName, tempDirPath);
|
||||||
|
assertTrue(sourceZipFile != null);
|
||||||
|
|
||||||
|
//Get the "features" directory under "eclipse"
|
||||||
|
String directoryName ="eclipse";
|
||||||
|
IRemoteFile parentDirectory = (IRemoteFile)getChildFromFolder(sourceZipFile, directoryName);
|
||||||
|
assertTrue(parentDirectory != null);
|
||||||
|
directoryName = "features";
|
||||||
|
parentDirectory = (IRemoteFile)getChildFromFolder(parentDirectory, directoryName);
|
||||||
|
//Now, we want to delete a folder (with really long name) inside this "feature" directory.
|
||||||
|
directoryName = "org.eclipse.platform.source_3.3.0.v20070316b-_-9MEhFxiXZ2gosKM6M-3_Hu9MqL";
|
||||||
|
IRemoteFile directoryToDelete = (IRemoteFile)getChildFromFolder(parentDirectory, directoryName);
|
||||||
|
assertTrue(directoryToDelete != null);
|
||||||
|
//Now, delete this directory
|
||||||
|
fss.delete(directoryToDelete, mon);
|
||||||
|
directoryToDelete = (IRemoteFile)getChildFromFolder(parentDirectory, directoryName);
|
||||||
|
assertTrue(directoryToDelete == null);
|
||||||
|
|
||||||
|
//check result of this operation
|
||||||
|
String[] namesToCheck = {"org.eclipse.cvs.source_1.0.0.v20070202-7B79_71CI99g_LDV2411",
|
||||||
|
"org.eclipse.cvs_1.0.0.v20070202-7B79_71CI99g_LDV2411",
|
||||||
|
"org.eclipse.jdt.source_3.3.0.v20070319-1800-7n7dEAWEgDfeRYHuyAaFTR",
|
||||||
|
"org.eclipse.jdt_3.3.0.v20070319-1800-7n7dEAWEgDfeRYHuyAaFTR",
|
||||||
|
"org.eclipse.pde.source_3.3.0.v20061114-0800-7M7M-6NUEF6EbRV6EWGC",
|
||||||
|
"org.eclipse.pde_3.3.0.v20061114-0800-7M7M-6NUEF6EbRV6EWGC",
|
||||||
|
"org.eclipse.platform_3.3.0.v20070316b-_-9MEhFxiXZ2gosKM6M-3_Hu9MqL",
|
||||||
|
"org.eclipse.rcp.source_3.3.0.v20070316b-8l8VCEYXUPdNkSgt8LpKG",
|
||||||
|
"org.eclipse.rcp_3.3.0.v20070316b-8l8VCEYXUPdNkSgt8LpKG",
|
||||||
|
"org.eclipse.sdk_3.3.0.v20070319-7L7J-4DjllPLcCcxrZDgaddnelet"};
|
||||||
|
int[] typesToCheck = {TYPE_FOLDER, TYPE_FOLDER,TYPE_FOLDER,TYPE_FOLDER,TYPE_FOLDER,
|
||||||
|
TYPE_FOLDER, TYPE_FOLDER,TYPE_FOLDER,TYPE_FOLDER,TYPE_FOLDER};
|
||||||
|
checkFolderContents(parentDirectory, namesToCheck, typesToCheck);
|
||||||
|
|
||||||
|
//Now, delete some files and folder inside the a virtual folder.
|
||||||
|
parentDirectory = (IRemoteFile)getChildFromFolder(parentDirectory, "org.eclipse.rcp_3.3.0.v20070316b-8l8VCEYXUPdNkSgt8LpKG");
|
||||||
|
assertTrue(parentDirectory != null);
|
||||||
|
|
||||||
|
String fileToDelete = "eclipse_update_120.jpg";
|
||||||
|
IRemoteFile levelThreeFileToDelete = (IRemoteFile)getChildFromFolder(parentDirectory, fileToDelete);
|
||||||
|
assertTrue(levelThreeFileToDelete != null);
|
||||||
|
|
||||||
|
String directoryNameToDelete = "META-INF";
|
||||||
|
IRemoteFile levelThreeDirectoryToDelete = (IRemoteFile)getChildFromFolder(parentDirectory, directoryNameToDelete);
|
||||||
|
assertTrue(levelThreeDirectoryToDelete != null);
|
||||||
|
|
||||||
|
//delete file first
|
||||||
|
fss.delete(levelThreeFileToDelete, mon);
|
||||||
|
|
||||||
|
fss.delete(levelThreeDirectoryToDelete, mon);
|
||||||
|
|
||||||
|
//check the result
|
||||||
|
String[] level3NamesToCheck = {"epl-v10.html",
|
||||||
|
"feature.properties",
|
||||||
|
"feature.xml",
|
||||||
|
"license.html"};
|
||||||
|
int[] level3TypesToCheck = {TYPE_FILE, TYPE_FILE, TYPE_FILE, TYPE_FILE};
|
||||||
|
checkFolderContents(parentDirectory, level3NamesToCheck, level3TypesToCheck);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,185 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2007 IBM Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Xuan Chen (IBM) - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.rse.tests.subsystems.files;
|
||||||
|
|
||||||
|
import org.eclipse.jface.preference.IPreferenceStore;
|
||||||
|
import org.eclipse.rse.core.IRSESystemType;
|
||||||
|
import org.eclipse.rse.core.model.IHost;
|
||||||
|
import org.eclipse.rse.core.model.ISystemRegistry;
|
||||||
|
import org.eclipse.rse.core.model.SystemStartHere;
|
||||||
|
import org.eclipse.rse.core.subsystems.IConnectorService;
|
||||||
|
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||||
|
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
|
||||||
|
import org.eclipse.rse.services.files.IFileService;
|
||||||
|
import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem;
|
||||||
|
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile;
|
||||||
|
import org.eclipse.rse.tests.RSETestsPlugin;
|
||||||
|
import org.eclipse.rse.ui.ISystemPreferencesConstants;
|
||||||
|
import org.eclipse.rse.ui.RSEUIPlugin;
|
||||||
|
|
||||||
|
public class FileServiceArchiveTestDStore extends FileServiceArchiveTest {
|
||||||
|
|
||||||
|
/*
|
||||||
|
public static junit.framework.Test suite() {
|
||||||
|
TestSuite suite = new TestSuite("FileServiceArchiveTestDStore");
|
||||||
|
suite.addTest(new FileServiceArchiveTestDStore("testMoveToVirtualFileLevelOne"));
|
||||||
|
return suite;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
public void setUp() {
|
||||||
|
//We need to delay if it is first case run after a workspace startup
|
||||||
|
SYSTEM_TYPE_ID = IRSESystemType.SYSTEMTYPE_LINUX_ID;
|
||||||
|
TMP_DIR_PARENT = "/home2/xuanchen/test/";
|
||||||
|
ZIP_SOURCE_DIR = "/home2/xuanchen/test/junit_source/";
|
||||||
|
SYSTEM_ADDRESS = "SLES8RM";
|
||||||
|
SYSTEM_NAME = "sles8rm_ds";
|
||||||
|
USER_ID = "xuanchen";
|
||||||
|
PASSWORD = "xxxxxx";
|
||||||
|
|
||||||
|
if (!classBeenRunBefore)
|
||||||
|
{
|
||||||
|
IPreferenceStore store = RSEUIPlugin.getDefault().getPreferenceStore();
|
||||||
|
|
||||||
|
//We need to setDefault first in order to set the value of a preference.
|
||||||
|
store.setDefault(ISystemPreferencesConstants.ALERT_SSL, ISystemPreferencesConstants.DEFAULT_ALERT_SSL);
|
||||||
|
store.setDefault(ISystemPreferencesConstants.ALERT_NONSSL, ISystemPreferencesConstants.DEFAULT_ALERT_NON_SSL);
|
||||||
|
store.setValue(ISystemPreferencesConstants.ALERT_SSL, false);
|
||||||
|
store.setValue(ISystemPreferencesConstants.ALERT_NONSSL, false);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
System.out.println("need to sleep");
|
||||||
|
Thread.sleep(500);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
classBeenRunBefore = true;
|
||||||
|
}
|
||||||
|
IHost dstoreHost = getRemoteSystemConnection(SYSTEM_TYPE_ID, SYSTEM_ADDRESS, SYSTEM_NAME, USER_ID, PASSWORD);
|
||||||
|
assertTrue(dstoreHost != null);
|
||||||
|
ISystemRegistry sr = SystemStartHere.getSystemRegistry();
|
||||||
|
ISubSystem[] ss = sr.getServiceSubSystems(dstoreHost, IFileService.class);
|
||||||
|
for (int i=0; i<ss.length; i++) {
|
||||||
|
if (ss[i] instanceof IFileServiceSubSystem) {
|
||||||
|
fss = (IFileServiceSubSystem)ss[i];
|
||||||
|
fs = fss.getFileService();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IConnectorService connectionService = fss.getConnectorService();
|
||||||
|
//If you want to change the daemon to another port, uncomment following statements
|
||||||
|
/*
|
||||||
|
IServerLauncherProperties properties = connectionService.getRemoteServerLauncherProperties();
|
||||||
|
|
||||||
|
if (properties instanceof IRemoteServerLauncher)
|
||||||
|
{
|
||||||
|
IRemoteServerLauncher sl = (IRemoteServerLauncher)properties;
|
||||||
|
sl.setDaemonPort(4075);
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
//If you want to connect to a running server, uncomment the following statements
|
||||||
|
/*
|
||||||
|
IServerLauncherProperties properties = connectionService.getRemoteServerLauncherProperties();
|
||||||
|
|
||||||
|
if (properties instanceof IRemoteServerLauncher)
|
||||||
|
{
|
||||||
|
IRemoteServerLauncher sl = (IRemoteServerLauncher)properties;
|
||||||
|
sl.setServerLaunchType(ServerLaunchType.get(ServerLaunchType.RUNNING));
|
||||||
|
fss.getSubSystemConfiguration().updateSubSystem(fss, false, "xuanchen", true, 4033);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
connectionService.connect(mon);
|
||||||
|
tempDirPath = TMP_DIR_PARENT;
|
||||||
|
long currentTime = System.currentTimeMillis();
|
||||||
|
tempDir = createFileOrFolder(tempDirPath, "rsetest" + currentTime, true);
|
||||||
|
assertTrue(tempDir != null);
|
||||||
|
assertTrue(tempDir.exists());
|
||||||
|
assertTrue(tempDir.canWrite());
|
||||||
|
assertTrue(tempDir.isDirectory());
|
||||||
|
tempDirPath = tempDir.getAbsolutePath();
|
||||||
|
|
||||||
|
} catch(Exception e) {
|
||||||
|
assertTrue("Exception creating temp dir " + e.getStackTrace().toString(), false); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void tearDown() {
|
||||||
|
try {
|
||||||
|
fss.delete(tempDir, mon);
|
||||||
|
} catch(SystemMessageException msg) {
|
||||||
|
assertFalse("Exception: "+msg.getLocalizedMessage(), true); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCreateTarFile() throws SystemMessageException {
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("FileServiceTest.testCreateFile")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
//Create the zip file first.
|
||||||
|
String testName = "dummy.tar";
|
||||||
|
IRemoteFile newArchiveFile = createFileOrFolder(tempDirPath, testName, false);
|
||||||
|
assertTrue(newArchiveFile != null);
|
||||||
|
assertTrue(newArchiveFile.exists());
|
||||||
|
assertTrue(newArchiveFile.canRead());
|
||||||
|
assertTrue(newArchiveFile.canWrite());
|
||||||
|
assertEquals(newArchiveFile.getName(), testName);
|
||||||
|
assertEquals(newArchiveFile.getParentPath(), tempDirPath);
|
||||||
|
|
||||||
|
//fss.resolveFilterString(filterString, monitor)
|
||||||
|
|
||||||
|
//Now, we want to create a text file inside.
|
||||||
|
String childName = "aaa.txt";
|
||||||
|
IRemoteFile file1 = createFileOrFolder(newArchiveFile.getAbsolutePath(), childName, false);
|
||||||
|
assertTrue(file1 != null);
|
||||||
|
|
||||||
|
childName = "bbb.txt";
|
||||||
|
IRemoteFile file2 = createFileOrFolder(newArchiveFile.getAbsolutePath(), childName, false);
|
||||||
|
assertTrue(file2 != null);
|
||||||
|
|
||||||
|
//Create a folder
|
||||||
|
childName = "folder1";
|
||||||
|
IRemoteFile folder1 = createFileOrFolder(newArchiveFile.getAbsolutePath(), childName, true);
|
||||||
|
assertTrue(folder1 != null);
|
||||||
|
|
||||||
|
//Now, check the contents
|
||||||
|
String[] namesToCheck = {"aaa.txt", "bbb.txt", "folder1"};
|
||||||
|
int[] typesToCheck = {TYPE_FILE, TYPE_FILE, TYPE_FOLDER};
|
||||||
|
checkFolderContents(newArchiveFile, namesToCheck, typesToCheck);
|
||||||
|
|
||||||
|
//Now, create some files inside the folder.
|
||||||
|
String secondLevelChildName = "ccc.exe";
|
||||||
|
IRemoteFile levelTwoChild1 = createFileOrFolder(folder1.getAbsolutePath(), secondLevelChildName, false);
|
||||||
|
assertTrue(levelTwoChild1 != null);
|
||||||
|
|
||||||
|
secondLevelChildName = "ddd.bat";
|
||||||
|
IRemoteFile levelTwoChild2 = createFileOrFolder(folder1.getAbsolutePath(), secondLevelChildName, false);
|
||||||
|
assertTrue(levelTwoChild2 != null);
|
||||||
|
|
||||||
|
secondLevelChildName = "another Folder"; //folder with space
|
||||||
|
IRemoteFile levelTwoChild3 = createFileOrFolder(folder1.getAbsolutePath(), secondLevelChildName, true);
|
||||||
|
assertTrue(levelTwoChild3 != null);
|
||||||
|
|
||||||
|
//Now, check the contents
|
||||||
|
String[] namesToCheck1 = {"ccc.exe", "ddd.bat", "another Folder"};
|
||||||
|
int[] typesToCheck1 = {TYPE_FILE, TYPE_FILE, TYPE_FOLDER};
|
||||||
|
checkFolderContents(folder1, namesToCheck1, typesToCheck1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,120 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2007 IBM Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Xuan Chen (IBM) - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.rse.tests.subsystems.files;
|
||||||
|
|
||||||
|
import org.eclipse.jface.preference.IPreferenceStore;
|
||||||
|
import org.eclipse.rse.core.IRSESystemType;
|
||||||
|
import org.eclipse.rse.core.model.IHost;
|
||||||
|
import org.eclipse.rse.core.model.ISystemRegistry;
|
||||||
|
import org.eclipse.rse.core.model.SystemStartHere;
|
||||||
|
import org.eclipse.rse.core.subsystems.IConnectorService;
|
||||||
|
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||||
|
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
|
||||||
|
import org.eclipse.rse.services.files.IFileService;
|
||||||
|
import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem;
|
||||||
|
import org.eclipse.rse.ui.ISystemPreferencesConstants;
|
||||||
|
import org.eclipse.rse.ui.RSEUIPlugin;
|
||||||
|
|
||||||
|
public class FileServiceArchiveTestDStoreWindows extends FileServiceArchiveTest {
|
||||||
|
|
||||||
|
|
||||||
|
public void setUp() {
|
||||||
|
|
||||||
|
//We need to delay if it is first case run after a workspace startup
|
||||||
|
SYSTEM_TYPE_ID = IRSESystemType.SYSTEMTYPE_WINDOWS_ID;
|
||||||
|
TMP_DIR_PARENT = "D:\\tmp\\junit_test\\";
|
||||||
|
ZIP_SOURCE_DIR = "D:\\tmp\\junit_source\\";
|
||||||
|
SYSTEM_ADDRESS = "LOCALHOST";
|
||||||
|
SYSTEM_NAME = "LOCALHOST_ds";
|
||||||
|
|
||||||
|
|
||||||
|
//We need to delay if it is first case run after a workspace startup
|
||||||
|
if (!classBeenRunBefore)
|
||||||
|
{
|
||||||
|
IPreferenceStore store = RSEUIPlugin.getDefault().getPreferenceStore();
|
||||||
|
|
||||||
|
//We need to setDefault first in order to set the value of a preference.
|
||||||
|
store.setDefault(ISystemPreferencesConstants.ALERT_SSL, ISystemPreferencesConstants.DEFAULT_ALERT_SSL);
|
||||||
|
store.setDefault(ISystemPreferencesConstants.ALERT_NONSSL, ISystemPreferencesConstants.DEFAULT_ALERT_NON_SSL);
|
||||||
|
store.setValue(ISystemPreferencesConstants.ALERT_SSL, false);
|
||||||
|
store.setValue(ISystemPreferencesConstants.ALERT_NONSSL, false);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
System.out.println("need to sleep");
|
||||||
|
Thread.sleep(500);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
classBeenRunBefore = true;
|
||||||
|
}
|
||||||
|
IHost dstoreHost = getRemoteSystemConnection(SYSTEM_TYPE_ID, SYSTEM_ADDRESS, SYSTEM_NAME, "", "");
|
||||||
|
assertTrue(dstoreHost != null);
|
||||||
|
ISystemRegistry sr = SystemStartHere.getSystemRegistry();
|
||||||
|
ISubSystem[] ss = sr.getServiceSubSystems(dstoreHost, IFileService.class);
|
||||||
|
for (int i=0; i<ss.length; i++) {
|
||||||
|
if (ss[i] instanceof IFileServiceSubSystem) {
|
||||||
|
fss = (IFileServiceSubSystem)ss[i];
|
||||||
|
fs = fss.getFileService();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
IConnectorService connectionService = fss.getConnectorService();
|
||||||
|
//If you want to change the daemon to another port, uncomment following statements
|
||||||
|
/*
|
||||||
|
IServerLauncherProperties properties = connectionService.getRemoteServerLauncherProperties();
|
||||||
|
|
||||||
|
if (properties instanceof IRemoteServerLauncher)
|
||||||
|
{
|
||||||
|
IRemoteServerLauncher sl = (IRemoteServerLauncher)properties;
|
||||||
|
sl.setDaemonPort(4075);
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
//If you want to connect to a running server, uncomment the following statements
|
||||||
|
/*
|
||||||
|
IServerLauncherProperties properties = connectionService.getRemoteServerLauncherProperties();
|
||||||
|
|
||||||
|
if (properties instanceof IRemoteServerLauncher)
|
||||||
|
{
|
||||||
|
IRemoteServerLauncher sl = (IRemoteServerLauncher)properties;
|
||||||
|
sl.setServerLaunchType(ServerLaunchType.get(ServerLaunchType.RUNNING));
|
||||||
|
fss.getSubSystemConfiguration().updateSubSystem(fss, false, "xuanchen", true, 4033);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
connectionService.connect(mon);
|
||||||
|
tempDirPath = TMP_DIR_PARENT;
|
||||||
|
long currentTime = System.currentTimeMillis();
|
||||||
|
tempDir = createFileOrFolder(tempDirPath, "rsetest" + currentTime, true);
|
||||||
|
assertTrue(tempDir != null);
|
||||||
|
assertTrue(tempDir.exists());
|
||||||
|
assertTrue(tempDir.canRead());
|
||||||
|
assertTrue(tempDir.canWrite());
|
||||||
|
assertTrue(tempDir.isDirectory());
|
||||||
|
tempDirPath = tempDir.getAbsolutePath();
|
||||||
|
|
||||||
|
} catch(Exception e) {
|
||||||
|
assertTrue("Exception creating temp dir " + e.getStackTrace().toString(), false); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void tearDown() {
|
||||||
|
try {
|
||||||
|
fss.delete(tempDir, mon);
|
||||||
|
} catch(SystemMessageException msg) {
|
||||||
|
assertFalse("Exception: "+msg.getLocalizedMessage(), true); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,206 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2007 IBM Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Xuan Chen (IBM) - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.rse.tests.subsystems.files;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
|
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||||
|
import org.eclipse.rse.services.clientserver.archiveutils.ArchiveHandlerManager;
|
||||||
|
import org.eclipse.rse.services.files.IFileService;
|
||||||
|
import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem;
|
||||||
|
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile;
|
||||||
|
import org.eclipse.rse.subsystems.files.core.subsystems.IVirtualRemoteFile;
|
||||||
|
import org.eclipse.rse.tests.core.connection.RSEBaseConnectionTestCase;
|
||||||
|
|
||||||
|
public class FileServiceBaseTest extends RSEBaseConnectionTestCase {
|
||||||
|
|
||||||
|
protected IFileServiceSubSystem fss;
|
||||||
|
protected IFileService fs;
|
||||||
|
protected IRemoteFile tempDir;
|
||||||
|
protected String tempDirPath;
|
||||||
|
protected IProgressMonitor mon = new NullProgressMonitor();
|
||||||
|
protected static boolean classBeenRunBefore = false;
|
||||||
|
|
||||||
|
public static int TYPE_FILE = 0;
|
||||||
|
public static int TYPE_FOLDER = 1;
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isWindows() {
|
||||||
|
return fss.getHost().getSystemType().isWindows();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTestFileName() {
|
||||||
|
//Return a filename for testing that exposes all characters valid on the file system
|
||||||
|
if (!isWindows()) {
|
||||||
|
//UNIX TODO: test embedded newlines
|
||||||
|
return "a !@#${a}\"\' fi\tle\b\\%^&*()?_ =[]~+-'`;:,.|<>"; //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
//Fallback: Windows TODO: test unicode
|
||||||
|
return "a !@#${a}'` file%^&()_ =[]~+-;,."; //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
|
||||||
|
public IRemoteFile copySourceFileOrFolder(String sourceFullName, String sourceName, String targetFolderFullName)
|
||||||
|
{
|
||||||
|
boolean ok = false;
|
||||||
|
IRemoteFile result = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IRemoteFile originalTargetArchiveFile = fss.getRemoteFileObject(sourceFullName, mon);
|
||||||
|
IRemoteFile targetFolder = fss.getRemoteFileObject(targetFolderFullName, mon);
|
||||||
|
ok = fss.copy(originalTargetArchiveFile, targetFolder, sourceName, mon);
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
//copy is successful
|
||||||
|
result = fss.getRemoteFileObject(getNewAbsoluteName(targetFolder, sourceName), mon);
|
||||||
|
}
|
||||||
|
//Need to call resolveFilterString of the parent to make sure the newly copied child
|
||||||
|
//is added to the DStore map. Otherwise, next time when query it, it will just created a
|
||||||
|
//default filter string. And the dstore server cannot handler it correctly.
|
||||||
|
Object[] children = fss.resolveFilterString(targetFolder, null, mon);
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IRemoteFile createFileOrFolder(String targetFolderName, String fileOrFolderName, boolean isFolder)
|
||||||
|
{
|
||||||
|
IRemoteFile result = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
System.out.println("targetFolderName is " + targetFolderName);
|
||||||
|
if (fss == null)
|
||||||
|
{
|
||||||
|
System.out.println("fss is null ");
|
||||||
|
}
|
||||||
|
IRemoteFile targetFolder = fss.getRemoteFileObject(targetFolderName, mon);
|
||||||
|
//fss.resolveFilterString(targetFolder, null, mon);
|
||||||
|
String fileOrFolderAbsName = getNewAbsoluteName(targetFolder, fileOrFolderName);
|
||||||
|
IRemoteFile newFileOrFolderPath = fss.getRemoteFileObject(fileOrFolderAbsName, mon);
|
||||||
|
if (isFolder)
|
||||||
|
{
|
||||||
|
result = fss.createFolder(newFileOrFolderPath, mon);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = fss.createFile(newFileOrFolderPath, mon);
|
||||||
|
}
|
||||||
|
//Need to call resolveFilterString of the parent to make sure the newly created child
|
||||||
|
//is added to the DStore map. Otherwise, next time when query it, it will just created a
|
||||||
|
//default filter string. And the dstore server cannot handler it correctly.
|
||||||
|
Object[] children = fss.resolveFilterString(targetFolder, null, mon);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getChildFromFolder(IRemoteFile folderToCheck, String childName)
|
||||||
|
{
|
||||||
|
//then check the result of copy
|
||||||
|
Object[] children = null;
|
||||||
|
Object foundChild = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
children = fss.resolveFilterString(folderToCheck, null, mon);
|
||||||
|
for (int i=0; i<children.length; i++)
|
||||||
|
{
|
||||||
|
String thisName = ((IRemoteFile)children[i]).getName();
|
||||||
|
if (thisName.equals(childName))
|
||||||
|
{
|
||||||
|
foundChild = children[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
foundChild = null;
|
||||||
|
}
|
||||||
|
return foundChild;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkFolderContents(IRemoteFile folderToCheck, String[] names, int[] types)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//the folder returned by the create API did not get the right attributes.
|
||||||
|
//We need to call getRemoteFileObject to get its attribute updated.
|
||||||
|
//Otherwise, will get error "directory not readable"
|
||||||
|
folderToCheck = fss.getRemoteFileObject(folderToCheck.getAbsolutePath(), mon);
|
||||||
|
Object[] children = fss.resolveFilterString(folderToCheck, null, mon);
|
||||||
|
//Make sure the children array includes the copied folder.
|
||||||
|
HashMap childrenMap = new HashMap();
|
||||||
|
//Add children name into the map
|
||||||
|
for (int i=0; i<children.length; i++)
|
||||||
|
{
|
||||||
|
String thisName = ((IRemoteFile)children[i]).getName();
|
||||||
|
childrenMap.put(thisName, children[i]);
|
||||||
|
}
|
||||||
|
//Check contents are in the array list
|
||||||
|
for (int i=0; i<names.length; i++)
|
||||||
|
{
|
||||||
|
IRemoteFile found = (IRemoteFile)(childrenMap.get(names[i]));
|
||||||
|
assertTrue(found != null);
|
||||||
|
assertTrue(found.exists());
|
||||||
|
if (types != null && types.length != 0)
|
||||||
|
{
|
||||||
|
//If input array of types, we also need to check if the type is correct.
|
||||||
|
if (types[i] == TYPE_FILE)
|
||||||
|
{
|
||||||
|
assertTrue(found.isFile());
|
||||||
|
}
|
||||||
|
else if (types[i] == TYPE_FOLDER)
|
||||||
|
{
|
||||||
|
assertTrue(found.isDirectory());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("Problem encountered: " + e.getStackTrace().toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static String getNewAbsoluteName(IRemoteFile parentFolder, String newName)
|
||||||
|
{
|
||||||
|
String newAbsName = null;
|
||||||
|
char sep = parentFolder.getSeparatorChar();
|
||||||
|
String parentFolderPath = parentFolder.getAbsolutePath();
|
||||||
|
|
||||||
|
// hack by Mike to allow virtual files and folders.
|
||||||
|
if (parentFolder instanceof IVirtualRemoteFile)
|
||||||
|
{
|
||||||
|
sep = '/';
|
||||||
|
}
|
||||||
|
else if (parentFolder.isArchive())
|
||||||
|
{
|
||||||
|
sep = '/';
|
||||||
|
parentFolderPath = parentFolderPath + ArchiveHandlerManager.VIRTUAL_SEPARATOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
// hack by Phil to fix bug when trying to create file inside root "/"... it
|
||||||
|
// tried to create "//file.ext".
|
||||||
|
if ((parentFolderPath.length()==1) && (parentFolderPath.charAt(0)=='/') &&
|
||||||
|
(parentFolderPath.charAt(0)==sep))
|
||||||
|
newAbsName = sep + newName;
|
||||||
|
else
|
||||||
|
newAbsName = parentFolderPath + sep + newName;
|
||||||
|
return newAbsName;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue