📄 wc.java
字号:
package org.tigris.subversion.javahl.tests;
/**
* @copyright
* ====================================================================
* Copyright (c) 2003-2004 CollabNet. All rights reserved.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://subversion.tigris.org/license-1.html.
* If newer versions of this license are posted there, you may use a
* newer version instead, at your option.
*
* This software consists of voluntary contributions made by many
* individuals. For exact contribution history, see the revision
* history and logs, available at http://subversion.tigris.org/.
* ====================================================================
* @endcopyright
*/
import org.tigris.subversion.javahl.Status;
import org.tigris.subversion.javahl.NodeKind;
import org.tigris.subversion.javahl.DirEntry;
import java.io.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import junit.framework.Assert;
/**
* This class describe the expected state of the working copy
*/
public class WC
{
/**
* the map of the items of the working copy. The relative path is the key
* for the map
*/
Map items = new HashMap();
/**
* Generate from the expected state of the working copy a new working copy
* @param root the working copy directory
* @throws IOException
*/
public void materialize(File root) throws IOException
{
// generate all directories first
Iterator it = items.values().iterator();
while (it.hasNext())
{
Item item = (Item) it.next();
if (item.myContent == null) // is a directory
{
File dir = new File(root, item.myPath);
if (!dir.exists())
dir.mkdirs();
}
}
// generate all files with the content in the second run
it = items.values().iterator();
while (it.hasNext())
{
Item item = (Item) it.next();
if (item.myContent != null) // is a file
{
File file = new File(root, item.myPath);
PrintWriter pw = new PrintWriter(new FileOutputStream(file));
pw.print(item.myContent);
pw.close();
}
}
}
/**
* Add a new item to the working copy
* @param path the path of the item
* @param content the content of the item. A null content signifies a
* directory
* @return the new Item object
*/
public Item addItem(String path, String content)
{
return new Item(path, content);
}
/**
* Returns the item at a path
* @param path the path, where the item is searched
* @return the found item
*/
public Item getItem(String path)
{
return (Item) items.get(path);
}
/**
* Remove the item at a path
* @param path the path, where the item is removed
*/
public void removeItem(String path)
{
items.remove(path);
}
/**
* Set text (content) status of the item at a path
* @param path the path, where the status is set
* @param status the new text status
*/
public void setItemTextStatus(String path, int status)
{
((Item) items.get(path)).textStatus = status;
}
/**
* Set property status of the item at a path
* @param path the path, where the status is set
* @param status the new property status
*/
public void setItemPropStatus(String path, int status)
{
((Item) items.get(path)).propStatus = status;
}
/**
* Set the revision number of the item at a path
* @param path the path, where the revision number is set
* @param revision the new revision number
*/
public void setItemWorkingCopyRevision(String path, long revision)
{
((Item) items.get(path)).workingCopyRev = revision;
}
/**
* Returns the file content of the item at a path
* @param path the path, where the content is retrieved
* @return the content of the file
*/
public String getItemContent(String path)
{
return ((Item) items.get(path)).myContent;
}
/**
* Set the file content of the item at a path
* @param path the path, where the content is set
* @param content the new content
*/
public void setItemContent(String path, String content)
{
// since having no content signals a directory, changes of removing the
// content or setting a former not set content is not allowed. That
// would change the type of the item.
Assert.assertNotNull("cannot unset content", content);
Item i = (Item) items.get(path);
Assert.assertNotNull("cannot set content on directory", i.myContent);
i.myContent = content;
}
/**
* set the flag to check the content of item at a path during next check.
* @param path the path, where the flag is set
* @param check the flag
*/
public void setItemCheckContent(String path, boolean check)
{
Item i = (Item) items.get(path);
i.checkContent = check;
}
/**
* Set the expected node kind at a path
* @param path the path, where the node kind is set
* @param nodeKind the expected node kind
*/
public void setItemNodeKind(String path, int nodeKind)
{
Item i = (Item) items.get(path);
i.nodeKind = nodeKind;
}
/**
* Set the expected lock state at a path
* @param path the path, where the lock state is set
* @param isLocked the flag
*/
public void setItemIsLocked(String path, boolean isLocked)
{
Item i = (Item) items.get(path);
i.isLocked = isLocked;
}
/**
* Set the expected switched flag at a path
* @param path the path, where the switch flag is set
* @param isSwitched the flag
*/
public void setItemIsSwitched(String path, boolean isSwitched)
{
Item i = (Item) items.get(path);
i.isSwitched = isSwitched;
}
/**
* Copy an expected working copy state
* @return the copy of the exiting object
*/
public WC copy()
{
WC c = new WC();
Iterator it = items.values().iterator();
while (it.hasNext())
{
((Item) it.next()).copy(c);
}
return c;
}
/**
* Check the result of a single file SVNClient.list call
* @param tested the result array
* @param singleFilePath the path to be checked
* @throws Exception
*/
void check(DirEntry[] tested, String singleFilePath) throws Exception
{
Assert.assertEquals("not a single dir entry", 1, tested.length);
Item item = (Item)items.get(singleFilePath);
Assert.assertNotNull("not found in working copy", item);
Assert.assertNotNull("not a file", item.myContent);
Assert.assertEquals("state says file, working copy not",
tested[0].getNodeKind(),
item.nodeKind == -1 ? NodeKind.file : item.nodeKind);
}
/**
* Check the result of a directory SVNClient.list call
* @param tested the result array
* @param basePath the path of the directory
* @param recursive the recursive flag of the call
* @throws Exception
*/
void check(DirEntry[] tested, String basePath, boolean recursive)
throws Exception
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -