package org.jmeld.vc.svn;
import org.jmeld.vc.*;
import org.jmeld.util.*;
import java.io.*;
public class StatusCmd extends SvnXmlCmd<StatusData> {
private File file;
private boolean recursive;
public StatusCmd(File file, boolean recursive)
{
super(StatusData.class);
this.file = file;
this.recursive = recursive;
}
public Result execute()
{
super.execute("svn", "status", "--non-interactive", "-v", "--xml",
recursive ? "" : "-N", file.getPath());
return getResult();
}
public StatusResult getStatusResult()
{
StatusData sd;
StatusResult result;
StatusResult.Status status;
sd = getResultData();
result = new StatusResult(file);
if (sd != null)
{
for (StatusData.Target t : sd.getTargetList())
{
for (StatusData.Entry te : t.getEntryList())
{
status = null;
switch (te.getWcStatus().getItem())
{
case added:
status = StatusResult.Status.added;
break;
case conflicted:
status = StatusResult.Status.conflicted;
break;
case deleted:
status = StatusResult.Status.removed;
break;
case ignored:
status = StatusResult.Status.ignored;
break;
case modified:
status = StatusResult.Status.modified;
break;
case replaced:
status = StatusResult.Status.modified;
break;
case external:
status = StatusResult.Status.dontknow;
break;
case unversioned:
status = StatusResult.Status.unversioned;
break;
case incomplete:
status = StatusResult.Status.missing;
break;
case obstructed:
status = StatusResult.Status.dontknow;
break;
case normal:
status = StatusResult.Status.clean;
break;
case none:
status = StatusResult.Status.clean;
break;
case missing:
status = StatusResult.Status.missing;
break;
}
result.addEntry(te.getPath(), status);
}
}
}
return result;
}
public static void main(String[] args)
{
StatusCmd cmd;
StatusResult result;
File file = parseFile(args);
if (file == null) {
return;
}
result = new SubversionVersionControl().executeStatus(file);
if (result != null)
{
for (StatusResult.Entry entry : result.getEntryList())
{
System.out.println(entry.getStatus().getShortText() + " "
+ entry.getName());
}
}
}
}