/**
* Class for customer repro.
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.Date;
import java.util.List;
import com.perforce.p4java.client.IClient;
import com.perforce.p4java.core.ChangelistStatus;
import com.perforce.p4java.core.IChangelist;
import com.perforce.p4java.core.file.FileSpecBuilder;
import com.perforce.p4java.core.file.FileSpecOpStatus;
import com.perforce.p4java.core.file.IFileSpec;
import com.perforce.p4java.exception.P4JavaException;
import com.perforce.p4java.exception.RequestException;
import com.perforce.p4java.impl.generic.core.Changelist;
import com.perforce.p4java.impl.mapbased.server.Server;
import com.perforce.p4java.option.client.AddFilesOptions;
import com.perforce.p4java.server.IOptionsServer;
import com.perforce.p4java.core.file.IntegrationOptions;
import com.perforce.p4java.option.client.IntegrateFilesOptions;
import com.perforce.p4java.impl.generic.core.file.FileSpec;
import com.perforce.p4java.option.client.EditFilesOptions;
import com.perforce.p4java.option.client.ResolveFilesAutoOptions;
import com.perforce.p4java.server.ServerFactory;
import com.perforce.p4java.server.IServerInfo;
import java.io.FileWriter;
import java.io.PrintWriter;
public class ResolveTest extends P4JavaDemo
{
//Variables we might/will need for resolving.
private static String sourceFile = "//depot/fortest/javatest.txt";
private static String targetFile = "//depot/test.txt";
public static void main(String[] args)
{
try
{
//Create a Server object
// IOptionsServer server = getOptionsServer(null, null);
IOptionsServer server = ServerFactory.getOptionsServer("p4java://localhost:1666", null);
server.setUserName(userName);
// server.setUserName("jen");
server.connect();
// server.login(password);
//Get p4 info
IServerInfo info = server.getServerInfo();
System.out.println(info);
//Create a client object
IClient client = server.getClient("winjen");
if (client != null)
{
server.setCurrentClient(client);
//Create a changelist object
Changelist changeListImpl = new Changelist(
IChangelist.UNKNOWN, client.getName(),
userName,
ChangelistStatus.NEW,
new Date(),
"Changelist demo new changelist",
false,
(Server) server
);
//Create the changelist (by running the client.createChangelist method) add a file, then edit it and again.
IChangelist changelist = client.createChangelist(changeListImpl);
//Add the file
//First create the physical file on disk and add some content
String path = client.getRoot() + File.separator + "fortest" + File.separator + "javatest.txt";
FileWriter writer = new FileWriter( path);
PrintWriter printLine = new PrintWriter(writer);
printLine.printf( "%s" + "%n" , "Testing...");
printLine.close();
AddFilesOptions editFilesOptions = new AddFilesOptions().setChangelistId(changelist.getId());
List<IFileSpec> editList = client.addFiles(
FileSpecBuilder.makeFileSpecList(client.getRoot() + "\\fortest\\javatest.txt"), editFilesOptions);
if (editList != null)
{
//Itterate over the list
for (IFileSpec fileSpec : editList)
{
if (fileSpec != null)
{
if (fileSpec.getOpStatus() == FileSpecOpStatus.VALID)
{
System.out.println("edited: " + ListFilesDemo.formatFileSpec(fileSpec));
}
else
{
System.err.println(fileSpec.getStatusMessage());
}
}
}
}
changelist.update();
//Submit the changelist
List<IFileSpec> submitFiles = changelist.submit(false);
if (submitFiles != null)
{
for (IFileSpec fileSpec : submitFiles)
{
if (fileSpec != null)
{
if (fileSpec.getOpStatus() == FileSpecOpStatus.VALID)
{
System.out.println("submitted: " + ListFilesDemo.formatFileSpec(fileSpec));
}
else if (fileSpec.getOpStatus() == FileSpecOpStatus.INFO)
{
System.out.println(fileSpec.getStatusMessage());
}
else if (fileSpec.getOpStatus() == FileSpecOpStatus.ERROR)
{
System.err.println(fileSpec.getStatusMessage());
}
}
}
}
//Create a changelist, that will be used to submit the integration
Changelist changeListImpl2 = new Changelist(
IChangelist.UNKNOWN,
client.getName(),
userName,
ChangelistStatus.NEW,
new Date(),
"Changelist demo new changelist",
false,
(Server) server
);
IChangelist changelist2 = client.createChangelist(changeListImpl2);
//Create the IntegrationOptions object
//IntegrationOptions integOptions = new IntegrationOptions();
IntegrateFilesOptions integOpts = new IntegrateFilesOptions() ;
//Do the equivolant of a 'p4 integrate //depot/<Source> //depot<Target>
//Create fileSpec objects to hold the lists of source and target files
IFileSpec sourceSpec = new FileSpec(sourceFile);
IFileSpec targetSpec = new FileSpec(targetFile);
integOpts.setChangelistId(changelist2.getId());
//Put the result of 'client.integrateFiles' into a fileSpec
List<IFileSpec> integedFiles = client.integrateFiles(sourceSpec, targetSpec, null, integOpts);
//Submit the integration
changelist2.update();
//Submit the change
List<IFileSpec> submitFiles2 = changelist2.submit(false);
if (submitFiles2 != null)
{
for (IFileSpec fileSpec2 : integedFiles)
{
if (fileSpec2 != null)
{
if (fileSpec2.getOpStatus() == FileSpecOpStatus.VALID)
{
System.out.println("submitted: " + ListFilesDemo.formatFileSpec(fileSpec2));
}
else if (fileSpec2.getOpStatus() == FileSpecOpStatus.INFO)
{
System.out.println(fileSpec2.getStatusMessage());
}
else if (fileSpec2.getOpStatus() == FileSpecOpStatus.ERROR)
{
System.err.println(fileSpec2.getStatusMessage());
}
}
}
}
}
//Edit our original file again, before testing the resolve.
//First we need a new changelist object, so we can do the submit
Changelist changeListImpl3 = new Changelist(
IChangelist.UNKNOWN,
client.getName(),
userName,
//server.getUserName(),
ChangelistStatus.NEW,
new Date(),
"Changelist demo new changelist",
false,
(Server) server
);
IChangelist changelist3 = client.createChangelist(changeListImpl3);
//Append some content to the file
String path = client.getRoot() + File.separator + "fortest" + File.separator + "javatest.txt";
FileWriter writer2 = new FileWriter( path);
PrintWriter printLine2 = new PrintWriter(writer2);
printLine2.printf( "%s" + "%n" , "This is another test...");
printLine2.close();
//Create the editFilesOptions object
EditFilesOptions editFilesOptions = new EditFilesOptions().setChangelistId(changelist3.getId());
List<IFileSpec> editList2 = client.editFiles(
FileSpecBuilder.makeFileSpecList(client.getRoot() + "\\fortest\\javatest.txt"), editFilesOptions);
//Would like to add some actual content here, but may come back to this.
changelist3.update();
//Submit the change
List<IFileSpec> submitFiles3 = changelist3.submit(false);
if (submitFiles3 != null)
{
for (IFileSpec fileSpec3 : editList2)
if (fileSpec3 != null)
{
if (fileSpec3.getOpStatus() == FileSpecOpStatus.VALID)
{
System.out.println("submitted: " + ListFilesDemo.formatFileSpec(fileSpec3));
}
else if (fileSpec3.getOpStatus() == FileSpecOpStatus.INFO)
{
System.out.println(fileSpec3.getStatusMessage());
}
else if (fileSpec3.getOpStatus() == FileSpecOpStatus.ERROR)
{
System.err.println(fileSpec3.getStatusMessage());
}
}
}
//Create a changelist, to submit the second integrate
Changelist changeListImpl4 = new Changelist(
IChangelist.UNKNOWN,
client.getName(),
userName,
ChangelistStatus.NEW,
new Date(),
"Changelist demo new changelist",
false,
(Server) server
);
IChangelist changelist4 = client.createChangelist(changeListImpl4);
//integrate
IntegrateFilesOptions integOpts2 = new IntegrateFilesOptions() ;
//Do the equivolant of a 'p4 integrate //depot/<Source> //depot<Target>
//Create fileSpec objects to hold the lists of source and target files
String sourceFile2 = "//depot/fortest/javatest.txt";
String targetFile2 = "//depot/test.txt";
IFileSpec sourceSpec2 = new FileSpec(sourceFile2);
IFileSpec targetSpec2 = new FileSpec(targetFile2);
integOpts2.setChangelistId(changelist4.getId());
//Put the result of 'client.integrateFiles' into a fileSpec
List<IFileSpec> integedFiles2 = client.integrateFiles(sourceSpec2, targetSpec2, null, integOpts2);
//resolve -am
ResolveFilesAutoOptions resolveFilesAutoOptions = new ResolveFilesAutoOptions("-am");
List<IFileSpec> resolvedFiles = client.resolveFilesAuto(FileSpecBuilder.makeFileSpecList("//..."), resolveFilesAutoOptions);
resolveFilesAutoOptions.toString();
//Submit the integration
//changelist4.update();
//Submit the changelist
//List<IFileSpec> submitFiles4 = changelist4.submit(false);
//if (submitFiles4 != null)
//{
// for (IFileSpec fileSpec4 : integedFiles2)//
// {
// if (fileSpec4 != null)
// {
// if (fileSpec4.getOpStatus() == FileSpecOpStatus.VALID)
// {
// System.out.println("submitted: " + ListFilesDemo.formatFileSpec(fileSpec4));
// }
// else if (fileSpec4.getOpStatus() == FileSpecOpStatus.INFO)
// {
// System.out.println(fileSpec4.getStatusMessage());
// }
// else if (fileSpec4.getOpStatus() == FileSpecOpStatus.ERROR)
// {
// System.err.println(fileSpec4.getStatusMessage());
// }
// }
// }
//}
server.disconnect();
//end try
}
catch (RequestException rexc) {
System.err.println(rexc.getDisplayString());
rexc.printStackTrace();
} catch (P4JavaException jexc) {
System.err.println(jexc.getLocalizedMessage());
jexc.printStackTrace();
} catch (Exception exc) {
System.err.println(exc.getLocalizedMessage());
exc.printStackTrace();
}
}
//end class
}